消息#
在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
(包含工具调用的执行结果)。
通常,事件由代理自身创建,并包含在 on_messages
返回的 Response
的 inner_messages
字段中。如果您正在构建自定义代理,并需要向其他实体(例如用户界面)传递事件,可以将这些事件包含在 Response
的 inner_messages
字段中。我们将在自定义代理中展示相关示例。
您可以在 messages
模块中查阅 AgentChat 支持的全部消息类型。
自定义消息类型#
您可以通过继承基类 BaseChatMessage
或 BaseAgentEvent
来创建自定义消息类型。这允许您根据应用程序需求定义自己的消息格式和行为。在编写自定义代理时,自定义消息类型非常有用。