[ICLR 2024]METAGPT: META PROGRAMMING FOR AMULTI-AGENT COLLABORATIVE FRAMEWORK
问题
- 由于LLMs的简单串联,容易导致级联幻觉(Cascading Hallucinations),使得解决方案复杂化 。
- 效率低下: 缺乏有效的、连贯的、准确的问题解决流程,特别是在需要有意义的协作交互时表现不佳
贡献
- 我们介绍了 MetaGPT,这是一个基于 LLMs 的多智能体协作元编程框架。它非常方便且灵活,具有角色定义和消息共享等明确定义的函数,使其成为开发基于 LLMs 的多智能体系统的有用平台。
- 我们在 MetaGPT 的设计中创新性地整合了类似人类的标准操作程序(SOPs),显著增强了其鲁棒性,减少了基于 LLMs 的智能体之间的无效协作。此外,我们引入了一种新颖的执行反馈机制,在运行时调试和执行代码,显著提高了代码生成质量(例如,在 MBPP 上绝对提升了 5.4%)。
- 我们在 HumanEval(Chen 等人,2021a)和 MBPP(Austin 等人,2021)上取得了最先进的性能。广泛的结果有力地验证了 MetaGPT,表明它是一个有前景的元编程框架,用于开发基于 LLMs 的多智能体系统。
workflow

- 角色专业化和 SOP 工作流程:框架为每个智能体分配了具有人类专业领域知识的明确角色,并遵循严格的 SOP 工作流程
- communication protocol
- MetaGPT放弃了使用非约束性的自然语言对话进行通信,智能体之间通过产生结构化的输出(如 PRD、系统设计文档、流程图等)进行信息传递
- 共享消息池,智能体将结构化消息发布到池中,而其他智能体则可以根据自己的角色获取所需信息,避免信息过载

- 可执行反馈的迭代编程:为了解决代码生成中的错误和“幻觉”问题,MetaGPT 引入了可执行反馈机制
- 自修正:工程师智能体在生成初始代码后,会运行并检查错误
- 调试迭代:如果发生错误,工程师会利用其历史执行和调试记忆,编写并执行单元测试用例,并根据结果进行调试和代码改进,直到测试通过(或达到最大重试次数)
实验评估
humanEval, MBPP, SoftwareDev
[ACL 2024]ChatDev: Communicative Agents for Software Development
- Chat Chain(对话链):一种链式结构化工作流,将软件开发过程分解为多个顺序阶段(Phase),每个阶段进一步划分为更小的子任务(Subtask),引导智能体通过多轮对话协作完成每个子任务。
Problem
- 软件开发过程的碎片化,技术不一致,效率较低
- 代码幻觉,生成不完整,不可知性或不准确的源代码
Contributions
- 提出了ChatDev框架:将多个LLM驱动的智能体整合到一个统一的对话驱动框架中,通过聊天链将每个阶段进一步细分为更小的子任务
- 引入了通信去幻觉机制,交流模式指导代理如何进行交流,实现精确的信息交换,从而有效优化解决方案,同时减少编码幻觉
- 创建了SRDD数据集:开发了包含1,200个软件任务提示的软件需求描述数据集
Methodology

