消息#

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

消息类型#

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

代理-代理消息#

AgentChat支持多种消息类型用于代理之间的通信。它们属于联合类型ChatMessage。这种消息类型允许文本和多模态通信,并包含其他消息类型,例如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()方法。消息也用于代理的响应中。我们将在AgentsTeams中更详细地解释这些内容。

内部事件#

AgentChat 还支持 events 的概念 —— 这些消息属于一个 agent 的内部消息。这些消息用于在 agent 自身内部传递事件和动作信息,并属于联合类型 AgentEvent

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

通常,事件由代理自身创建,并包含在从on_messages返回的Responseinner_messages字段中。如果您正在构建自定义代理,并且有一些事件希望与其他实体(例如UI)进行通信,您可以将这些事件包含在Responseinner_messages字段中。我们将在自定义代理中展示相关示例。

你可以在messages模块中阅读AgentChat支持的所有消息类型。