现有的LLM驱动的多智能体系统(Park et al., 2023; Zhuge et al., 2023; Cai et al., 2023; Wang et al., 2023c; Li et al., 2023; Du et al., 2023; Liang et al., 2023; Hao et al., 2023)往往过于简化了现实世界的复杂性,难以实现有效、连贯和准确的问题解决过程,特别是在需要有意义的协作交互时(Zhang et al., 2023; Dong et al., 2023; Zhou et al., 2023; Qian et al., 2023)。
MetaGPT借鉴了这种思路,设计了一个基于GPT的元编程框架,该框架从SOPs中受益匪浅。与其他工作(Li et al., 2023; Qian et al., 2023)不同,MetaGPT要求智能体生成结构化的输出,例如高质量的需求文档、设计工件、流程图和界面规范。使用中间结构化输出显著提高了目标代码生成的成功率。更形象地说,在MetaGPT模拟的公司中,所有员工都遵循严格而简化的工作流程,所有交接都必须符合既定的标准。这降低了LLMs之间闲聊导致的幻觉风险,特别是在角色扮演框架中,例如:“你好,你好,你吃午饭了吗?”——爱丽丝(产品经理);“很好!你吃午饭了吗?”——鲍勃(架构师)。
在软件公司中,产品经理通常进行面向业务的分析并得出见解,而软件工程师则负责编程。MetaGPT在软件公司中定义了五个角色:产品经理、架构师、项目经理、工程师和QA工程师,如图1所示。在MetaGPT中,我们指定了智能体的配置文件,其中包括每个角色的名称、配置文件、目标和约束。我们还为每个角色初始化了特定的上下文和技能。例如,产品经理可以使用网络搜索工具,而工程师可以执行代码,如图2所示。所有智能体都遵循Yao et al. (2022)中描述的React风格行为。
如图3所示,架构师智能体生成两个输出:系统界面设计和序列流程图。这些包含系统模块设计和交互序列,作为工程师的重要交付成果。与ChatDev(Zhao et al., 2023)不同,MetaGPT中的智能体通过文档和图表(结构化输出)而不是对话进行通信。这些文档包含所有必要的信息,防止出现无关或缺失的内容。
发布-订阅机制:高效的信息共享
在协作中,共享信息至关重要。例如,架构师和工程师经常需要参考PRDs。然而,在Li et al. (2023); Zhao et al. (2023); Zhang et al. (2023)等先前工作中,每次都以一对一的方式传递这些信息,可能会使通信拓扑变得复杂,导致效率低下。
在日常编程任务中,调试和优化过程发挥着重要作用。然而,现有的方法通常缺乏自纠正机制,导致代码生成失败。先前的工作引入了不可执行的代码审查和自我反省(Zhao et al., 2023; Yao et al., 2022; Shinn et al., 2023; Dong et al., 2023)。然而,它们在确保代码可执行性和运行时正确性方面仍然面临挑战。
MetaGPT的最初实现忽略了审查过程中的某些错误,这是由于LLMs的幻觉(Manakul et al., 2023)。为了克服这个问题,在初始代码生成后,我们引入了一个可执行反馈机制,以迭代地改进代码。更具体地说,如图2所示,工程师被要求根据原始产品需求和设计编写代码。
Park, Joon Sung, Joseph C O’Brien, Carrie J Cai, Meredith Ringel Morris, Percy Liang, and Michael S Bernstein. “Generative Agents: Interactive Simulacra of Human Behavior.” arXiv preprint arXiv:2304.03442, 2023.
Zhuge, Mingchen, Haozhe Liu, Francesco Faccio, Dylan R Ashley, R´obert Csord´as, Anand Gopalakrishnan, Abdullah Hamdi, Hasan Abed Al Kader Hammoud, Vincent Herrmann, Kazuki Irie, et al. “Mindstorms in Natural Language-Based Societies of Mind.” arXiv preprint arXiv:2305.17066, 2023.
Cai, Tianle, Xuezhi Wang, Tengyu Ma, Xinyun Chen, and Denny Zhou. “Large Language Models as Tool Makers.” arXiv preprint arXiv:2303.17823, 2023.
Wang, Guanzhi, Yuqi Xie, Yunfan Jiang, Ajay Mandlekar, Chaowei Xiao, Yuke Zhu, Linxi Fan, and Anima Anandkumar. “Voyager: An Open-Ended Embodied Agent with Large Language Models.” arXiv preprint arXiv:2303.02079, 2023a.
Wang, Zhenhailong, Shaoguang Mao, Wenshan Wu, Tao Ge, Furu Wei, and Heng Ji. “Unleashing Cognitive Synergy in Large Language Models: A Task-Solving Agent Through Multi-Persona Self-Collaboration.” arXiv preprint arXiv:2303.03740, 2023c.
Li, Guohao, Hasan Abed Al Kader Hammoud, Hani Itani, Dmitrii Khizbullin, and Bernard Ghanem. “Camel: Communicative Agents for” Mind” Exploration of Large Scale Language Model Society.” arXiv preprint arXiv:2303.01885, 2023.
Du, Yilun, Shuang Li, Antonio Torralba, Joshua B. Tenenbaum, and Igor Mordatch. “Improving Factuality and Reasoning in Language Models Through Multiagent Debate.” ✅arXiv preprint arXiv:2210.11211, 2023.
Liang, Tian, Zhiwei He, Wenxiang Jiao, Xing Wang, Yan Wang, Rui Wang, Yujiu Yang, Zhaopeng Tu, and Shuming Shi. “Encouraging Divergent Thinking in Large Language Models Through Multi-Agent Debate.” arXiv preprint arXiv:2303.02292, 2023.
Hao, Rui, Linmei Hu, Weijian Qi, Qingliu Wu, Yirui Zhang, and Liqiang Nie. “ChatLLM Network: More Brains, More Intelligence.” arXiv preprint arXiv:2302.08580, 2023.
Zhang, Hongxin, Weihua Du, Jiaming Shan, Qinhong Zhou, Yilun Du, Joshua B Tenenbaum, Tianmin Shu, and Chuang Gan. “Building Cooperative Embodied Agents Modularly with Large Language Models.” arXiv preprint arXiv:2302.03648, 2023.
Dong, Yihong, Xue Jiang, Zhi Jin, and Ge Li. “Self-Collaboration Code Generation via ChatGPT.” arXiv preprint arXiv:2302.01600, 2023.
Zhou, Shuyan, Frank F Xu, Hao Zhu, Xuhui Zhou, Robert Lo, Abishek Sridhar, Xianyi Cheng, Yonatan Bisk, Daniel Fried, Uri Alon, et al. “WebArena: A Realistic Web Environment for Building Autonomous Agents.” arXiv preprint arXiv:2301.07752, 2023.
Qian, Chen, Xin Cong, Cheng Yang, Weize Chen, Yusheng Su, Juyuan Xu, Zhiyuan Liu, and Maosong Sun. “Communicative Agents for Software Development.” arXiv preprint arXiv:2211.11231, 2023.
Belbin, R. M. ✅Team Roles at Work. Routledge, 2012.
Manifesto, Agile. “Manifesto for Agile Software Development.” Snowbird, UT, 2001.
DeMarco, T. and Lister, T.R. ✅Peopleware: Productive Projects and Teams. Addison-Wesley, 2013.
Wooldridge, Michael, and Nicholas R. Jennings. “Pitfalls of Agent-Oriented Development.” In ✅Proceedings of the Second International Conference on Autonomous Agents, 1998.
Yao, Shunyu, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, and Yuan Cao. “REACT: Synergizing Reasoning and Acting in Language Models.” arXiv preprint arXiv:2110.02400, 2022.
近年来,基于大型语言模型(LLMs)的智能体社会在自动问题解决方面取得了显著进展。现有的LLM驱动的多智能体系统已经能够解决简单的对话任务,但对于更复杂的任务,由于LLMs链式联接导致的级联幻觉,逻辑不一致问题会变得更加复杂。
本文介绍了MetaGPT,这是一种创新的元编程框架,它将高效的人类工作流程融入LLM驱动的多智能体协作中。MetaGPT将标准操作程序(SOPs)编码成提示序列,以实现更简化的工作流程,从而使具有类似人类领域专业知识的智能体能够验证中间结果并减少错误。MetaGPT利用流水线模式为不同的智能体分配不同的角色,将复杂的任务有效地分解成多个智能体协同完成的子任务。在协作软件工程基准测试中,MetaGPT生成的解决方案比之前的基于聊天的多智能体系统更加连贯。
LLM驱动的多智能体系统的局限性
现有的LLM驱动的多智能体系统(Park et al., 2023; Zhuge et al., 2023; Cai et al., 2023; Wang et al., 2023c; Li et al., 2023; Du et al., 2023; Liang et al., 2023; Hao et al., 2023)往往过于简化了现实世界的复杂性,难以实现有效、连贯和准确的问题解决过程,特别是在需要有意义的协作交互时(Zhang et al., 2023; Dong et al., 2023; Zhou et al., 2023; Qian et al., 2023)。
MetaGPT:借鉴人类工作流程,提升多智能体协作效率
人类在各种领域(Belbin, 2012; Manifesto, 2001; DeMarco & Lister, 2013)通过广泛的协作实践,发展出了广泛接受的标准操作程序(SOPs)。这些SOPs在支持任务分解和有效协调方面发挥着至关重要的作用。此外,SOPs还概述了每个团队成员的职责,并为中间输出建立了标准。定义明确的SOPs可以提高与定义的角色和质量标准相一致的任务的一致性和准确执行(Belbin, 2012; Manifesto, 2001; DeMarco & Lister, 2013; Wooldridge & Jennings, 1998)。例如,在软件公司中,产品经理使用标准化结构分析竞争和用户需求,以创建产品需求文档(PRDs),指导开发过程。
MetaGPT借鉴了这种思路,设计了一个基于GPT的元编程框架,该框架从SOPs中受益匪浅。与其他工作(Li et al., 2023; Qian et al., 2023)不同,MetaGPT要求智能体生成结构化的输出,例如高质量的需求文档、设计工件、流程图和界面规范。使用中间结构化输出显著提高了目标代码生成的成功率。更形象地说,在MetaGPT模拟的公司中,所有员工都遵循严格而简化的工作流程,所有交接都必须符合既定的标准。这降低了LLMs之间闲聊导致的幻觉风险,特别是在角色扮演框架中,例如:“你好,你好,你吃午饭了吗?”——爱丽丝(产品经理);“很好!你吃午饭了吗?”——鲍勃(架构师)。
MetaGPT的核心设计:角色专业化、工作流程和结构化通信
MetaGPT通过以下几个关键设计,将人类工作流程融入LLM驱动的多智能体协作中:
角色专业化:将复杂任务分解成子任务
明确的角色专业化使复杂工作能够分解成更小、更具体的任务。解决复杂的任务或问题通常需要具有不同技能和专业知识的智能体协作,每个智能体都贡献针对特定问题的专门输出。
在软件公司中,产品经理通常进行面向业务的分析并得出见解,而软件工程师则负责编程。MetaGPT在软件公司中定义了五个角色:产品经理、架构师、项目经理、工程师和QA工程师,如图1所示。在MetaGPT中,我们指定了智能体的配置文件,其中包括每个角色的名称、配置文件、目标和约束。我们还为每个角色初始化了特定的上下文和技能。例如,产品经理可以使用网络搜索工具,而工程师可以执行代码,如图2所示。所有智能体都遵循Yao et al. (2022)中描述的React风格行为。
每个智能体都监控环境(即MetaGPT中的消息池),以发现重要的观察结果(例如,来自其他智能体的信息)。这些信息可以直接触发操作,也可以帮助完成工作。
工作流程:明确的任务分配和执行顺序
通过定义智能体的角色和操作技能,我们可以建立基本的工作流程。在MetaGPT中,我们遵循软件开发中的SOP,使所有智能体能够以顺序方式工作。
如图1所示,在获得用户需求后,产品经理进行彻底的分析,制定详细的PRD,包括用户故事和需求池。这作为初步的功能分解。结构化的PRD随后传递给架构师,架构师将需求转换为系统设计组件,例如文件列表、数据结构和界面定义。一旦被捕获到系统设计中,这些信息就会被传递给项目经理,用于任务分配。工程师继续执行指定的类和函数,如所概述的(在图2中详细说明)。在接下来的阶段,QA工程师制定测试用例以执行严格的代码质量。在最后一步,MetaGPT生成精心制作的软件解决方案。我们在图3中提供了一个详细的示意图,并在附录B中提供了一个MetaGPT中SOP工作流程的具体实例。
结构化通信:提高信息传递效率
大多数当前的LLM驱动的多智能体框架(Li et al., 2023; Zhuge et al., 2023; Zhang et al., 2023; Park et al., 2023)使用无约束的自然语言作为通信接口。
然而,尽管自然语言用途广泛,但一个问题出现了:纯粹的自然语言通信是否足以解决复杂的任务?例如,在传话游戏(或传声筒)中,经过几轮通信后,原始信息可能会被严重扭曲。受人类社会结构的启发,我们建议使用结构化通信来制定智能体的通信。我们为每个角色建立了一个模式和格式,并要求个人根据其特定角色和上下文提供必要的输出。
如图3所示,架构师智能体生成两个输出:系统界面设计和序列流程图。这些包含系统模块设计和交互序列,作为工程师的重要交付成果。与ChatDev(Zhao et al., 2023)不同,MetaGPT中的智能体通过文档和图表(结构化输出)而不是对话进行通信。这些文档包含所有必要的信息,防止出现无关或缺失的内容。
发布-订阅机制:高效的信息共享
在协作中,共享信息至关重要。例如,架构师和工程师经常需要参考PRDs。然而,在Li et al. (2023); Zhao et al. (2023); Zhang et al. (2023)等先前工作中,每次都以一对一的方式传递这些信息,可能会使通信拓扑变得复杂,导致效率低下。
为了解决这一挑战,一种可行的方法是将信息存储在全局消息池中。如图2(左)所示,我们引入了一个共享消息池,允许所有智能体直接交换信息。这些智能体不仅在池中发布其结构化信息,还可以透明地访问来自其他实体的信息。任何智能体都可以直接从共享池中检索所需信息,无需询问其他智能体并等待其响应。这提高了通信效率。
与每个智能体共享所有信息会导致信息过载。在任务执行过程中,智能体通常希望只接收与任务相关的信息,并避免通过无关细节造成干扰。有效管理和传播这些信息至关重要。我们提供了一个简单而有效的解决方案——订阅机制(如图2(左)所示)。智能体利用特定角色的兴趣来提取相关信息,而不是依赖对话。他们可以根据自己的角色配置文件选择要关注的信息。在实际实现中,智能体只有在收到所有先决条件后才会激活其操作。如图3所示,架构师主要关注产品经理提供的PRDs,而来自QA工程师等角色的文档可能不太重要。
MetaGPT的创新:可执行反馈机制
在日常编程任务中,调试和优化过程发挥着重要作用。然而,现有的方法通常缺乏自纠正机制,导致代码生成失败。先前的工作引入了不可执行的代码审查和自我反省(Zhao et al., 2023; Yao et al., 2022; Shinn et al., 2023; Dong et al., 2023)。然而,它们在确保代码可执行性和运行时正确性方面仍然面临挑战。
MetaGPT的最初实现忽略了审查过程中的某些错误,这是由于LLMs的幻觉(Manakul et al., 2023)。为了克服这个问题,在初始代码生成后,我们引入了一个可执行反馈机制,以迭代地改进代码。更具体地说,如图2所示,工程师被要求根据原始产品需求和设计编写代码。
这使工程师能够使用自己的历史执行和调试内存来不断改进代码。为了获得更多信息,工程师编写并执行相应的单元测试用例,然后接收测试结果。如果令人满意,则启动额外的开发任务。否则,工程师在恢复编程之前调试代码。这个迭代测试过程会持续进行,直到测试通过或达到最大3次重试。
MetaGPT的实验验证:超越现有方法的性能
本文通过一系列实验验证了MetaGPT的有效性,包括在HumanEval(Chen et al., 2021a)和MBPP(Austin et al., 2021)等基准测试上的性能评估,以及在自建的SoftwareDev数据集上的性能评估。
基准测试结果:超越现有方法的性能
在HumanEval和MBPP基准测试中,MetaGPT的性能超越了所有先前的方法,并在HumanEval基准测试中与GPT-4协作,显著提高了Pass@k。在SoftwareDev数据集上,MetaGPT在几乎所有指标上都优于ChatDev,例如,在可执行性方面,MetaGPT的得分接近4(完美无缺)。此外,MetaGPT的运行时间更短(503秒),明显少于ChatDev。在代码统计和人工修改成本方面,MetaGPT也显著优于ChatDev。尽管MetaGPT需要更多标记(24,613或31,255,而ChatDev为19,292),但它只需要126.5/124.3个标记来生成一行代码,而ChatDev使用248.9个标记。这些结果突出了SOPs在多个智能体之间协作中的优势。此外,我们通过可视化样本(图5)展示了MetaGPT的自主软件生成能力。有关其他实验和分析,请参见附录C. ✅
消融研究:验证MetaGPT设计的有效性
为了了解不同角色对最终结果的影响,我们执行了两个涉及生成有效代码和计算平均统计数据的任务。当我们排除某些角色时,会生成不可用的代码。如表3所示,除了工程师之外,添加其他角色始终能提高修改和可执行性。虽然更多角色会略微增加成本,但整体性能明显提高,证明了各种角色的有效性。
可执行反馈机制的有效性:如图4所示,在MetaGPT中添加可执行反馈,导致HumanEval和MBPP的Pass@1分别显著提高了4.2%和5.4%。此外,表1显示,反馈机制提高了可行性(3.67至3.75)并降低了人工修改成本(2.25至0.83)。这些结果说明了我们设计的反馈机制如何能够生成更高质量的代码。MetaGPT和没有可执行反馈的MetaGPT的额外定量结果如表4和表6所示。
MetaGPT的未来展望:更智能、更自主的多智能体系统
本文提出的MetaGPT为构建更智能、更自主的多智能体系统开辟了新的可能性,例如:
MetaGPT的出现,标志着LLM驱动的多智能体系统发展的新阶段,它将人类工作流程融入多智能体协作框架,为解决现实世界中的复杂问题提供了新的思路和方法。
参考文献