Specifically, ChatDev segments the software
development process into three sequential phases:
design, coding, and testing. The coding phase is
further subdivided into subtasks of code writing
and completion, and the testing phase is segmented
into code review (static testing) and system testing
(dynamic testing), as illustrated in Figure 2.
每个子任务中都有一个Instructor和一个助手智能体Assistant,Instructor发起指令,Assistant遵循指令并响应解决方案,多轮对话达成合作(同时解决代码幻觉)
ExpEval
- 评估数据集:使用自建的SRDD(软件需求描述数据集),包含1,200个软件任务提示,覆盖5大领域40个子类别。
- 核心评估指标:
- 完整性(Completeness):衡量软件完成代码的程度,无”占位符”代码片段的百分比
- 可执行性(Executability):软件在编译环境中成功运行的概率
- 一致性(Consistency):生成代码与原始需求描述之间的语义对齐程度
- 质量(Quality):综合指标,为前三项指标的乘积
- 主要实验结果:ChatDev在完整性(0.5600)、可执行性(0.8800)和一致性(0.8021)上均显著优于基线方法,质量得分达到0.3953。与 MetaGPT 相比,ChatDev 将质量从 0.1523 显著提升至 0.3953
Limitations
- agents often implement simple
logic, resulting in low information density. With-
out clear, detailed requirements, agents struggle to
grasp task ideas. - 自动化评估
- 计算量大
Towards Realistic Project-Level Code Generation via Multi-Agent Collaboration and Semantic Architecture Modeling
Problems
大多数现有研究和工具集中于函数级或文件级代码生成,面对需要连贯架构设计、跨模块依赖推理的复杂、大规模代码生成任务以及长程上下文理解时,它们的性能仍然有限
- 现有数据集和评估指标缺乏真实性和可靠性:当前的项目级代码生成数据集都是小型项目,不够真实。评估多依赖统计或相似性度量,无法准确评估代码的实际质量。
- 需求文档与可执行代码之间存在语义鸿沟:实践中用于描述需求的文档(如PRD)是为人类理解而写的,可能包含图表、表格或非正式描述,大语言模型难以有效解析,导致生成性能受限。需要一种中间表示(既让ai看懂,又能让人看懂)
- 处理层次化上下文依赖和长距离上下文管理的困难:软件仓库具有多层次结构。早期阶段的错误会传播。同时,大语言模型的上下文长度有限,项目级代码很庞大
Contributions
- 识别并系统阐述了项目级代码生成中的关键挑战
- 构建了CodeProjectEval数据集,贴近真实软件开发的数据集,平均每个任务包含12.7个文件和2388.6行代码
- 提出了ProjectGEN框架,一个多智能体框架,架构设计 -> 骨架生成 -> 代码填充,引入了语义软件架构树(SSAT)
- 实验评估ProjectGEN在大小规模的数据集实现了最先进的性能
workflow

如图是SSAT 的结构,该结构包含五种类型的节点:ModuleNode、FileNode、GlobalCodeNode、ClassNode 和 FunctionNode。每种节点包含两个通用属性:name 和 description
这个很自然的描述出来项目的整体结构,并且几乎不会有长度限制✅

有
archAgent和judgeAgent很像ChatDev
- 架构设计
- ArchAgent 根据输入的产品需求文档(PRD)、UML图和架构设计文档,生成一个SSAT。JudgeA 则从需求覆盖度、与提供信息的一致性、接口一致性和依赖关系四个方面对生成的SSAT进行评估。迭代。
- 骨架生成
- SkeletonAgent 根据上一步得到的SSAT,为每个源文件生成代码骨架(包含import语句、类声明、函数签名以及用
pass填充的函数体)。JudgeS 首先尝试编译该骨架,如果失败则返回错误信息。编译成功后,JudgeS 会从目录结构匹配度和接口与调用关系匹配度两方面进行LLM评估。迭代。
- SkeletonAgent 根据上一步得到的SSAT,为每个源文件生成代码骨架(包含import语句、类声明、函数签名以及用
- 代码填充
- CodeAgent 将骨架中的
pass语句替换为具体的代码实现。JudgeC 的核心评估手段是运行预先定义的检查测试。如果测试失败,JudgeC会分析错误日志,指出需要修改的文件和建议的修正措施。迭代修正。
- CodeAgent 将骨架中的
ExpEval
在DevBench上,ProjectGEN使用DeepSeek-V3模型通过了52个测试,显著优于基线方法CodeS(25个)和MetaGPT(33个)。在更具挑战性的CodeProjectEval上,ProjectGEN(使用GPT-4o)通过了310个测试,而CodeS和MetaGPT分别仅通过5个和28个,显示出近十倍的巨大优势。这表明ProjectGEN在处理大规模、复杂项目时具有更强的鲁棒性。
- 消融、
- ProjectGEN w/o iter:移除了评判智能体和迭代优化机制,但保留SSAT。
- CodeS:一个基线方法,它使用自然语言而非SSAT作为中间表示进行三层草图生成。
实验结果表明,SSAT(对比CodeS)和迭代优化机制(对比ProjectGEN w/o iter)都对最终性能有重要贡献