MessageBaseingFang 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,
role
iteral["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);">其中几个主要参数:•name:消息的发送者(产生者)
•content:消息的文本内容
•url:可以指向文件的直接链接、多模态数据或网页,例如我们在这篇文章中详细讨论的多模态消息:x = Msg(name="user", content="图片里有什么?", role="user", url=["xxx/微信图片_20240405184354.jpg"])
MsgingFang 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_str和serialize抽象方法。 在一个Agent类中,其reply函数通常会返回一个Msg类的实例,以便在AgentScope中进行消息的传递(这一点我们之前的文章中多次提到过了,例如这篇文章,下图)。Msg源码如下:
classMsg(MessageBase):
def__init__(
self,
name:str,
content:Any,
role
iteral["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})AgentScope中除了封装了Msg这个最通用的消息类之外,还封装了一些其它的消息类型,如Tht、PlaceholderMessage等。
Tht代表的是该Agent的思考过程。结构类似如下:
{
"role":"assistant",
"name":"thought",
"content":"Ishould..."
},Agent 思考的过程应该只存在于该Agent内部,不传递给其它Agent。
在实际使用过程中,可能需要类似这样的特殊定制化消息类型,可以仿照这种消息进行定义,继承MessageBase基类,实现相关函数即可。
本文比较简单,主要带大家看了下AgentScope中消息模块的实现。最重要的三个参数:name、content、url。这个模块提供的是消息的管理能力。
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |