消息#
在 AutoGen AgentChat 中,消息 促进与其他代理、协调器和应用程序的通信和信息交换。 AgentChat 支持各种消息类型,每种消息类型都为特定目的而设计。
消息类型#
从高层次上讲,AgentChat 中的消息可以分为两种类型:代理-代理消息和代理的内部事件和消息。
代理-代理消息#
AgentChat 支持多种用于代理间通信的消息类型。 它们属于基类 BaseChatMessage
的子类。 具体的子类涵盖基本的文本和多模态通信,例如 TextMessage
和 MultiModalMessage
。
例如,以下代码片段演示了如何创建文本消息,该消息接受字符串内容和字符串源
from autogen_agentchat.messages import TextMessage
text_message = TextMessage(content="Hello, world!", source="User")
同样,以下代码片段演示了如何创建多模态消息,该消息接受字符串或 Image
对象的列表
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
我们创建的 TextMessage
和 MultiModalMessage
可以通过 on_messages
方法直接传递给代理,或者作为任务交给团队的 run()
方法。 消息也用于代理的响应中。 我们将在代理和团队中更详细地解释这些内容。
内部事件#
AgentChat 还支持 events
的概念 - 这些消息是代理内部的消息。 这些消息用于传达代理内部操作的事件和信息,并且属于基类 BaseAgentEvent
的子类。
这些示例包括 ToolCallRequestEvent
,它指示已发出调用工具的请求,以及 ToolCallExecutionEvent
,它包含工具调用的结果。
通常,事件由代理本身创建,并且包含在 inner_messages
字段中,该字段是来自 on_messages
返回的 Response
。 如果您正在构建自定义代理并且有想要传达给其他实体(例如,UI)的事件,则可以将这些事件包含在 inner_messages
字段中,该字段是 Response
。 我们将在 自定义代理 中展示这方面的示例。
您可以在 messages
模块中阅读有关 AgentChat 中支持的完整消息集的更多信息。
自定义消息类型#
您可以通过对基类 BaseChatMessage
或 BaseAgentEvent
进行子类化来创建自定义消息类型。 这使您可以定义自己的消息格式和行为,并根据您的应用程序进行定制。 当您编写自定义代理时,自定义消息类型很有用。