链载Ai

标题: 【阿里AgentScope框架】详解AgentScope中的消息管理和分发模块(上) [打印本页]

作者: 链载Ai    时间: 11 小时前
标题: 【阿里AgentScope框架】详解AgentScope中的消息管理和分发模块(上)
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;border-left: none;padding: 1em;border-radius: 8px;color: rgba(0, 0, 0, 0.5);background: rgb(247, 247, 247);margin: 0px 8px 2em;">对于多智能体框架来说,其中最重要的组件之一就是消息模块,这是多智能体间交互的通道。像LangGraph的State,MetaGPT的Environment、Message等,都是实现多智能体间消息传递的重要组件。本文我们来学习一下AgentScope框架中的消息模块。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.2em;font-weight: bold;display: table;margin: 2em auto 1em;padding-right: 1em;padding-left: 1em;border-bottom: 2px solid rgb(15, 76, 129);color: rgb(63, 63, 63);">0. 消息基类MessageBase

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">消息基类的初始化函数如下:

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;overflow-x: auto;border-radius: 8px;padding: 1em;margin: 10px 8px;">classMessageBase(dict):
def__init__(
self,
name:str,
content:Any,
roleiteral["user","system","assistant"]="assistant",
url:Optional[Union[Sequence[str],str]]=None,
timestamp:Optional[str]=None,
**kwargs:Any,
)->None:
......

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">其中几个主要参数:

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.2em;font-weight: bold;display: table;margin: 2em auto 1em;padding-right: 1em;padding-left: 1em;border-bottom: 2px solid rgb(15, 76, 129);color: rgb(63, 63, 63);">1. 消息类Msg

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">前面我们也都用过了Msg这个类,这是多智能体实现中必不可少的一部分。但之前都没有仔细地看过其实现,下面来看下。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">消息类继承自MessageBase,并实现了to_strserialize抽象方法。 在一个Agent类中,其reply函数通常会返回一个Msg类的实例,以便在AgentScope中进行消息的传递(这一点我们之前的文章中多次提到过了,例如这篇文章,下图)。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;color: rgb(63, 63, 63);">

Msg源码如下:

classMsg(MessageBase):
def__init__(
self,
name:str,
content:Any,
roleiteral["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=roleor"assistant",
url=url,
timestamp=timestamp,
metadata=metadata,
**kwargs,
)
ifecho:
logger.chat(self)

defto_str(self)->str:
"""Returnthestringrepresentationofthemessage"""
returnf"{self.name}:{self.content}"

defserialize(self)->str:
returnjson.dumps({"__type":"Msg",**self})

2. 其它消息

AgentScope中除了封装了Msg这个最通用的消息类之外,还封装了一些其它的消息类型,如ThtPlaceholderMessage等。

Tht代表的是该Agent的思考过程。结构类似如下:

{
"role":"assistant",
"name":"thought",
"content":"Ishould..."
},

Agent 思考的过程应该只存在于该Agent内部,不传递给其它Agent。

在实际使用过程中,可能需要类似这样的特殊定制化消息类型,可以仿照这种消息进行定义,继承MessageBase基类,实现相关函数即可。

2. 总结

本文比较简单,主要带大家看了下AgentScope中消息模块的实现。最重要的三个参数:name、content、url。这个模块提供的是消息的管理能力。






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5