在AutoGen的AgentChat世界里,消息就像是代理们的“社交货币”,让它们能够愉快地交流、传递信息,甚至和应用程序“打情骂俏”。今天,我们就来扒一扒这些消息的“底细”,看看它们是如何在代理之间“飞来飞去”的。
代理间的“悄悄话”:Agent-Agent Messages
首先,AgentChat支持多种消息类型,专门为代理之间的沟通量身定制。这些消息都属于ChatMessage
类型,既能传递文字,还能玩转多模态(比如图片+文字)。你可以把它想象成代理们的“微信聊天”,只不过它们聊的内容可能是“Hello, world!”或者“这张图片里有什么?”。
举个例子,如果你想发一条纯文字消息,代码可以这么写:
python
复制
from autogen_agentchat.messages import TextMessage
text_message = TextMessage(content="Hello, world!", source="User")
简单吧?就像发条短信一样轻松。
如果你想玩点高级的,发个带图片的消息,代码也不复杂:
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")
瞧,代理们不仅能聊文字,还能“看图说话”!
代理的“内心戏”:Internal Events
除了代理之间的“公开聊天”,AgentChat还支持代理内部的“私密消息”,也就是所谓的“事件”。这些事件就像是代理的“内心戏”,用来记录它们内部的行动和状态。比如,ToolCallRequestEvent
表示代理请求调用某个工具,而ToolCallExecutionEvent
则记录了工具调用的结果。
这些事件通常由代理自己生成,藏在Response
的inner_messages
字段里。如果你在打造一个自定义代理,并且想让其他实体(比如UI)知道这些“小秘密”,可以把它们塞进inner_messages
里。
总结:消息是代理的“社交神器”
无论是代理之间的“公开聊天”,还是代理内部的“私密消息”,消息在AgentChat中都扮演着至关重要的角色。它们让代理们能够高效沟通、协同工作,甚至还能“自娱自乐”。如果你想深入了解这些消息的更多细节,不妨去messages
模块里一探究竟!
所以,下次当你看到代理们在“聊天”时,别忘了它们背后可是有一套复杂的“社交规则”在支撑着呢!