消息#

在 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 还支持“事件”的概念——智能体内部的消息。这些消息用于在智能体内部传达事件和操作信息,它们属于基类 BaseAgentEvent 的子类。

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

通常,事件由智能体本身创建,并包含在 Responseinner_messages 字段中,该 Response 是从 on_messages 返回的。如果您正在构建自定义智能体并希望将事件传达给其他实体(例如,UI),您可以将这些事件包含在 Responseinner_messages 字段中。我们将在 自定义智能体 中展示这方面的示例。

您可以在 messages 模块中阅读有关 AgentChat 支持的全部消息集。

自定义消息类型#

您可以通过继承基类 BaseChatMessageBaseAgentEvent 来创建自定义消息类型。这允许您定义自己的消息格式和行为,以适应您的应用程序。当您编写自定义智能体时,自定义消息类型非常有用。