概述
CodeFuse-muAgent [1]是蚂蚁CodeFuse团队开发的Mulit Agent框架,其核心宗旨在于简化agents的标准操作程序(SOP)编排流程。
多Agents的核心关键即Agent的交互链路,也即实现SOP的关键。其核心在于如何把上一个Agent的输出给到下一个Agent的输入,其中需要涉及到llm的输出、具体action的执行以及信息的解析处理。
架构
muagent整合了一系列丰富的工具库、代码库、知识库以及沙盒环境,可支撑用户在任何领域场景都能依托muagent迅速搭建起复杂的多Agent交互应用。通过这一框架,用户能够高效地执行和处理多层次、多维度的复杂任务。
其架构图如下:
每个技术点的描述如下:
-
Agent Base:构建了四种基本的Agent类型BaseAgent、ReactAgent、ExecutorAgent、SelectorAgent,支撑各种场景的基础活动。
-
Communication:通过Message和Parse Message 实体完成Agent间的信息传递,并与Memory Manager交互再Memory Pool完成记忆管理。
-
Prompt Manager:通过Role Handler、Doc/Tool Handler、Session Handler、Customized Handler,来自动化组装Customized 的Agent Prompt。
-
Memory Manager: 用于支撑 chat history 的存储管理、信息压缩、记忆检索等管理,最后通过Memory Pool在数据库、本地、向量数据库中完成存储。
-
Component:用于构建Agent的辅助生态组件,包括Retrieval、Tool、Action、Sandbox等。
-
Customized Model:支持私有化的LLM和Embedding的接入。
一个完整的多Agent生态,个人觉得,其所需的能力也就是如上的几点。
Agent Base
在Agent层面,提供四种基本的Agent类型,对这些Agent进行Role的基础设定,可满足多种通用场景的交互和使用。所有的Action都由Agent执行。
-
BaseAgent:基础功打得溜,问答、工具使用、代码执行样样行。
-
ReactAgent:标准React流,遇事不慌,标准反应流程轻松应对。
-
ExecutorAgent:对任务清单进行顺序执行,根据 User 或 上一个Agent编排的计划,完成相关任务,排个队,挨个干!
-
SelectorAgent:挑三拣四,根据User 或 上一个 Agent的问题选择合适的Agent,总能找到最合适的Agent回答用户需求。
Component
辅助生态组件更详尽,区别于AutoGen,Sandbox支持隔离的特性让辅助生态的支持更丰富强大。
Communication
多Agent的关键在Agent间的信息交互,因此communication的实现是必不可少的。AutoGen通过结转逻辑,支持信息流转;CodeFuse通过Communication组件独立实现该功能。从实现方式来看,CodeFuse应该支持的更强大。AutoGen是一个summary_method
方法来定义的。
总结
之前没有了解过国内多Agent框架,因为本身也不多;从AutoGen入手对多Agent的了解,再结合CodeFuse的实现来看,多Agent的SOP更具体更模块化,不过其思想也是一致的,关键的组成部件还是那些。
总的来说,如何协调好LLM并来引导它们产生期望的输出,其本质就是将业务问题抽象并拆解到可执行的Prompt,让他们像处理业务问题一样精准执行;而业务的编排执行则由Agent实现,最终是落到了LLM上。
参考资料
[1]