aea.aea
This module contains the implementation of an autonomous economic agent (AEA).
AEA Objects
class AEA(Agent)
This class implements an autonomous economic agent.
__
init__
def __init__(
identity: Identity,
wallet: Wallet,
resources: Resources,
data_dir: str,
loop: Optional[AbstractEventLoop] = None,
period: float = 0.05,
execution_timeout: float = 0,
max_reactions: int = 20,
error_handler_class: Optional[Type[AbstractErrorHandler]] = None,
error_handler_config: Optional[Dict[str, Any]] = None,
decision_maker_handler_class: Optional[
Type[DecisionMakerHandler]] = None,
decision_maker_handler_config: Optional[Dict[str, Any]] = None,
skill_exception_policy: ExceptionPolicyEnum = ExceptionPolicyEnum.
propagate,
connection_exception_policy: ExceptionPolicyEnum = ExceptionPolicyEnum.
propagate,
loop_mode: Optional[str] = None,
runtime_mode: Optional[str] = None,
default_ledger: Optional[str] = None,
currency_denominations: Optional[Dict[str, str]] = None,
default_connection: Optional[PublicId] = None,
default_routing: Optional[Dict[PublicId, PublicId]] = None,
connection_ids: Optional[Collection[PublicId]] = None,
search_service_address: str = DEFAULT_SEARCH_SERVICE_ADDRESS,
storage_uri: Optional[str] = None,
task_manager_mode: Optional[str] = None,
**kwargs: Any) -> None
Instantiate the agent.
Arguments:
identity
: the identity of the agentwallet
: the wallet of the agent.resources
: the resources (protocols and skills) of the agent.data_dir
: directory where to put local files.loop
: the event loop to run the connections.period
: period to call agent's actexecution_timeout
: amount of time to limit single act/handle to execute.max_reactions
: the processing rate of envelopes per tick (i.e. single loop).error_handler_class
: the class implementing the error handlererror_handler_config
: the configuration of the error handlerdecision_maker_handler_class
: the class implementing the decision maker handler to be used.decision_maker_handler_config
: the configuration of the decision maker handlerskill_exception_policy
: the skill exception policy enumconnection_exception_policy
: the connection exception policy enumloop_mode
: loop_mode to choose agent run loop.runtime_mode
: runtime mode (async, threaded) to run AEA in.default_ledger
: default ledger idcurrency_denominations
: mapping from ledger id to currency denominationdefault_connection
: public id to the default connectiondefault_routing
: dictionary for default routing.connection_ids
: active connection ids. Default: consider all the ones in the resources.search_service_address
: the address of the search service used.storage_uri
: optional uri to set generic storagetask_manager_mode
: task manager mode (threaded) to run tasks with.kwargs
: keyword arguments to be attached in the agent context namespace.
get_
build_
dir
@classmethod
def get_build_dir(cls) -> str
Get agent build directory.
context
@property
def context() -> AgentContext
Get (agent) context.
resources
@property
def resources() -> Resources
Get resources.
resources
@resources.setter
def resources(resources: "Resources") -> None
Set resources.
filter
@property
def filter() -> Filter
Get the filter.
active_
behaviours
@property
def active_behaviours() -> List[Behaviour]
Get all active behaviours to use in act.
setup
def setup() -> None
Set up the agent.
Calls setup() on the resources.
act
def act() -> None
Perform actions.
Adds new handlers and behaviours for use/execution by the runtime.
handle_
envelope
def handle_envelope(envelope: Envelope) -> None
Handle an envelope.
Performs the following:
- fetching the protocol referenced by the envelope, and
- handling if the protocol is unsupported, using the error handler, or
- handling if there is a decoding error, using the error handler, or
- handling if no active handler is available for the specified protocol, using the error handler, or
- handling the message recovered from the envelope with all active handlers for the specified protocol.
Arguments:
envelope
: the envelope to handle.
Returns:
None
get_
periodic_
tasks
def get_periodic_tasks(
) -> Dict[Callable, Tuple[float, Optional[datetime.datetime]]]
Get all periodic tasks for agent.
Returns:
dict of callable with period specified
get_
message_
handlers
def get_message_handlers() -> List[Tuple[Callable[[Any], None], Callable]]
Get handlers with message getters.
Returns:
List of tuples of callables: handler and coroutine to get a message
exception_
handler
def exception_handler(exception: Exception, function: Callable) -> bool
Handle exception raised during agent main loop execution.
Arguments:
exception
: exception raisedfunction
: a callable exception raised in.
Returns:
bool, propagate exception if True otherwise skip it.
teardown
def teardown() -> None
Tear down the agent.
Performs the following:
- tears down the resources.
get_
task_
result
def get_task_result(task_id: int) -> AsyncResult
Get the result from a task.
Arguments:
task_id
: the id of the task
Returns:
async result for task_id
enqueue_
task
def enqueue_task(func: Callable,
args: Sequence = (),
kwargs: Optional[Dict[str, Any]] = None) -> int
Enqueue a task with the task manager.
Arguments:
func
: the callable instance to be enqueuedargs
: the positional arguments to be passed to the function.kwargs
: the keyword arguments to be passed to the function.
Returns:
the task id to get the the result.