这篇文章瞄准的是 AutoGen 官方教程中的 Messages
小节内容,介绍了这个库中的一个数据类型 Messages 的定义与使用:
- 官方链接:https://microsoft.github.io/autogen/stable/user-guide/agentchat-user-guide/tutorial/messages.html# ;
Types of Messages
根据官网上的描述,AutoGen 库提供了Message类,其作用是实现 消息传递,在设计上考虑了两种消息传递的需求:Agent-Agent之间传递、内部事件传递。这个作用有点像他们定义了一个通讯协议或者说是对内容进行了结构化,所有该库内的信息都需要遵守这个通讯协议,这样做的最大好处在于可以规避文本解析出错风险。
Agent-Agent Messages
官网在这一小节给出了两个实例来教你如何定义messages,这些信息都可以直接通过 on_messages()
或者 run()
传递给模型。
- 纯文本信息 TextMessage:
from autogen_agentchat.messages import TextMessage
text_message = TextMessage(content="Hello, world!", source="User")
print(text_message.content)
运行结果如下:
$ python demo.py
Hello, world!
- 图像数据 MultiModalMessage :
from io import BytesIO
import requests
from autogen_agentchat.messages import MultiModalMessage
from autogen_core import Image as AGImage
from PIL import Image
import cv2
import numpy as np
# 拉取一张图片
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
# 此处额外增加了一部分显示图像的功能
opencv_image = np.array(pil_image)
opencv_image = cv2.cvtColor(opencv_image, cv2.COLOR_RGB2BGR)
cv2.imshow("Image", opencv_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果如下:
$ python demo.py
【Note】:上面的代码中使用了https://picsum.photos/300/200
这个链接,你可以直接登录他们的网页 https://picsum.photos
查看更多使用示例,这个网页提供了随机生成固定size照片的功能,是一个很有意思的网站。
Internal Events
作为一个现代 AI Agent 库,AutoGen 同样支持多个 Agent 协同工作,而 Messsage 本身也可以用于在多个Agent中进行内部传递。
官网教程在此处没有进行进一步举例,为了保证主干笔记与官网的一致性,我这里也不添加额外内容,后续会在该系列笔记的番外篇介绍如何花样使用 Messages 信息。