{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Messages" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In AutoGen AgentChat, _messages_ facilitate communication and information exchange with other agents, orchestrators, and applications. AgentChat supports various message types, each designed for specific purposes." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Types of Messages\n", "\n", "At a high level, messages in AgentChat can be categorized into two types: agent-agent messages and an agent's internal events and messages.\n", "\n", "### Agent-Agent Messages\n", "AgentChat supports many message types for agent-to-agent communication. The most common one is the {py:class}`~autogen_agentchat.messages.ChatMessage`. This message type allows both text and multimodal communication and subsumes other message types, such as {py:class}`~autogen_agentchat.messages.TextMessage` or {py:class}`~autogen_agentchat.messages.MultiModalMessage`.\n", "\n", "For example, the following code snippet demonstrates how to create a text message, which accepts a string content and a string source:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from autogen_agentchat.messages import TextMessage\n", "\n", "text_message = TextMessage(content=\"Hello, world!\", source=\"User\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Similarly, the following code snippet demonstrates how to create a multimodal message, which accepts\n", "a list of strings or {py:class}`~autogen_core.Image` objects:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from io import BytesIO\n", "\n", "import requests\n", "from autogen_agentchat.messages import MultiModalMessage\n", "from autogen_core import Image as AGImage\n", "from PIL import Image\n", "\n", "pil_image = Image.open(BytesIO(requests.get(\"https://picsum.photos/300/200\").content))\n", "img = AGImage(pil_image)\n", "multi_modal_message = MultiModalMessage(content=[\"Can you describe the content of this image?\", img], source=\"User\")\n", "img" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The {py:class}`~autogen_agentchat.messages.TextMessage` and {py:class}`~autogen_agentchat.messages.MultiModalMessage` we have created can be passed to agents directly via the {py:class}`~autogen_agentchat.base.ChatAgent.on_messages` method, or as tasks given to a team {py:meth}`~autogen_agentchat.teams.BaseGroupChat.run` method. Messages are also used in the responses of an agent. We will explain these in more detail in [Agents](./agents.ipynb) and [Teams](./teams.ipynb)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Internal Events and Messages\n", "\n", "AgentChat also supports the concept of `inner_messages` - messages that are internal to an agent. These messages are used to communicate events and information on actions _within_ the agent itself.\n", "\n", "Examples of these include {py:class}`~autogen_agentchat.messages.ToolCallMessage`, which indicates that a request was made to call a tool, and {py:class}`~autogen_agentchat.messages.ToolCallResultMessage`, which contains the results of tool calls.\n", "\n", "Typically, these messages are created by the agent itself and are contained in the {py:attr}`~autogen_agentchat.base.Response.inner_messages` field of the {py:class}`~autogen_agentchat.base.Response` returned from {py:class}`~autogen_agentchat.base.ChatAgent.on_messages`. If you are building a custom agent and have events that you want to communicate to other entities (e.g., a UI), you can inlcude these in the {py:attr}`~autogen_agentchat.base.Response.inner_messages` field of the {py:class}`~autogen_agentchat.base.Response`. We will show examples of this in [Custom Agents](./custom-agents.ipynb).\n", "\n", "\n", "You can read about the full set of messages supported in AgentChat in the {py:mod}`~autogen_agentchat.messages` module. \n", "" ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.6" } }, "nbformat": 4, "nbformat_minor": 2 }