微信扫码
与创始人交个朋友
我要投稿
洪思瑞1∗, 朱明晨2∗, Jonathan Chen1, 郑霞武3, 程宇恒4,张采尧4, 王金林1, 王子丽, 邱嘉成5, 林子娟4,周立阳6, 冉晨宇1, 肖凌峰1,7, 吴成林1†, Jurgen Schmidhuber ̈ 1DeepWisdom,2 AI Initiative,阿卜杜拉国王科技大学,3厦门大学, 4香港中文大学,深圳,5南京大学,6宾夕法尼亚大学,7加州大学伯克利分校,8瑞士人工智能实验室IDSIA/USI/SUPSI 。
编译者注释:MetaGPT尝试了一种多智能体的软件生命周期的框架工具。类似多模态大小微模型联运串接编排,软件生命周期从需求(小微模型)、产品功能设计(类前端),系统设计(类后端)、编码、测试、项目管理(SLM小模型足够)六阶段采用不同的基础模型智能体编排串接。目前对于简单应用及Python语言可以跑通,随着编程训练数据集的丰富,以及各类适配,类MetaGPT框架平台真的可以支持更多1-5人的软件公司了。这个MetaGPT软件企业SOP软件项目生命周期Hugging Face已经有5万+颗星,属于很受欢迎的软件开源项目,国内不少软件企业开始引入一些类似Python编程项目中,未来基于MetaGPT小规模1-10人软件企业会变得很多了。一名老板负责接单管理业务需求兼任BA角色(语音视频图片文字组合的需求文档生成),项目经理负责生成任务和安排任务及复盘任务设计和代码。PD负责生成PRD及自动辅助审核PRD,架构师负责前后端的设计及PRD/代码的复核;软件工程师负责生成代码及修复Bug,QA负责生成测试用例及运行测试(小公司小项目可以PM/PD一人多角色完成)。
目前AI多智能体直接辅助软件大中型软件项目开发端到端全流程落地尚早,但是特别用于刚入职新员工(各种角色的PM/BA/SA/PD/Coder/QA)可以在真实模拟环境下沉浸式培训学习,当然也适用于大学及培训机构的模拟环境。
deepwisdom.ai MetaGPT新闻
? 2024年3月29日:v0.8.0发布。现在你可以通过 pypi 包导入来使用 Data Interpreter(arxiv、example、code)。同时,我们集成了RAG模块,并支持了多个新的LLM。
? 2024年2月8日:v0.7.0发布,支持为不同的角色分配不同的LLM。我们还引入了 Data Interpreter,这是一个强大的智能体,能够解决各种现实世界的问题。
? 2024 年 1 月 16 日:我们的论文 MetaGPT: Meta Programming for A Multi-Agent Collaborative Framework 在 ICLR 2024 上接受口头报告(前 1.2%),在基于 LLM 的智能体类别中排名 #1。
? 2024 年 1 月 3 日:v0.6.0 发布,新功能包括序列化、升级 OpenAI 包并支持多个 LLM,为辩论提供了最少的示例等。
? 2023年12月15日:v0.5.0发布,引入增量开发、多语言、多种编程语言等实验性特性。
? 2023 年 11 月 8 日:MetaGPT 入选 Open100:开源成就 100 强。
? 2023 年 9 月 1 日:MetaGPT 在 2023 年 8 月第 17 次登上 GitHub Trending Monthly 榜首。
? 2023 年 6 月 30 日:MetaGPT 现已开源。
? 2023 年 4 月 24 日:提交了第一行 MetaGPT 代码。
MetaGPT输入一句话的老板业务需求(BA),输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等.
MetaGPT内部包括产品经理 PD/ SA架构师 / 项目经理PM / 工程师/QA,它提供了一个软件公司的全过程与精心调配的SOP
Code = SOP(Team)
是核心哲学。我们将SOP具象化,并且用于LLM构成的团队
以下为论文正文
摘要
通过基于大型语言模型 (LLM) 的智能体社会,在自动解决问题方面取得了显著进展。现有的基于LLM的多智能体系统已经可以解决简单的对话任务。然而,由于天真地链接 LLM 引起的级联幻觉,逻辑不一致导致逻辑不一致,因此更复杂任务的解决方案变得复杂。在这里,我们介绍MetaGPT,这是一个创新的元编程框架,将高效的人类工作流程整合到基于LLM的多智能体协作中。MetaGPT 将标准化操作流程 (SOP) 编码为提示序列,以实现更简化的工作流程,从而允许具有类似人类领域专业知识的智能体验证中间结果并减少错误。MetaGPT 利用流水线范式为各种智能体分配不同的角色,有效地将复杂任务分解为涉及多个智能体协同工作的子任务。在协作软件工程基准测试中,MetaGPT 生成的解决方案比以前基于聊天的多智能体系统更连贯。我们的项目可以在 https://github.com/geekan/MetaGPT 找到。
使 GPTs 组成软件公司,协作处理更复杂的任务
软件公司多角色示意图(正在逐步实现)。
METAGPT:多智能体协作框架的Meta编程
目 录
1前言
2相关工作
3METAGPT:元编程框架
3.1标准操作程序中的智能体
3.2通讯协议
3.3具有可执行反馈的迭代编程
4实验
4.1实验设置
4.2主要结果
4.3能力分析
4.4消融研究
5结论
致谢
作者贡献
参考
A展望
6.1A.1 自我完善机制
6.2A.2 多智能体经济
B执行演示
B.1 用户输入
C实验
C.1 SOFTWAREDEV 数据集的详细信息
C.2 其他结果
D:附录 MetaGPT GitHub安装
利用大型语言模型 (LLM) 的自主智能体为增强和复制人类工作流程提供了有希望的机会。然而,在实际应用中,现有系统(Park et al.,2023 年; 诸葛等.,2023 年; 蔡等人.,2023 年; Wang et al.,2023c; Li et al.,2023 年; Du 等人。,2023 年; Liang 等人。,2023 年; Hao et al.,2023)倾向于过度简化复杂性。他们努力实现有效、连贯和准确的问题解决过程,特别是当需要有意义的协作互动时(Zhang et al.,2023 年; Dong 等人。,2023 年; 周等人.,2023 年; Qian等人。,2023 年)。
通过广泛的合作实践,人类在各个领域开发了广泛接受的标准化操作程序 (SOP)(Belbin,2012 年; 宣言,2001年; DeMarco&Lister,2013 )。这些SOP在支持任务分解和有效协调方面发挥着关键作用。此外,SOP 概述了每个团队成员的职责,同时为中间产出建立了标准。定义明确的 SOP 可以提高任务的一致性和准确性,这些任务符合定义的角色和质量标准(Belbin,2012 年; 宣言,2001年; DeMarco & Lister,2013 年; Wooldridge和Jennings,1998)。例如,在一家软件公司中,产品经理分析竞争和用户需求,使用标准化结构创建产品需求文档(PRD),以指导开发过程。
受这些想法的启发,我们设计了一个有前途的基于 GPT 的元编程框架,称为 MetaGPT,它从 SOP 中受益匪浅。与其他作品不同(Li et al.,2023 年; Qian等人。,
2023),MetaGPT 要求智能体生成结构化输出,例如高质量需求。
这些作者对这项工作做出了同等贡献
吴成林(alexanderwu@fuzhi.ai)是DeepWisdom的通讯作者。
图 1: MetaGPT 与现实世界人类团队之间的软件开发 SOP。 在软件工程中,SOP 促进了不同角色之间的协作。MetaGPT 展示了它将复杂任务分解为分配给各种角色(例如产品经理、架构师、工程师等)的特定可操作程序的能力。
文档、设计工件、流程图和接口规范。使用中间结构化输出可显著提高目标代码生成的成功率。更形象地说,在MetaGPT 模拟的公司中,所有员工都遵循严格而精简的工作流程,他们的所有交接都必须符合某些既定标准。这降低了 LLM 之间闲聊导致幻觉的风险,尤其是在角色扮演框架中,例如:“嗨,你好,你好吗? – Alice(产品经理);“太好了!你吃午饭了吗? – 鲍勃(架构师)。
得益于SOP,MetaGPT 提供了一种很有前途的元编程方法。在这种情况下,我们将元编程[1] 作为“编程到编程”,与元学习和“学习学习”的更广泛领域形成鲜明对比(Schmidhuber,1987; 1993年a;Hochreiter等人。,2001; Schmidhuber,2006 年; Finn 等人。,2017 年)。
元编程的概念也包括早期的工作,如CodeBERT(Feng et al.,2020 年)和最近的项目,如 CodeLlama (Roziere et al.' , 2023) 和 WizardCoder (Luo et al.,2023 年)。然而,MetaGPT 作为一种独特的解决方案脱颖而出,它允许通过组织良好的专业智能体组进行高效的元编程。每个智能体都有特定的角色和专业知识,遵循一些既定标准。这允许在运行时进行自动需求分析、系统设计、代码生成、修改、执行和调试,突出了基于智能体的技术如何增强元编程。
为了验证 MetaGPT 的设计,我们使用了公开可用的 HumanEval (Chen et al.,2021a)和MBPP(Austin等人。,2021 年)进行评估。值得注意的是,在代码生成基准测试中,MetaGPT 以 85.9% 和 87.7% 的Pass@1实现了新的最先进 (SoTA)。与其他用于创建复杂软件项目的流行框架相比,例如 AutoGPT(Torantulino 等人。, 2023)、LangChain (Chase, 2022)、AgentVerse (Chen et al.,2023)和ChatDev(Qian et al.,2023 年)。MetaGPT 在处理更高级别的软件复杂性和提供广泛的功能方面也表现出色。值得注意的是,在我们的实验评估中,MetaGPT 实现了 100% 的任务完成率,证明了我们设计的鲁棒性和效率(时间和令牌成本)。
我们总结我们的贡献如下:
1.我们介绍了 MetaGPT,这是一个基于 LLM 的多智能体协作元编程框架。它非常方便和灵活,具有定义明确的功能,如角色定义和消息共享,使其成为开发基于 LLM 的多智能体系统的有用平台。
2.我们在 MetaGPT 的设计中创新地集成了类人 SOP,显着增强了其稳健性,减少了基于 LLM 的智能体之间的非生产性协作。此外,我们引入了一种新颖的执行反馈机制,该机制可以在运行时调试和执行代码,从而显着提高代码生成质量(例如,MBPP 的绝对改进为 5.4%)。
3.我们在 HumanEval 上实现了最先进的性能(Chen et al.,2021a)和MBPP(Austin等人。,2021年)。大量结果令人信服地验证了 MetaGPT,表明它是一种很有前途的元编程框架,用于开发基于 LLM 的多智能体系统。
自动编程 。自动编程的根源可以追溯到上个世纪。1969年,Waldinger&Lee(1969)引入了“PROW”,这是一个系统,旨在接受用谓词演算编写的程序规范,生成算法并创建LISP实现( McCarthy,1978)。Balzer(1985) 和 Soloway (1986) 努力推进自动编程,并确定了实现它的潜在方法。最近的方法使用自然语言处理(NLP)技术(Ni et al.,2023 年; Skreta 等人。,2023 年; Feng 等人。,2020 年; Li et al.,2022 年; Chen 等人.,2018年; 2021年b;Zhang等人.,2023 年)。自动编程已经发展成为一个提供付费功能的行业,例如Microsoft Copilot。最近,基于 LLM 的智能体(Yao et al.,2022 年; Shinn等人。,2023 年; Lin 等人。,2023)具有先进的自动化编程开发。其中,ReAct(Yao et al.,2022 年)和反射(Shinn 等人。,2023)利用思维链提示(Wei et al.,2022 年)与 LLM 一起生成推理轨迹和行动计划。这两部作品都证明了 ReAct 风格的推理循环作为增强自动编程的设计范式的有效性。此外,ToolFormer (Schick et al.,2023)可以通过简单的API学习如何使用外部工具。该研究与Li等人的工作最接近。(2023) 提出了一个简单的编程角色扮演框架,涉及扮演不同角色的智能体之间的通信。 Qian等人。 (2023) 利用多个智能体进行软件开发。虽然已有论文(Li et al.,2023 年; Qian等人。,2023 年)提高了生产力,但尚未充分利用具有结构化输出格式的有效工作流程。这使得处理复杂的软件工程问题变得更加困难。
基于LLM 的多智能体框架。 最近,基于 LLM 的自主智能体在工业界和学术界都引起了极大的兴趣(Wang et al., 2023b)。
许多著作(Wang et al.,2023c; Du 等人。,2023 年; 诸葛等.,2023 年; Hao et al.,2023 年; Akata等人。,2023) 通过整合多个智能体之间的讨论,提高了 LLM 的解决问题的能力。Stable-Alignment (Liu et al.,2023) 通过与 LLM 智能体在沙盒中的交互得出对价值判断的共识来创建指令数据集。其他作品侧重于社会学现象。例如,生成智能体(Park et al.,2023)创建了一个由25个智能体组成的“小镇”,用于研究语言互动、社会理解和集体记忆。在基于自然语言的心灵社会(NLSOM)中(诸葛等人。,2023),具有不同功能的智能体通过多轮“头脑风暴”进行交互以解决复杂的任务。 蔡等人. (2023) 提出了一种通过将大型模型作为工具制造商和小型模型作为工具用户相结合来降低成本的模型。
一些著作强调与规划和战略相关的合作与竞争(Bakhtin et al.,2022);其他人则提出了基于LLM的经济(诸葛等。,2023 年)。在我们的实施中,我们观察到多智能体合作面临一些挑战,例如保持一致性和避免非生产性循环。这促使我们专注于将软件开发中的标准操作程序等高级概念应用于多智能体框架。
MetaGPT是基于 LLM 的多智能体系统的元编程框架。 3.1 解释了该框架中的角色专业化、工作流程和结构化通信,并说明了如何在 SOP 的上下文中组织多智能体系统。 3.2 提出了一种提高角色通信效率的通信协议。我们还实施了结构化的通信接口和有效的发布-订阅机制。这些方法使智能体能够从其他角色和公共信息中获取方向性信息
图 2:通信协议(左)和具有可执行反馈的迭代编程示例(右)。 左图:智能体使用共享消息池发布结构化消息。他们还可以根据自己的个人资料订阅相关消息。 右图:生成初始代码后,工程师智能体将运行并检查错误。如果发生错误,智能体将检查存储在内存中的过去消息,并将它们与 PRD、系统设计和代码文件进行比较。
来自环境。最后,我们引入了可执行反馈——一种自我纠正机制,用于在 Sec 运行时进一步提高代码生成质量。 3.3.
角色专业化。 明确的角色专业化可以将复杂的工作分解为更小、更具体的任务。解决复杂的任务或问题通常需要具有不同技能和专业知识的座席协作,每个座席都为特定问题量身定制的专业输出。
在软件公司中,产品经理通常进行面向业务的分析并得出见解,而软件工程师则负责编程。我们在软件公司中定义了五个角色:产品经理、架构师、项目经理、工程师和 QA 工程师,如图 1 所示。在MetaGPT 中,我们指定智能体的配置文件,其中包括他们的姓名、配置文件、目标和每个角色的约束。我们还初始化每个角色的特定背景和技能。例如,产品经理可以使用 Web 搜索工具,而工程师可以执行代码,如图 2所示。所有智能体都遵循 Yao 等人描述的 React 风格行为。 (2022).
每个智能体都会监控环境。(即 MetaGPT 中的消息池)以发现重要的观察结果(例如,来自其他智能体的消息)。这些消息可以直接触发操作或帮助完成作业。
跨智能体的工作流程。通过定义智能体的角色和操作技能,我们可以建立基本的工作流程。在我们的工作中,我们在软件开发中遵循SOP,这使所有智能体能够按顺序工作。
具体而言,如图1 所示,在获得用户需求后,产品经理会进行彻底的分析,制定详细的 PRD,包括用户故事和需求池。这是初步的功能细分。然后将结构化的 PRD 传递给架构师,架构师将需求转化为系统设计组件,例如文件列表、数据结构和接口定义。一旦在系统设计中捕获,信息就会被定向到项目经理进行任务分配。工程师继续执行指定的类和功能,如图 2 所示。在下一阶段,QA工程师制定测试用例,以强制执行严格的代码质量。在最后一步中,MetaGPT pro-
图3:MetaGPT软件开发流程的图表,强调了其对SOP 的严重依赖。更详细的演示可在附录 B中找到。提供精心设计的软件解决方案。我们提供了MetaGPT 中SOP 工作流程的详细示意图(图3)和具体实例(附录B)。
结构化通信接口。 当前基于 LLM 的多智能体框架(Li et al.,2023 年; 诸葛等.,2023 年; Zhang等人.,2023 年; Park等人。,2023)利用不受约束的自然语言作为通信接口。
然而,尽管自然语言具有多功能性,但出现了一个问题:纯自然语言交流是否足以解决复杂的任务?例如,在电话游戏(或中国耳语)中[2],经过几轮交流,原始信息可能会相当失真。受人类社会结构的启发,我们建议使用结构化沟通来制定智能体人的沟通。我们为每个角色建立架构和格式,并要求个人根据其特定角色和上下文提供必要的输出。
如图 3 所示,Architect 智能体生成两个输出:系统接口设计和序列流程图。这些包含系统模块设计和交互序列,是工程师的重要可交付成果。与ChatDev(Zhao et al.,2023),MetaGPT 中的智能体通过文档和图表(结构化输出)而不是对话进行交流。这些文档包含所有必要的信息,防止不相关或遗漏内容。
发布-订阅机制。共享信息在协作中至关重要。例如,架构师和工程师经常需要参考铁三角。然而,每次都以一对一的方式传达这些信息,正如以前的工作(Li et al.,2023 年; Zhao et al.,2023 年; Zhang等人.,2023),可能会使通信拓扑复杂化,导致效率低下。
为了应对这一挑战,一种可行的方法是将信息存储在全局 消息池中。如图 2 (左)所示,我们引入了一个共享消息池,允许所有智能体直接交换消息。这些智能体不仅 在池中发布其结构化消息,而且还透明地访问来自其他实体的消息。任何座席都可以直接从共享池中检索所需信息,无需查询其他座席并等待其响应。这提高了沟通效率。
与每个座席共享所有信息可能会导致信息过载。在任务执行期间,智能体通常更喜欢只接收与任务相关的信息,并避免因不相关的细节而分心。有效管理和传播这些信息起着至关重要的作用。我们提供了一种简单有效的解决方案订阅机制(如图 2(左)所示)。座席不依赖对话,而是利用特定于角色的兴趣来提取相关信息。他们可以根据自己的角色配置文件选择要关注的信息。在实际实现中,智能体仅在收到其所有先决条件依赖项后才激活其操作。如图 3 所示,架构师主要关注产品经理提供的 PRD,而来自 QA 工程师等角色的文档可能不太受关注。
在日常编程任务中,调试和优化的过程起着重要作用。然而,现有方法往往缺乏自我纠正机制,导致代码生成不成功。以前的工作引入了不可执行的代码审查和自我反思(Zhao et al.,2023 年; Yao等人。,2022 年; Shinn等人。,2023 年; Dong 等人。,2023 年)。但是,它们在确保代码可执行性和运行时正确性方面仍然面临挑战。
由于 LLM 幻觉,我们的第一个 MetaGPT 实现在审查过程中忽略了某些错误(Manakul 等人。,2023 年)。为了克服这个问题,在初始代码生成后,我们引入了一个可执行的反馈机制来迭代改进代码。更具体地说,如图 2所示,工程师被要求根据原始产品需求和设计编写代码。
这使工程师能够使用自己的历史执行和调试内存不断改进代码。为了获得更多信息,工程师编写并执行相应的单元测试用例,然后接收测试结果。如果满意,则启动其他开发任务。否则,工程师会在恢复编程之前调试代码。
此迭代测试过程将持续到测试通过或达到最多 3 次重试。
数据集 。我们使用两个公共基准,HumanEval (Chen et al.,2021a)和MBPP(Austin等人。,2021年),以及一个名为 SoftwareDev 的自生成的、更具挑战性的软件开发基准测试:
(1) HumanEval 包括 164 个手写编程任务。这些任务包括功能规范、描述、参考代码和测试。
(2) MBPP 由 427 个 Python 任务组成。这些任务涵盖核心概念和标准库功能,包括说明、参考代码和自动化测试。
(3) 我们的 SoftwareDev 数据集是 70 个具有代表性的软件开发任务示例的集合,每个示例都有自己的任务提示(见表 5)。这些任务具有不同的范围(见图5),例如迷你游戏,图像处理算法,数据可视化。它们为真实的开发任务提供了强大的测试平台。与以前的数据集相反(Chen et al.,2021a; 奥斯汀等人。,2021),SoftwareDev 专注于工程方面。在比较中,我们随机选择了七个具有代表性的任务进行评估。
评估指标 对于 HuamnEval 和 MBPP,我们Pass@遵循 (Chen et al.,2021a; Dong 等人。,2023),以评估top-k的功能精度
生成的代码: Pass@k = EProblems .
对于 SoftwareDev,我们优先考虑实际使用,并通过人工评估 (A、E) 或统计分析(B、C、D)来评估性能:(a) 可执行性:该指标将代码从 1(故障/无功能)到 4(完美)进行评分。“1”表示无功能,“2”表示可运行但不完美,“3”表示近乎完美,“4”表示完美无瑕的代码。 (B) 成本:这里的成本评估包括(1)运行时间,(2)代币使用和(3)费用。 (C) 代码统计:这包括 (1) 代码文件、(2) 每个文件的代码行数和 (3) 代码总行数。 (D) 生产力:基本上,它被定义为令牌使用的数量除以代码行数,这是指每行代码的令牌消耗量。(E) 人工修订成本:通过确保代码顺利运行所需的修订轮数来量化,这表明人工干预的频率,例如调试或导入包。
基线。我们将我们的方法与代码生成领域中最近的特定领域 LLM 进行了比较,包括 AlphaCode (Li et al.,2022 年)、Incoder (Fried et al., 2022), CodeGeeX (Zheng et al., 2023), CodeGen (Nijkamp et al., 2023)、CodeX (Chen et al., 2021a) 和 CodeT (Chen et al.,2022 年)和一般领域 LLM,例如PaLM (Chowdhery et al.,2022 年)和 GPT-4(OpenAI,2023 年)。Dong 等人提供了一些基线结果(例如Incoder、CodeGeeX)。 (2023).
我们在 MetaGPT 中修改了某些基于角色的提示,以生成适合目标问题的代码(例如,为 HumanEval 和 MBPP 生成函数而不是类)。通过 SoftwareDev 基准测试,我们提供了 MetaGPT、AutoGPT(Torantulino 等人)之间的全面比较。, 2023)、LangChain (Chase, 2022) 和 Python Read-Eval-Print Loop (REPL) 工具[3]、AgentVerse (Chen et al.,2023)和ChatDev(Qian et al.,2023 年)。
HumanEvalPass@1 of MBPP and HumanEval (%) MBPP
性能图 4 表明,MetaGPT 在 HumanEval 和 MBPP 基准测试中都优于之前的所有方法。当 MetaGPT 与 GPT-4 协作时, 与 GPT-4 相比,它显着提高了 HumanEval 基准测试中的 Pass@k。它在这两个公共基准中分别实现了 85.9% 和 87.7%。此外,如表 1 所示,MetaGPT 在具有挑战性的 SoftwareDev 数据集上几乎在所有指标上都优于 ChatDev。例如,考虑到可执行性,MetaGPT 获得了 3.75 分,非常接近 4(完美无瑕)。此外,它花费的时间更少(503 秒),明显少于 ChatDev。考虑到代码统计量和人工修改的成本,它的表现也明显优于 ChatDev。尽管 MetaGPT 需要更多的令牌(24,613 或 31,255 个,而 19,292 个),但它只需要126.5/124.3 个令牌即可生成一行代码。相比之下,ChatDev 使用 248.9 个令牌。这些结果突出了SOP在多个智能体之间的协作中的好处。此外,我们还通过可视化样本展示了 MetaGPT 的自主软件生成能力(图 5)。有关其他实验和分析,请参阅附录 C。
图 5:MetaGPT 开发的演示软件。
表 1:SoftwareDev 的统计分析。
统计指标 |
ChatDev |
MetaGPT w/o 反馈 |
MetaGPT |
(A) 可执行性 |
2.25 |
3.67 |
3.75 |
(B) Cost#1: Running Times (s) |
762 |
503 |
541 |
(B) Cost#2: Token Usage |
19,292 |
24,613 |
31,255 |
(C) Code Statistic#1: Code Files |
1.9 |
4.6 |
5.1 |
(C) Code Statistic#2: Lines of Code per File |
40.8 |
42.3 |
49.3 |
(C) Code Statistic#3: Total Code Lines |
77.5 |
194.6 |
251.4 |
(D) 生产力 |
248.9 |
126.5 |
124.3 |
(E) 人工修改成本 |
2.5 |
2.25 |
0.83 |
与 AutoGPT 等开源基线方法和 AgentVerse 和 ChatDev 等自主智能体相比,MetaGPT 提供了软件工程任务的功能。如表 2 所示,我们的框架包含了有效处理复杂和专业开发任务的广泛能力。结合 SOP(例如,角色扮演专业知识、结构化沟通、简化的工作流程)可以显着改善代码生成。其他基线方法可以很容易地集成类似SOP的设计,以提高其性能,类似于注入思维链(Wei等人。,2022 年)在 LLM 中。
角色的有效性。为了了解不同角色对最终结果的影响,我们执行了两项任务,包括生成有效代码和计算平均统计数据。当我们排除某些角色时,就会生成不可行的代码。如表 3 所示,添加与工程师不同的角色可以持续提高修订版和可执行性。虽然更多的角色会略微增加费用,但整体绩效会显着提高,这表明各种角色的有效性。
表 2: 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,这是一种新颖的元编程框架,它利用SOP来增强基于大型语言模型(LLM)的多智能体系统的问题解决能力。MetaGPT 将一组智能体建模为模拟软件公司,类似于模拟城镇(Park et al.,2023 年)和 Voyager 中的 Minecraft 沙盒(Wang et al.,2023a)。MetaGPT 利用角色专业化、工作流管理和高效的共享机制(如消息池和订阅),使其成为自治智能体和多智能体框架的灵活且可移植的平台。它使用可执行的反馈机制来提高运行时的代码生成质量。在广泛的实验中,MetaGPT 在多个基准测试中实现了最先进的性能。类人SOP的成功集成激发了未来对人工多智能体系统仿真技术的研究。我们还将我们的工作视为规范基于LLM的多智能体框架的早期尝试。另见展望(附录A)
致谢
我们感谢 KAUST AI Initiative 执行秘书 Sarah Salhi 和 KAUST AI Initiative 博士后研究员 Yuhui Wang 帮助润色部分文本。我们要感谢KAUST AI Initiative的博士生Wenyi Wang,感谢他对论文的全面反馈,并帮助与Mingchen一起起草了展望(附录 A)。我们还要感谢 DeepWisdom 副总裁 Zongze Xu 为 AgentStore 提供的说明性材料。
作者贡献
Sirui Hong进行了大部分实验,并设计了可执行的反馈模块。她还领导了该文章的初始版本,得到了张策尧的支持,也得到了王金琳和王子丽的支持。诸葛明辰设计了自我提升模块,讨论了更多的实验,并领导了当前的写作。乔纳森·陈(Jonathan Chen)帮助进行了MBPP实验,概述了方法部分,并为当前的文章做出了贡献。郑霞武提供了宝贵的指导,对论文进行了审校和编辑。Yuheng Cheng 为评估指标设计和 HumanEval 实验做出了贡献。Steven Ka Shing Yau,Zijuan Lin,Liyang 周,Lingfeng Xiao帮助进行了MBPP实验以及与开源基线方法的比较。冉辰宇创作了大部分说明性人物。吴成林是 DeepWisdom 的 CEO,发起了 MetaGPT,为其做出了最重要的代码贡献,并为该项目提供了建议。Jurgen Schmidhuber,KAUST人工智能计划主任和IDSIA的科学总监,为这个项目提供了建议,并帮助撰写了这篇文章。
Elif Akata、Lion Schulz、Julian Coda-Forno、Seong Joon Oh、Matthias Bethge 和 Eric Schulz。使用大型语言模型玩重复游戏。 arXiv 预印本,2023 年。
雅各布·奥斯汀、奥古斯都·奥德纳、麦克斯韦·奈、马丁·博斯马、亨利克·米哈莱夫斯基、大卫·多汉、艾伦·江、蔡嘉莉、迈克尔·特里、郭乐和查尔斯·萨顿。大型语言模型的程序综合,2021年。
安东·巴赫金、诺姆·布朗、艾米莉·迪南、加布里埃尔·法里纳、科林·弗莱厄蒂、丹尼尔·弗里德、安德鲁·戈夫、乔纳森·格雷、胡恒源等人。 通过将语言模型与战略推理相结合,在外交游戏中发挥人类水平。科学, 378(6624):1067–1074, 2022.
罗伯特·巴尔泽。15年自动编程视角。 IEEE软件工程学报, 11(11):1257–1268, 1985.
RM贝尔宾。 工作中的团队角色。劳特利奇,2012 年。URL https://books.google.co.uk/ books?id=MHIQBAAAQBAJ.
蔡天乐, 王学志, 马腾宇, 陈欣云, 和 丹尼 周.大型语言模型作为工具制造商。arXiv 预印本,2023 年。
哈里森·蔡斯。LangChain的。 https://github.com/hwchase17/langchain,2022 年。
陈蓓、张凤姬、阮安、赞道光、林泽琪、楼建光、陈伟珠.Codet:使用生成的测试生成代码,2022年。
马克·陈、杰里·托雷克、全熙宇、袁启明、恩里克·庞德·德·奥利维拉·平托、贾里德·卡普兰、哈里·爱德华兹、尤里·布尔达、尼古拉斯·约瑟夫、格雷格·布罗克曼、亚历克斯·雷、劳尔·普里、
格雷琴·克鲁格、迈克尔·彼得罗夫、海蒂·赫拉夫、吉里什·萨斯特里、帕梅拉·米什金、陈布鲁克、
斯科特·格雷、尼克·莱德、米哈伊尔·巴甫洛夫、阿莱西娅·鲍尔、卢卡斯·凯撒、穆罕默德·巴伐利亚、克莱门斯·温特、菲利普·蒂莱特、费利佩·彼得罗斯基·苏奇、戴夫·卡明斯、马蒂亚斯·普拉珀特、福蒂奥斯·钱齐斯、伊丽莎白·巴恩斯、阿里尔·赫伯特-沃斯、威廉·赫布根·古斯、亚历克斯·尼科尔、亚历克斯·派诺、尼古拉斯·特扎克、唐杰、伊戈尔·巴布施金、苏西尔·巴拉吉、尚塔努·耆那教、威廉·桑德斯、
克里斯托弗·黑塞、安德鲁·卡尔、扬·莱克、乔什·阿奇亚姆、韦丹特·米斯拉、埃文·森川、亚历克
拉德福德、马修·奈特、迈尔斯·布伦戴奇、米拉·穆拉蒂、凯蒂·梅耶、彼得·韦林德、鲍勃·麦格鲁、达里奥·阿莫迪、山姆·麦坎德利什、伊利亚·萨茨克弗和沃伊切赫·扎伦巴。评估在代码上训练的大型语言模型,2021a。
陈伟泽, 苏玉生, 左经伟, 杨成, 袁晨飞, 陈茜, 陈志敏, 秦玉佳, 卢亚熙, 谢若兵, 刘志远, 孙茂松, 周杰.Agentverse:促进多智能体协作并探索智能体中的紧急行为,2023年。
陈昕云、刘畅和宋黎明。执行引导的神经程序合成。在ICLR,2018年。
陈新云、宋黎明和田元东。超越领域特定语言的神经程序合成的潜在执行。NeurIPS,2021b。
阿坎沙·乔杜里、沙兰·纳朗、雅各布·德夫莱恩、马滕·博斯马、高拉夫·米什拉、亚当·罗伯茨、保罗·巴勒姆、香冯·钟、查尔斯·萨顿、塞巴斯蒂安·格尔曼、帕克·舒赫、
Kensen Shi, Sasha Tsvyashchenko, Joshua Maine, Abhishek Rao, Parker Barnes, Yi Thai, Noam
沙泽尔、维诺德库马尔·普拉巴卡兰、艾米丽·赖夫、杜楠、本·哈钦森、莱纳·波普、詹姆斯·布拉德伯里、雅各布·奥斯汀、迈克尔·伊萨德、盖伊·古阿里、尹鹏程、东州·杜克、安塞姆·列夫斯卡娅、桑杰·盖马瓦特、苏尼帕·德夫、亨利克·米哈莱夫斯基、泽维尔·加西亚、韦丹特·米斯拉、凯文·罗宾逊、利亚姆·费杜斯、丹尼·周、达芙妮·伊波利托、大卫·栾、林贤泽、巴雷特
佐夫、亚历山大·斯皮里多诺夫、瑞安·塞帕西、大卫·多汉、希瓦尼·阿格拉瓦尔、马克·奥默尼克、
Andrew M. Dai、Thanumalayan Sankaranarayana Pillai、Marie Pellat、Aitor Lewkowycz、Erica Moreira、Rewon Child、Oleksandr Polozov、Katherine Lee、Zongwei 周、王雪志、Brennan Saeta、Mark Diaz、Orhan Firat、Michele Catasta、Jason Wei、Kathy Meier-Hellstern、Douglas Eck、Jeff Dean、Slav Petrov和Noah Fiedel。Palm:使用路径扩展语言建模,2022 年。
T. DeMarco和 TR Lister。 Peopleware:富有成效的项目和团队。艾迪生-韦斯利,2013 年。URL https://books.google.co.uk/books?id=DVlsAQAAQBAJ。
董一红, 薛江, 金志, 和李戈.通过chatgpt进行自协作代码生成. arXiv 预印本,2023 年。
Yilun Du、Shuang Li、Antonio Torralba、Joshua B. Tenenbaum 和 Igor Mordatch。通过多智能体辩论提高语言模型的事实性和推理性,2023 年。
冯张寅, 郭大雅, 唐杜宇, 段南, 冯晓成, 龚明, 守林军, 秦冰, 刘婷, 江大新,et al. Codebert: A pre-trained model for programming and natural languages. arXiv 预印本 arXiv:2002.08155, 2020.
克里斯桑塔·费尔南多、迪伦·巴纳塞、亨利克·米哈莱夫斯基、西蒙·奥辛德罗和蒂姆·罗克塔舍尔。̈Promptbreeder:通过快速进化实现自我参照的自我完善。 arXiv 预印本 arXiv:2309.16797, 2023.
切尔西·芬恩、彼得·阿贝尔和谢尔盖·莱文。与模型无关的元学习,用于深度网络的快速适应。在机器学习国际会议上,第 1126-1135 页。PMLR,2017 年。
Daniel Fried、Armen Aghajanyan、Jessy Lin、Sida Wang、Eric Wallace、Freda Shi、Ruqi Zhong、温 Yih、Luke Zettlemoyer和Mike Lewis。Incoder:用于代码填充和合成的生成模型。 arXiv 预印本 arXiv:2204.05999, 2022.
欧文·约翰·古德。关于第一台超智能机器的猜测。高级计算。, 6: 31–88, 1965. doi: 10.1016/S0065-2458(08)60418-0.网址 https://doi.org/10.1016/ S0065-2458(08)60418-0。
郝瑞, 胡林梅, 齐伟建, 吴庆柳, 张一瑞, 聂丽强.Chatllm网络:更多的大脑,更多的智能。arXiv 预印本,2023 年。
S. Hochreiter、AS Younger 和 PR Conwell。学习使用梯度下降来学习。在《Lecture Notes on Comp. Sci. 2130, Proc. Intl. Conf. on Artificial Neural Networks》(ICANN-2001) 中,第 87-94 页。施普林格:柏林,海德堡,2001 年。
李国豪、哈桑·阿贝德·卡德尔·哈穆德、哈尼·伊塔尼、德米特里·希兹布林和伯纳德·加内姆。骆驼:大规模语言模型社会的“心智”探索的交际智能体。arXiv 预印本,2023 年。
Yujia Li, David Choi, Junyoung Chung, Nate Kushman, Julian Schrittwieser, Remi Leblond, Tom' Eccles,James Keeling, Felix Gimeno, Agustin Dal Lago, et al. 使用 alphacode 生成竞赛级代码。 科学, 2022.
田亮, 何志伟, 焦文祥, 王星, 王彦, 王瑞, 杨玉九, 涂兆鹏, 石淑明.通过多智能体辩论鼓励大型语言模型中的发散性思维。arXiv 预印本,2023 年。
Bill Yuchen Lin, Yicheng Fu, Karina Yang, Prithviraj Ammanabrolu, Faeze Brahman, Shiyu Huang, Chandra Bhagavatula, Yejin Choi, and Xiang 任.Swiftsage:一种生成式智能体,具有快速和慢速思维,适用于复杂的交互式任务。 arXiv 预印本,2023 年。
刘瑞博, 杨瑞欣, 贾晨彦, 张戈, 丹尼周, 戴伟文, 杨迪义, 和Soroush Vosoughi.在模拟人类社会中训练社会一致的语言模型。 arXiv 预印本 arXiv:2305.16960, 2023.
罗子阳, 徐灿, 赵璲, 孙庆峰, 耿秀波, 胡文香, 陶重阳, 马静, 林庆伟, 和 江大新.Wizardcoder:使用evol-inform为大型语言模型赋能。 arXiv 预印本 arXiv:2306.08568, 2023.
Potsawee Manakul、Adian Liusie 和 Mark JF Gales。Selfcheckgpt:生成式大型语言模型的零资源黑盒幻觉检测。arXiv 预印本 arXiv:2303.08896, 2023.
敏捷宣言。敏捷软件开发的宣言。犹他州雪鸟,2001 年。
约翰·麦卡锡。lisp的历史。在编程语言史中,第 173-185 页。1978年。
Ansong Ni,Srini Iyer,Dragomir Radev,Veselin Stoyanov,温 Yih,Sida Wang和习 Victoria Lin。 杠杆:学习通过执行验证语言到代码的生成。在 ICML 中,2023 年。
Erik Nijkamp, Bo Pang, Hiroaki Hayashi, Lifu Tu, Huan Wang, Yingbo 周, Silvio Savarese, and Caim Xiong.Codegen:具有多回合程序合成的开放式大型代码语言模型,2023 年。
OpenAI的。GPT-4 技术报告,2023 年。
朴俊成、约瑟夫·奥布莱恩、蔡嘉莉、梅雷迪思·林格尔·莫里斯、珀西·梁和迈克尔·伯恩斯坦。生成智能体:人类行为的交互式模拟。arXiv 预印本,2023 年。
陈倩, 新聪, 杨成, 陈伟泽, 苏宇生, 徐菊媛, 刘志远, 孙茂松.软件开发的交际智能体, 2023.
Baptiste Roziere, Jonas Gehring, Fabian Gloeckle, Sten Sootla, Itai Gat, Xiaoqing Ellen Tan, Yossi' Adi,Jingyu Liu, Tal Remez, Jer' emy Rapin, et al. Code llama: Open foundation models for code.' arXiv 预印本arXiv:2308.12950, 2023.
蒂莫·希克、简·德维维迪-尤、罗伯托·德斯伊、罗伯塔·莱莱努、玛丽亚·洛梅利、卢克·泽特勒莫耶、尼古拉·坎塞达和托马斯·夏洛姆。工具塑造者:语言模型可以自学使用工具。arXiv 预印本,2023 年。
J.施密德胡伯。自参照权重矩阵。在 人工神经网络国际会议论文集,阿姆斯特丹,第 446-451 页。Springer,1993年a。
J.施密德胡伯。哥德尔机器:自我参照的通用问题解决者,可证明“最佳自我改进”。技术报告IDSIA-19-03,arXiv:cs.LO/0309048 v3,IDSIA,瑞士曼诺-卢加诺,2003年12月。
J.施密德胡伯。哥德尔机器:完全自参照的最优通用自我改进器。在 B. Go- ̈ ertzel 和 C. Pennachin(编辑)中, 通用人工智能,第 199-226 页。施普林格出版社,2006 年。变体可作为 arXiv:cs.LO/0309048 获得。
J.施密德胡伯。终极认知 a la' Godel. 认知 计算, 1(2):177–193, 2009.
尤尔根·施密德胡贝尔(Jurgen Schmidhuber)。̈ 自我参照学习的进化原则,或学习如何学习的进化原则:元元-...钩子。博士论文,工业大学,1987年。
尤尔根·施密德胡贝尔(Jurgen Schmidhuber)。一个“自参照”权重矩阵。在̈ ICANN'93:荷兰阿姆斯特丹人工神经网络国际会议论文集,1993 年 9 月 13 日至 16 日,第 3 期,第 446–450 页。Springer,1993年b。
尤尔根·施密德胡伯(Jurgen Schmidhuber)。̈ 关于学习思考:强化学习控制器和循环神经世界模型的新组合的算法信息理论。 arXiv 预印本 arXiv:1511.09249, 2015.
Jurgen Schmidhuber、Jieyu Zhao 和 Nicol N Schraudolph。 ̈ 使用自我修改策略进行强化学习。在 《学会学习》中,第293-309页。斯普林格,1998 年。
诺亚·希恩、贝克·拉巴什和阿什温·戈皮纳特。Reflexion:具有动态记忆和自我反思的自主智能体。arXiv 预印本,2023 年。
玛莎·斯克雷塔、吉川鸣树、塞巴斯蒂安·阿雷拉诺-鲁巴赫、吉志、拉塞·比约恩·克里斯滕森、库罗什·达维什、艾伦·阿斯普鲁-古齐克、弗洛里安·什库尔蒂和阿尼梅什格。错误是有用的提示:使用验证器辅助迭代提示的指令引导任务编程。 arXiv 预印本,2023 年。
埃利奥特·索洛韦。学习编程= 学习构建机制和解释。 ACM通讯, 29(9):850–858, 1986.
Torantulino等人。 https://github.com/Significant-Gravitas/ Auto-GPT,2023 年。
RJ Waldinger和 R. C. T. Lee。PROW:迈向自动程序编写的一步。在 D. E. Walker 和 L. M. Norton(编辑)中, 第一届国际人工智能联合会议 (IJCAI) 会议记录,第 241-252 页。摩根·考夫曼(Morgan Kaufmann),1969年。
王冠志, 谢玉琪, 江云帆,Ajay Mandlekar, 肖超伟, 朱玉珂, 樊林熙, 和 阿尼玛·阿南德库玛.Voyager:具有大型语言模型的开放式具身智能体。 arXiv 预印本,2023a。
王磊, 马陈, 冯雪阳, 张泽宇, 杨昊, 张景森, 陈志远, 唐佳凯, 陈徐, 林彦凯, 等.关于基于大型语言模型的自治智能体的调查。arXiv 预印本 arXiv:2308.11432, 2023b。
王振海龙, 毛绍光, 吴文山, 陶哥, 魏傅如, 和吉恒.在大型语言模型中释放认知协同作用:通过多角色自我协作实现任务解决智能体。arXiv 预印本,2023c。
Jason Wei, Xuezhi Wang, Dale Schuurmans, Maarten Bosma, Fei Xia, Ed Chi, Quoc V Le, Denny 周, et al. 思维链提示在大型语言模型中引发推理. NeurIPS,2022 年。
迈克尔·伍尔德里奇(Michael Wooldridge)和尼古拉斯·詹宁斯(Nicholas R. Jennings)。面向智能体开发的陷阱。第二届自治智能体国际会议论文集,1998年。网址 https:
doi.org/10.1145/280765.280867。
Shunyu Yao、Jeffrey Zhao、Dian Yu、Nan Du、Izhak Shafran、Karthik Narasimhan 和 Yuan Cao。React:在语言模型中协同推理和行动。 arXiv 预印本,2022 年。
埃里克·泽利克曼、埃莉安娜·洛奇、莱斯特·麦基和亚当·陶曼·卡莱。自学优化器(stop):递归自我改进的代码生成。arXiv 预印本 arXiv:2310.02304, 2023.
张宏新, 杜卫华, 单家明, 周秦弘, 杜一伦,Joshua B Tenenbaum, 舒天民, 和赣闯.使用大型语言模型以模块化方式构建协作式具身智能体。 arXiv 预印本,2023 年。
赵旭峰、李梦迪、科尼利厄斯·韦伯、穆罕默德·布尔汉·哈菲兹和斯特凡·韦尔姆特。与环境聊天:使用大型语言模型的交互式多模态感知。arXiv 预印本,2023 年。
郑勤凯, 夏晓, 邹旭, 董玉晓, 王珊, 薛雨飞, 王子涵, 沈磊, 王安迪, 李阳, 苏腾, 杨志林, 唐杰.Codegeex:用于代码生成的预训练模型,在humaneval-x 上进行多语言评估,2023 年。
Shuyan周, Frank F Xu, Hao Zhu, Xuhui 周, Robert Lo, Abishek Sridhar, Xianyi Cheng, Yonatan Bisk,Daniel Fried, Uri Alon, et al. Webarena:用于构建自主智能体的现实 Web 环境。 arXiv 预印本,2023 年。
Mingchen Zhuge, Haozhe Liu, Francesco Faccio, Dylan R Ashley, Robert Csord' as, Anand' Gopalakrishnan,Abdullah Hamdi, Hasan Abed Al Kader Hammoud, Vincent Herrmann, Kazuki Irie, et al. 基于自然语言的思维社会中的头脑风暴. arXiv 预印本 arXiv:2305.17066, 2023.
A 展望
本文正文中MetaGPT版本的一个局限性是每个软件项目都是独立执行的。但是,通过积极的团队合作,软件开发团队应该从开发每个项目中获得的经验中学习,从而随着时间的推移变得更加兼容和成功。
这在某种程度上与递归自我改进的思想有关,该思想最初是非正式地在
1965年(Good,1965 年),自 1987 年以来首次具体实施(Schmidhuber,1987 年; 1993年b;Schmidhuber 等人。,1998),最终形成了数学上最优的自我参照自我改进者的概念(Schmidhuber,2003; 2009 年)。一般来说,一个系统应该从现实世界的经验中学习,从学习的经验中元学习更好的学习算法,从元学习的经验中元学习更好的元学习算法,等等,除了可计算性和物理之外,没有任何限制。
最近的一些相关工作利用了大型语言模型(LLM)的推理能力,并递归地改进了LLM的提示,以提高某些下游任务的性能(Fernando et al.,2023 年; Zelikman等人。,2023),类似于 2015 年的自适应提示工程师(Schmidhuber, 2015),其中一个神经网络学习为另一个预训练的神经网络生成查询或提示序列,其答案可能有助于第一个网络更快地学习新任务。
在我们目前的工作中,我们还探索了一种自引用机制,该机制根据智能体在软件开发过程中观察到的信息递归修改智能体的约束提示。我们的初始实现工作原理如下。在每个项目之前,软件公司的每个智能体都会查看以前的反馈,并对他们的约束提示进行必要的调整。这使他们能够不断从过去的项目经验中学习,并通过改进公司中的每个人来增强整体多智能体系统。我们首先为每个智能体建立交接反馈操作。此操作负责批判性地总结在以前项目开发过程中收到的信息,并将此信息集成到更新的约束提示中。汇总的信息存储在长期内存中,以便将来的约束提示更新可以继承它。启动新项目时,每个智能体都以 react 操作启动。每个智能体都会评估收到的反馈,并总结他们如何在约束提示中进行改进。
当前的一个局限性是,这些基于摘要的优化仅修改角色专用化中的约束(Sec. 3.1)而不是通信协议中的结构化通信接口(Sec. 3.2)。未来的进展还有待探索。
在现实世界的团队合作中,交互过程通常不是硬编码的。例如,在软件公司中,协作 SOP 可能会动态更改。
在关于“基于自然语言的心灵社会”(NLSOM)的论文中讨论了这种自组织的一种实现(诸葛等人。,2023年),它引入了“思想经济”(EOM)的概念,这是一个针对 LLM 和其他智能体人社会的强化学习 (RL) 框架。EOM不是使用标准的RL技术通过修改神经网络参数来优化系统的总奖励,而是使用自由市场中的供求原则将信用(货币)分配给那些有助于经济成功(奖励)的智能体。
DeepWisdom(AgentStore) 最近基于智能体的平台[1]与 EOM 的信用分配概念兼容。AgentStore 中的每个智能体都提供具有相应成本的服务列表。提供了一个方便的API,以便平台中的人类用户或智能体可以轻松地从其他智能体处购买服务来完成他们的服务。图 6 显示了 AgentStore 的用户界面 (UI),其中展示了具有不同技能的各种智能体。此外,个人开发人员可以参与构建新的智能体,并在社区内实现协作开发。具体来说,AgentStore 允许用户根据自己的需求订阅智能体,并根据他们的使用情况付费。此外,用户可以购买额外的功能来扩展其现有智能体的即插即用功能。这允许用户逐步升级他们的智能体。在 MetaGPT 框架内,AgentStore 可以支持各种智能体的协作。用户可以将多个智能体聚集在一起以执行更复杂的任务或项目,并且所有智能体共享并遵守 MetaGPT 中定义的开发和通信协议。
图 6:AgentStore 是一个致力于在 MetaGPT 框架内为用户创建和开发智能体提供服务的平台。该平台为用户提供了一个操作界面,允许用户轻松管理具有不同情绪、个性和特定任务能力的各种智能体。
B 执行演示
在本节中,我们概述了使用 MetaGPT 进行软件开发的完整过程。它从用户的输入命令(如附录 B.1 所示)开始,到根据用户规格设计的软件结束。
在收到用户的指示后,MetaGPT 会与专业开发团队合作完成任务。以下是用户输入的演示:
现在,我们将逐步说明每个智能体的标准化输出过程。
产品经理PD。产品经理生成产品需求文档 (PRD),详见指定文档。本文档包括目标、用户故事、竞争分析、需求分析和需求池。此外,还生成了竞争象限图(见图 7)。随后,这些文档和图表被移交给架构师进行系统设计。
图 7:产品经理智能体生成的“绘图应用程序”的象限图。
架构师. 根据铁三角的要求,架构师智能体设计技术规范,包括系统架构图和接口定义。最初,架构师定义总体技术轨迹。随后,设计了项目的架构,包括文件、类(图 8)和序列流程图(图 12)。然后,架构师的文档将提供给项目经理,以便分配和执行任务。
图 8:架构师智能体生成的“绘图应用程序”的数据结构和接口定义。
项目经理。项目经理将项目分解为任务列表。此外,每个代码文件都根据其预期功能进行分析,然后将其视为分配给工程师的单独任务。
图 9:架构师智能体生成的“绘图应用程序”的程序调用流 。
软件工程师. 给定提供的文件结构和功能定义,工程师智能体只需要基本的开发技能即可完成开发任务。由于文件数量众多,我们在这里只提供一个自动生成的代码文件。
QA工程师。 在收到工程师的代码输出后,QA工程师会生成单元测试代码并对其进行审查,以识别和修复任何错误,从而确保高质量的软件。
输出。最终,如图 10 所示,MetaGPT 生成了一个名为“Drawing App”的功能应用程序。
Figure 10: The “Drawing App” generated by MetaGPT.
C 实验
SoftwareDev数据集包括 70 个不同的软件开发任务。数据集 中 11 个任务的名称和详细提示如表 5 所示。请注意,列出的前七个任务用于本文的主要实验。
MetaGPT的定量结果. 如表 4所示,MetaGPT的平均得分为3.9分,超过了ChatDev的2.1分 。 (2023),它基于聊天链。比较通用智能算法的分数,包括 AutoGPT Torantulino 等人。 (2023),得分均为 1.0,无法生成可执行代码。我们观察到生成的代码通常很短,缺乏全面的逻辑,并且往往无法正确处理跨文件依赖关系。
而 AutoGPT 等模型(Torantulino 等人。,2023 年)、Langchain(Chase,2022 年)和 AgentVerse(Chen 等人。,2023)表现出强大的一般问题解决能力,他们缺乏开发复杂系统的基本要素:系统地解构需求。相反,MetaGPT 通过专门的分工和 SOP 工作流程简化了将抽象需求转换为详细的类和功能设计的过程。与ChatDev (Zhao et al.,2023),MetaGPT 的结构化消息传递和反馈机制不仅减少了通信信息的丢失,还提高了代码的执行。
没有可执行反馈的 MetaGPT 的定量结果 表 6 显示了 MetaGPT 在 SoftwareDev 数据集中 11 项任务中使用GPT-4 32K 的性能。它还显示所有 70 个任务的平均性能(在最后一行)。请注意,这里使用的 MetaGPT 版本是没有可执行反馈机制的基本版本。
定性结果.图 11 和图 12 说明了架构师智能体设计复杂推荐系统的结果。这些数字展示了全面的系统接口设计和程序调用流程。后者对于创建复杂的自动化系统至关重要。在开发自动化软件框架时,强调这种分工的重要性至关重要。
表 4: 可执行性比较。 可执行性分数采用从“1”到“4”的评分系统。“1”表示完全失败,“2”表示可执行代码,“3”表示基本满足预期的工作流程,“4”表示与预期完全匹配。
任务 |
AutoGPT |
LangChain |
AgentVerse |
ChatDev |
MetaGPT |
Flappy bird |
1 |
1 |
1 |
2 |
3 |
Tank battle game |
1 |
1 |
1 |
2 |
4 |
2048 game |
1 |
1 |
1 |
1 |
4 |
Snake game |
1 |
1 |
1 |
3 |
4 |
Brick breaker game |
1 |
1 |
1 |
1 |
4 |
Excel 数据处理 |
1 |
1 |
1 |
4 |
4 |
CRUD管理 |
1 |
1 |
1 |
2 |
4 |
平均得分 |
1.0 |
1.0 |
1.0 |
2.1 |
3.9 |
图 11:架构师智能体生成的“推荐引擎开发”的系统界面设计 (放大以获得更好的视图)。
图 12:架构师智能体生成的“推荐引擎开发”程序调用流 (放大以获得更好的视图)。
表 5:SoftwareDev 数据集的示例。
任务 ID 任务 |
提示词Prompt |
0 Snake game |
Create a snake game. |
1 Brick breaker game |
Create a brick breaker game. |
2 2048 game |
Create a 2048 game for the web. |
3 Flappy bird game |
Write p5.js code for Flappy Bird where you control a yellow bird continuously flying between a series of green pipes. The bird flaps every time you left click the mouse. If it falls to the ground or hits a pipe, you lose. This game goes on indefinitely until you lose; you get points the further you go. |
4 Tank battle game |
Create a tank battle game. |
5 Excel 数据处理 |
编写基于 streamlit 和 pandas 的 excel 数据处理程序。屏幕首先显示一个 excel 文件上传按钮。excel文件上传完成后,使用pandas展示其数据内容。该程序要求简明扼要,易于维护,并且不要过度设计。它使用 streamlit 处理 Web 屏幕显示,而 pandas 足以处理 excel 阅读和显示。请确保其他人可以直接执行,而无需引入额外的包。 |
6 CRUD管理 |
根据客户业务实体的增删、修改和查询处理,编写管理程序。客户需要保存以下信息:姓名、生日、年龄、性别和电话。数据存储在client.db中,判断客户表是否存在。如果没有,则需要先创建它。查询是按名称完成的;删除也一样。该程序要求简明扼要,易于维护,并且不要过度设计。屏幕是通过 streamlit 和 sqlite 实现的,无需引入其他附加包。 |
7 音乐转录员 |
开发一个程序将乐谱转录为数字格式;通过涉及音高和时间切片的信号处理,提供从音频到无差错的转录符号化乐谱智能,然后训练神经网络运行 Onset Detected CWT,将标度图转换为使用递归神经网络聚焦网络解码的色谱图。 |
8定制新闻稿 |
创建自定义新闻稿;开发一个 Python 脚本,从外部来源(如社交媒体)提取有关公司新闻的相关信息;提取最近更改的更新间隔数据库。该程序应创建具有可自定义选项的新闻稿,并将文章导出为 PDF、纽约时报 API JSON、带有内部固定字符长度元数据的媒体格式。 |
9 Gomoku game |
Implement a Gomoku game using Python, incorporating an AI opponent with varying difficulty levels. |
10 天气仪表板 |
创建一个 Python 程序来开发交互式天气仪表板。 |
D:附录 MetaGPT GitHub安装
Pip安装
确保您的系统已安装 Python 3.9 或更高版本。您可以使用以下命令来检查:python --version。
您可以这样使用 conda:conda create -n metagpt python=3.9 && conda activate metagpt
pip install metagpt
metagpt --init-config# 创建 ~/.metagpt/config2.yaml,根据您的需求修改它
metagpt "创建一个 2048 游戏" # 这将在 ./workspace 创建一个仓库
或者您可以将其作为库使用
from metagpt.software_company import generate_repo, ProjectRepo
repo: ProjectRepo = generate_repo("创建一个 2048 游戏") # 或 ProjectRepo("<路径>")
print(repo)# 它将打印出仓库结构及其文件
详细的安装请参考 cli_install
Docker安装
注意:在Windows中,你需要将 "/opt/metagpt" 替换为Docker具有创建权限的目录,比如"D:\Users\x\metagpt"
#步骤1: 下载metagpt官方镜像并准备好config2.yaml
docker pull metagpt/metagpt:latest
mkdir -p /opt/metagpt/{config,workspace}
docker run --rm metagpt/metagpt:latest cat /app/metagpt/config/config2.yaml > /opt/metagpt/config/config2.yaml
vim /opt/metagpt/config/config2.yaml #修改配置文件
#步骤2: 使用容器运行metagpt演示
docker run --rm \
--privileged \
-v /opt/metagpt/config/config2.yaml:/app/metagpt/config/config2.yaml \
-v /opt/metagpt/workspace:/app/metagpt/workspace \
metagpt/metagpt:latest \
metagpt "Write a cli snake game"
详细的安装请参考 docker_install
快速开始的演示视频
在 MetaGPT Huggingface Space 上进行体验
Matthew Berman: How To Install MetaGPT - Build A Startup With One Prompt!!
官方演示视频
customized_tasks_by_MetaGPT_v2.mp4
教程
? 在线文档
? 如何使用
? MetaGPT的能力及应用场景
? 如何构建你自己的智能体?
MetaGPT的使用和开发教程 | 智能体入门
MetaGPT的使用和开发教程 | 多智能体入门
引用
如果您在研究论文中使用 MetaGPT 或 Data Interpreter,请引用我们的工作:
@misc{hong2023metagpt,
title={MetaGPT: Meta Programming for Multi-Agent Collaborative Framework},
author={Sirui Hong and Xiawu Zheng and Jonathan Chen and Yuheng Cheng and Jinlin Wang and Ceyao Zhang and Zili Wang and Steven Ka Shing Yau and Zijuan Lin and Liyang Zhou and Chenyu Ran and Lingfeng Xiao and Chenglin Wu},
year={2023},
eprint={2308.00352},
archivePrefix={arXiv},
primaryClass={cs.AI}
}
@misc{hong2024data,
title={Data Interpreter: An LLM Agent For Data Science},
author={Sirui Hong and Yizhang Lin and Bang Liu and Bangbang Liu and Binhao Wu and Danyang Li and Jiaqi Chen and Jiayi Zhang and Jinlin Wang and Li Zhang and Lingyao Zhang and Min Yang and Mingchen Zhuge and Taicheng Guo and Tuo Zhou and Wei Tao and Wenyi Wang and Xiangru Tang and Xiangtao Lu and Xiawu Zheng and Xinbing Liang and Yaying Fei and Yuheng Cheng and Zongze Xu and Chenglin Wu},
year={2024},
eprint={2402.18679},
archivePrefix={arXiv},
primaryClass={cs.AI}
}
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-03-30
2024-04-26
2024-05-10
2024-05-28
2024-04-12
2024-04-25
2024-05-14
2024-08-13
2024-07-18
2024-05-06