Messages#
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.
Types of Messages#
At a high level, messages in AgentChat can be categorized into two types: agent-agent messages and an agent’s internal events and messages.
Agent-Agent Messages#
AgentChat supports many message types for agent-to-agent communication. The most common one is the ChatMessage
. This message type allows both text and multimodal communication and subsumes other message types, such as TextMessage
or MultiModalMessage
.
For example, the following code snippet demonstrates how to create a text message, which accepts a string content and a string source:
from autogen_agentchat.messages import TextMessage
text_message = TextMessage(content="Hello, world!", source="User")
Similarly, the following code snippet demonstrates how to create a multimodal message, which accepts
a list of strings or Image
objects:
from io import BytesIO
import requests
from autogen_agentchat.messages import MultiModalMessage
from autogen_core import Image as AGImage
from PIL import Image
pil_image = Image.open(BytesIO(requests.get("https://picsum.photos/300/200").content))
img = AGImage(pil_image)
multi_modal_message = MultiModalMessage(content=["Can you describe the content of this image?", img], source="User")
img
The TextMessage
and MultiModalMessage
we have created can be passed to agents directly via the on_messages
method, or as tasks given to a team run()
method. Messages are also used in the responses of an agent. We will explain these in more detail in Agents and Teams.
Internal Events and Messages#
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.
Examples of these include ToolCallMessage
, which indicates that a request was made to call a tool, and ToolCallResultMessage
, which contains the results of tool calls.
Typically, these messages are created by the agent itself and are contained in the inner_messages
field of the Response
returned from 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 inner_messages
field of the Response
. We will show examples of this in Custom Agents.
You can read about the full set of messages supported in AgentChat in the messages
module.