aea.agent

This module contains the implementation of a generic agent.

Agent Objects

class Agent(AbstractAgent,  WithLogger)

This class provides an abstract base class for a generic agent.

__init__

 | __init__(identity: Identity, connections: List[Connection], loop: Optional[AbstractEventLoop] = None, period: float = 1.0, loop_mode: Optional[str] = None, runtime_mode: Optional[str] = None, logger: Logger = _default_logger) -> None

Instantiate the agent.

Arguments:

  • identity: the identity of the agent.
  • connections: the list of connections of the agent.
  • loop: the event loop to run the connections.
  • period: period to call agent's act
  • loop_mode: loop_mode to choose agent run loop.
  • runtime_mode: runtime mode to up agent.

Returns:

None

connections

 | @property
 | connections() -> List[Connection]

Return list of connections.

active_connections

 | @property
 | active_connections() -> List[Connection]

Return list of active connections.

is_running

 | @property
 | is_running() -> bool

Get running state of the runtime and agent.

is_stopped

 | @property
 | is_stopped() -> bool

Get running state of the runtime and agent.

get_multiplexer_setup_options

 | get_multiplexer_setup_options() -> Optional[Dict]

Get options to pass to Multiplexer.setup.

Returns:

dict of kwargs

identity

 | @property
 | identity() -> Identity

Get the identity.

inbox

 | @property
 | inbox() -> InBox

Get the inbox.

The inbox contains Envelopes from the Multiplexer. The agent can pick these messages for processing.

outbox

 | @property
 | outbox() -> OutBox

Get the outbox.

The outbox contains Envelopes for the Multiplexer. Envelopes placed in the Outbox are processed by the Multiplexer.

name

 | @property
 | name() -> str

Get the agent name.

tick

 | @property
 | tick() -> int

Get the tick or agent loop count.

Each agent loop (one call to each one of act(), react(), update()) increments the tick.

handle_envelope

 | handle_envelope(envelope: Envelope) -> None

Handle an envelope.

Arguments:

  • envelope: the envelope to handle.

Returns:

None

period

 | @property
 | period() -> float

Get a period to call act.

runtime

 | @property
 | runtime() -> BaseRuntime

Get the runtime.

start

 | start() -> None

Start the agent.

Performs the following:

  • calls connect() on the multiplexer (unless in debug mode), and
  • calls setup(), and
  • calls start() on the liveness, and
  • enters the agent main loop.

While the liveness of the agent is not stopped it continues to loop over:

  • increment the tick,
  • call to act(),
  • sleep for specified timeout,
  • call to react(),
  • call to update().

Returns:

None

stop

 | stop() -> None

Stop the agent.

Performs the following:

  • calls stop() on the liveness, and
  • calls teardown(), and
  • calls disconnect() on the multiplexer.

Returns:

None

state

 | @property
 | state() -> RuntimeStates

Get state of the agent's runtime.

Returns:

RuntimeStates

get_periodic_tasks

 | 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

 | 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

 | exception_handler(exception: Exception, function: Callable) -> bool

Handle exception raised during agent main loop execution.

Arguments:

  • exception: exception raised
  • function: a callable exception raised in.

Returns:

bool, propagate exception if True otherwise skip it.