消息#

在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(包含工具调用的执行结果)。

通常,事件由代理自身创建,并包含在 on_messages 返回的 Responseinner_messages 字段中。如果您正在构建自定义代理,并需要向其他实体(例如用户界面)传递事件,可以将这些事件包含在 Responseinner_messages 字段中。我们将在自定义代理中展示相关示例。

您可以在 messages 模块中查阅 AgentChat 支持的全部消息类型。

自定义消息类型#

您可以通过继承基类 BaseChatMessageBaseAgentEvent 来创建自定义消息类型。这允许您根据应用程序需求定义自己的消息格式和行为。在编写自定义代理时,自定义消息类型非常有用。