MetaGPT:面向多Agent协作框架的元编程研究
MetaGPT:面向多Agent协作框架的元编程研究
MetaGPT是一个用于基于LLM-based multi-agent系统的元编程框架。该框架通过模拟人类标准化操作流程(SOPs)的多agent协作框架去解决AI自动化编程问题,有效地解决了基于聊天的多agent系统面临的级联幻觉问题。同时提出了基于结构化信息的跨agent通信协议,要求不同的agent按照其特定角色和背景提供必要的结构化输出。
为什么要读这篇论文?
- MetaGPT首先提出了模拟人类标准化操作流程(SOPs)的多agent协作框架,解决AI自动化编程问题,有效地解决了基于聊天的多agent系统面临的级联幻觉问题。
- 提出了基于结构化信息的跨agent通信协议,要求不同的agent按照其特定角色和背景提供必要的结构化输出。
1. 背景
论文发表时间:2024/11/01
原文下载地址:https://arxiv.org/pdf/2308.00352v7
对应代码库地址:https://github.com/geekan/MetaGPT/tree/main
- 当前针对Automatic Programming的研究,已经能够解决简单的编码问题。但是,对于复杂的软件工程编程问题,还没有很好的解决方案。
- 针对LLM-Based Multi-Agent Frameworks的研究,通过整合多个agent之间的讨论提升了LLM的问题解决能力,但是面临着“重复性指令”和“信息无限循环”的挑战。
- 一些研究,已经尝试模拟开放世界的人类行为。
2. 论文主要创新点
2.1 模拟软件开发SOP的多agent协作框架
MetaGPT是一个用于基于LLM-based multi-agent系统的元编程框架。关于agent,框架中定义了两个核心的概念:
Specialization of Roles:agent角色专业化,明确的角色专业化可以将复杂的工作作分解为更小、更具体的任务,然后由具有不同技术和专业知识的agent去解决具体的特定问题。MetaGPT中定义了5个agent角色:Product Manager(产品经理)、Architect(架构师)、Project Manager(项目经理)、Engineer(工程师)和 QA Engineer(质量保证工程师)。每个agent都会监控环境(即 MetaGPT 中的消息池)以发现重要的观察结果(例如,来自其他代理的消息)。这些消息可以直接触发某个操作或协助完成任务。
Workflow across Agents:通过定义agent的角色和操作技能,建立起基本的工作流程。在开发的过程中遵循SOP,这使得所有agent都能线性、有序的(in a sequential manner)工作。整个流程描述如下:
在获得用户需求后,产品经理进行全面分析,制定详细的 PRD,其中包括 User Stories 和 Requirement Pool。这用作初步的功能分解。
然后,结构化的 PRD 被传递给架构师,架构师将需求转换为系统设计组件,例如文件列表、数据结构和接口定义。
一旦在系统设计中捕获,信息就会被直接发送给项目经理进行任务分配。
工程师开发指定的类和函数。
QA 工程师制定测试用例以强制实施严格的代码质量。
在最后一步,MetaGPT 生成了一个精心设计的软件解决方案
2.2 一种高效的跨agent通信协议
该通信协议主要包含两部分:
Structured Communication Interfaces:针对基于自然语言的跨agent沟通可能出现的信息失真问题,建议使用结构化通信来构建代理的通信。文中为每个角色建立架构和格式,并要求个人根据其特定角色和背景提供必要的输出。例如,架构师代理生成两个输出:系统接口设计和序列流程图
Publish-Subscribe Mechanism:采用“全局消息池”的方式,提升多个agent之间进行信息共享的效率。为了防止与每个agent共享所有信息可能带来的信息过载,文中设计了一种solution-subscription mechanism(解决方案订阅机制),每个agent依赖于其对应角色配置的兴趣设定选择要关注的信息。在实际实现中,agent只要在满足所有的前置依赖项后,它的功能才会被激活。
ITERATIVE PROGRAMMING WITH EXECUTABLE FEEDBACK:为了确保代码可执行性和运行时的正确性,本文引入了一种可执行反馈机制来迭代改进代码。
3. 评估
评估数据集:
- HumanEval数据集:164个Python编程任务。
- MBPP数据集:427个Python编程任务。
- 本文作者构建的SoftwareDev数据集:70 个具有代表性的软件开发任务示例的集合。
评估指标:
针对HumanEval和MBPP数据集,使用Pass@k指标,其中k表示尝试次数。
针对SoftwareDev数据集,从实际使用体验的角度出发,通过人工评估指标Executability和Human Revision Cost,以及统计分析指标Cost、Code Statistics和Productivity进行评测:
Executability(可执行性):该指标将代码从 1(失败 / 非功能)到 4(完美无缺)进行评分。‘1’ 表示非功能性,‘2’ 表示可运行但不完美,‘3’ 表示近乎完美,‘4’ 表示完美无瑕的代码。
Cost(成本):此处的成本评估包括运行时间、token使用数量和费用,
Code Statistics(代码统计):代码文件数量、每个代码文件平均代码行数、代码总行数
Productivity(生产力):token使用量/代码总行数,即每行代码消耗的token数量
Human Revision Cost(人工修订成本):指手动代码更正的时间,用于解决包导入错误、类名不正确或引用路径不完整等问题。通常,每次更正最多涉及3行代码。
评估结果:
- MetaGPT 在 HumanEval 和 MBPP 基准测试中都优于上述所有方法。当MetaGPT与GPT-4合作时,在HumanEval和MBPP数据集上的Pass@k指标达到了85.9%和87.7%。
- 在SoftwareDev数据集的评测中,MetaGPT几乎在所有指标上由于ChatDev