大家好,我是 同学小张,+v: jasper_8017 一起交流,持续学习C++进阶、OpenGL、WebGL知识技能和AI大模型应用实战案例,持续分享,欢迎大家点赞+关注,共同学习和进步。
对于多智能体框架来说,其中最重要的组件之一就是消息模块,这是多智能体间交互的通道。像LangGraph的State,MetaGPT的Environment、Message等,都是实现多智能体间消息传递的重要组件。本文我们来学习一下AgentScope框架中的消息模块。
文章目录
- 0. 消息基类 `MessageBase`
- 1. 消息类 `Msg`
- 2. 其它消息
- 2. 总结
- 3. 参考
0. 消息基类 MessageBase
消息基类的初始化函数如下:
class MessageBase(dict):
def __init__(
self,
name: str,
content: Any,
role: Literal["user", "system", "assistant"] = "assistant",
url: Optional[Union[Sequence[str], str]] = None,
timestamp: Optional[str] = None,
**kwargs: Any,
) -> None:
......
其中几个主要参数:
- name:消息的发送者(产生者)
- content:消息的文本内容
- url:可以指向文件的直接链接、多模态数据或网页,例如我们在这篇文章中详细讨论的多模态消息:
x = Msg(name="user", content="图片里有什么?", role="user", url=["xxx/微信图片_20240405184354.jpg"])
1. 消息类 Msg
前面我们也都用过了Msg这个类,这是多智能体实现中必不可少的一部分。但之前都没有仔细地看过其实现,下面来看下。
消息类继承自 MessageBase
,并实现了 to_str
和 serialize
抽象方法。 在一个Agent类中,其reply函数通常会返回一个Msg类的实例,以便在AgentScope中进行消息的传递(这一点我们之前的文章中多次提到过了,例如这篇文章,下图)。
Msg源码如下:
class Msg(MessageBase):
def __init__(
self,
name: str,
content: Any,
role: Literal["system", "user", "assistant"] = None,
url: Optional[Union[Sequence[str], str]] = None,
timestamp: Optional[str] = None,
echo: bool = False,
metadata: Optional[Union[dict, str]] = None,
**kwargs: Any,
) -> None:
super().__init__(
name=name,
content=content,
role=role or "assistant",
url=url,
timestamp=timestamp,
metadata=metadata,
**kwargs,
)
if echo:
logger.chat(self)
def to_str(self) -> str:
"""Return the string representation of the message"""
return f"{self.name}: {self.content}"
def serialize(self) -> str:
return json.dumps({"__type": "Msg", **self})
2. 其它消息
AgentScope中除了封装了Msg这个最通用的消息类之外,还封装了一些其它的消息类型,如 Tht
、PlaceholderMessage
等。
Tht
代表的是该Agent的思考过程。结构类似如下:
{
"role": "assistant",
"name": "thought",
"content": "I should ..."
},
Agent 思考的过程应该只存在于该Agent内部,不传递给其它Agent。
在实际使用过程中,可能需要类似这样的特殊定制化消息类型,可以仿照这种消息进行定义,继承MessageBase基类,实现相关函数即可。
2. 总结
本文比较简单,主要带大家看了下AgentScope中消息模块的实现。最重要的三个参数:name、content、url。这个模块提供的是消息的管理能力。
下篇文章,我们继续学习消息模块,学习 AgentScope 中消息的分发能力,欢迎大家关注。
3. 参考
- https://modelscope.github.io/agentscope/zh_CN/tutorial/205-memory.html
如果觉得本文对你有帮助,麻烦点个赞和关注呗 ~~~
- 大家好,我是 同学小张,持续学习C++进阶、OpenGL、WebGL知识技能和AI大模型应用实战案例
- 欢迎 点赞 + 关注 👏,持续学习,持续干货输出。
- +v: jasper_8017 一起交流💬,一起进步💪。
- 微信公众号搜【同学小张】 🙏
本站文章一览: