消息#

在 AutoGen AgentChat 中,消息 促进与其他代理、协调器和应用程序的通信和信息交换。 AgentChat 支持各种消息类型,每种消息类型都为特定目的而设计。

消息类型#

从高层次上讲,AgentChat 中的消息可以分为两种类型:代理-代理消息和代理的内部事件和消息。

代理-代理消息#

AgentChat 支持多种用于代理间通信的消息类型。 它们属于基类 BaseChatMessage 的子类。 具体的子类涵盖基本的文本和多模态通信,例如 TextMessageMultiModalMessage

例如,以下代码片段演示了如何创建文本消息,该消息接受字符串内容和字符串源

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

我们创建的 TextMessageMultiModalMessage 可以通过 on_messages 方法直接传递给代理,或者作为任务交给团队的 run() 方法。 消息也用于代理的响应中。 我们将在代理团队中更详细地解释这些内容。

内部事件#

AgentChat 还支持 events 的概念 - 这些消息是代理内部的消息。 这些消息用于传达代理内部操作的事件和信息,并且属于基类 BaseAgentEvent 的子类。

这些示例包括 ToolCallRequestEvent,它指示已发出调用工具的请求,以及 ToolCallExecutionEvent,它包含工具调用的结果。

通常,事件由代理本身创建,并且包含在 inner_messages 字段中,该字段是来自 on_messages 返回的 Response。 如果您正在构建自定义代理并且有想要传达给其他实体(例如,UI)的事件,则可以将这些事件包含在 inner_messages 字段中,该字段是 Response。 我们将在 自定义代理 中展示这方面的示例。

您可以在 messages 模块中阅读有关 AgentChat 中支持的完整消息集的更多信息。

自定义消息类型#

您可以通过对基类 BaseChatMessageBaseAgentEvent 进行子类化来创建自定义消息类型。 这使您可以定义自己的消息格式和行为,并根据您的应用程序进行定制。 当您编写自定义代理时,自定义消息类型很有用。