AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


【阿里AgentScope框架】详解AgentScope中的消息管理和分发模块(上)
发布日期:2024-07-20 07:58:34 浏览次数: 1728


对于多智能体框架来说,其中最重要的组件之一就是消息模块,这是多智能体间交互的通道。像LangGraph的State,MetaGPT的Environment、Message等,都是实现多智能体间消息传递的重要组件。本文我们来学习一下AgentScope框架中的消息模块。

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)

defto_str(self)->str:
"""Return the string representation of the message"""
returnf"{self.name}{self.content}"

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

2. 其它消息

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

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

{
    "role": "assistant",
    "name": "thought",
    "content": "I should ..."
},

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

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

2. 总结

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


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询