消息#
在AutoGen的AgentChat中,消息促进了与其他代理、协调器和应用程序之间的沟通和信息交换。AgentChat支持多种消息类型,每种类型都设计用于特定目的。
消息类型#
在高层次上,AgentChat中的消息可以分为两种类型:代理-代理消息和代理的内部事件和消息。
代理-代理消息#
AgentChat支持多种消息类型用于代理之间的通信。它们属于联合类型ChatMessage
。这种消息类型允许文本和多模态通信,并包含其他消息类型,例如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()
方法。消息也用于代理的响应中。我们将在Agents和Teams中更详细地解释这些内容。
内部事件#
AgentChat 还支持 events
的概念 —— 这些消息属于一个 agent 的内部消息。这些消息用于在 agent 自身内部传递事件和动作信息,并属于联合类型 AgentEvent
。
这些示例包括ToolCallRequestEvent
,它表示对调用工具的请求,以及ToolCallExecutionEvent
,它包含工具调用的结果。
通常,事件由代理自身创建,并包含在从on_messages
返回的Response
的inner_messages
字段中。如果您正在构建自定义代理,并且有一些事件希望与其他实体(例如UI)进行通信,您可以将这些事件包含在Response
的inner_messages
字段中。我们将在自定义代理中展示相关示例。
你可以在messages
模块中阅读AgentChat支持的所有消息类型。