mirror of
https://github.com/microsoft/autogen.git
synced 2025-12-16 09:39:04 +00:00
Update agent and agent runtime doc with routed agent (#4935)
* add back removed note Signed-off-by: Mohammad Mazraeh <mazraeh.mohammad@gmail.com> * fix formatting issues Signed-off-by: Mohammad Mazraeh <mazraeh.mohammad@gmail.com> --------- Signed-off-by: Mohammad Mazraeh <mazraeh.mohammad@gmail.com>
This commit is contained in:
parent
d610d481cd
commit
ad123641da
@ -28,8 +28,8 @@
|
|||||||
"An agent in AutoGen is an entity defined by the base class {py:class}`autogen_core.Agent`.\n",
|
"An agent in AutoGen is an entity defined by the base class {py:class}`autogen_core.Agent`.\n",
|
||||||
"It has a unique identifier of the type {py:class}`autogen_core.AgentId`,\n",
|
"It has a unique identifier of the type {py:class}`autogen_core.AgentId`,\n",
|
||||||
"a metadata dictionary of the type {py:class}`autogen_core.AgentMetadata`,\n",
|
"a metadata dictionary of the type {py:class}`autogen_core.AgentMetadata`,\n",
|
||||||
"and method for handling messages {py:meth}`autogen_core.BaseAgent.on_message_impl`.\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
|
"and method for handling messages {py:meth}`autogen_core.BaseAgent.on_message_impl`. In most cases, you can subclass your agents from higher level class {py:class}`autogen_core.RoutedAgent` which enables you to route messages to corresponding message handler specified with {py:meth}`autogen_core.message_handler` decorator and proper type hint for the `message` variable.\n",
|
||||||
"An agent runtime is the execution environment for agents in AutoGen.\n",
|
"An agent runtime is the execution environment for agents in AutoGen.\n",
|
||||||
"Similar to the runtime environment of a programming language,\n",
|
"Similar to the runtime environment of a programming language,\n",
|
||||||
"an agent runtime provides the necessary infrastructure to facilitate communication\n",
|
"an agent runtime provides the necessary infrastructure to facilitate communication\n",
|
||||||
@ -50,21 +50,21 @@
|
|||||||
"source": [
|
"source": [
|
||||||
"## Implementing an Agent\n",
|
"## Implementing an Agent\n",
|
||||||
"\n",
|
"\n",
|
||||||
"To implement an agent, the developer must subclass the {py:class}`~autogen_core.BaseAgent` class\n",
|
"To implement an agent, the developer must subclass the {py:class}`~autogen_core.RoutedAgent` class\n",
|
||||||
"and implement the {py:meth}`~autogen_core.BaseAgent.on_message_impl` method.\n",
|
"and implement the {py:meth}`~autogen_core.RoutedAgent.on_message_impl` method.\n",
|
||||||
"This method is invoked when the agent receives a message. For example,\n",
|
"This method is invoked when the agent receives a message. For example,\n",
|
||||||
"the following agent handles a simple message type and prints the message it receives:"
|
"the following agent handles a simple message type `MyMessageType` and prints the message it receives:"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": null,
|
"execution_count": 1,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"from dataclasses import dataclass\n",
|
"from dataclasses import dataclass\n",
|
||||||
"\n",
|
"\n",
|
||||||
"from autogen_core import AgentId, BaseAgent, MessageContext\n",
|
"from autogen_core import AgentId, MessageContext, RoutedAgent, message_handler\n",
|
||||||
"\n",
|
"\n",
|
||||||
"\n",
|
"\n",
|
||||||
"@dataclass\n",
|
"@dataclass\n",
|
||||||
@ -72,11 +72,12 @@
|
|||||||
" content: str\n",
|
" content: str\n",
|
||||||
"\n",
|
"\n",
|
||||||
"\n",
|
"\n",
|
||||||
"class MyAgent(BaseAgent):\n",
|
"class MyAgent(RoutedAgent):\n",
|
||||||
" def __init__(self) -> None:\n",
|
" def __init__(self) -> None:\n",
|
||||||
" super().__init__(\"MyAgent\")\n",
|
" super().__init__(\"MyAgent\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
" async def on_message_impl(self, message: MyMessageType, ctx: MessageContext) -> None:\n",
|
" @message_handler\n",
|
||||||
|
" async def handle_my_message_type(self, message: MyMessageType, ctx: MessageContext) -> None:\n",
|
||||||
" print(f\"Received message: {message.content}\") # type: ignore"
|
" print(f\"Received message: {message.content}\") # type: ignore"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -84,9 +85,7 @@
|
|||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"This agent only handles `MyMessageType` messages. \n",
|
"This agent only handles `MyMessageType` and messages will be delivered to `handle_my_message_type` method. Developers can have multiple message handlers for different message types by using `@message_handler` decorator and setting the type hint for the `message` variable in the handler function. You can also leverage [python typing union](https://docs.python.org/3/library/typing.html#typing.Union) for the `message` variable in one message handler function if it better suits agent's logic.\n",
|
||||||
"To handle multiple message types, developers can subclass the {py:class}`~autogen_core.RoutedAgent` class\n",
|
|
||||||
"which provides an easy-to use API to implement different message handlers for different message types.\n",
|
|
||||||
"See the next section on [message and communication](./message-and-communication.ipynb)."
|
"See the next section on [message and communication](./message-and-communication.ipynb)."
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -126,7 +125,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": null,
|
"execution_count": 2,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@ -203,7 +202,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 4,
|
"execution_count": 6,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
@ -228,7 +227,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 5,
|
"execution_count": 7,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
@ -246,7 +245,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 6,
|
"execution_count": null,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
@ -277,7 +276,7 @@
|
|||||||
"name": "python",
|
"name": "python",
|
||||||
"nbconvert_exporter": "python",
|
"nbconvert_exporter": "python",
|
||||||
"pygments_lexer": "ipython3",
|
"pygments_lexer": "ipython3",
|
||||||
"version": "3.12.6"
|
"version": "3.11.11"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nbformat": 4,
|
"nbformat": 4,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user