【AI Agent系列】【阿里AgentScope框架】详解AgentScope中的消息管理和分发模块(上)

大家好,我是 同学小张,+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_strserialize 抽象方法。 在一个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这个最通用的消息类之外,还封装了一些其它的消息类型,如 ThtPlaceholderMessage 等。

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 一起交流💬,一起进步💪。
  • 微信公众号搜同学小张 🙏

本站文章一览:

在这里插入图片描述

  • 29
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

同学小张

如果觉得有帮助,欢迎给我鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值