MetaGPT 是一个开源的多智能体框架,它协调使用人类程序知识和由大型语言模型 (LLM) 驱动的 AI 智能体来开发各种软件解决方案。作为一家 AI 软件公司,MetaGPT 拥有专门的 AI 智能体 ,其角色与传统软件公司类似。
MetaGPT 是吴承霖创立的 DeepWisdom 公司的专有技术。该框架在 GitHub 上迅速流行起来,引起了人们对 MetaGPT 利用多智能体系统 (MAS) 推动自然语言编程进步的根本目标的兴趣。
热门研究论文“MetaGPT:多智能体协作框架的元编程”解释了该框架对智能体协作的编排。 随着围绕 LLM 协调和 AI 智能体的研究不断深入,MetaGPT 作为早期的贡献者,通过使用熟悉的工作流,为多智能体协作提供了一种直接的方法。
在多智能体系统 (MAS) 中行动的智能体保持自主,但也在智能体结构或诸如 MetaGPT 之类的框架中进行合作和协调。1 MAS协调各个智能体在其环境中运行和交互,以完成复杂的任务,从而实现共同的目标。这个想法是集体智能的一部分,这是一个流行的概念,有时与 AGI 有关。
多智能体系统由解决问题的智能体网络组成,这些智能体协同工作以应对超出任何单个智能体能力的挑战。2 设计有效的 MAS 的关键挑战之一是协调智能体,确保它们为共同目标而协作。成功的协作取决于每个智能体解决单个任务的能力,以及相互有效交互的能力。3
规划 MAS 环境的注意事项包括:
应对这一设计挑战的方法之一是通过明确的团队合作建模来协调智能体协作。这种多协作设计模式分解了复杂的提示,并将抽象的任务委托给智能体,智能体根据其专业角色执行这些任务。5
在 MetaGPT 的框架内,一组 AI 智能体按照由定义不同角色和指令的标准操作程序 (SOP) 指导的工作流进行操作。通过在 LLM 驱动的多智能体系统中集成通信协议和简化的工作流,用户可以通过单行输入创建应用程序。
MetaGPT 是一个多智能体协作框架,能够解决复杂的任务。多智能体协作框架的工作原理是使用专门的智能体来模拟整个软件公司,这些智能体基于标准操作程序和装配线范例进行交互以分解任务。每个智能体根据其在软件公司中的职能扮演专门的角色。例如,该框架中的智能体可充当产品经理、架构师、项目经理和工程师,提供软件公司的整个流程。
这些智能体担任不同的角色,在虚拟工作空间中运行,将单线需求作为各种软件解决方案的输入和输出。此输入包括数据结构、应用程序编程接口 (API)、竞争分析和文档。智能体根据装配线范式设定的要求,通过结构化输出进行通信。每个智能体都会生成必要的信息,提示下一个智能体完成集体目标:根据用户提示生成软件应用程序。这种增量式开发过程得益于 MetaGPT 如何集成人类工作流,以简化复杂任务的协调。
标准操作程序 (SOP) 在支持任务分解和有效协调方面发挥着至关重要的作用,因此已被各个领域所采用。6在软件开发中,SOP 将项目任务分解成更小的行动进程,然后分配给特定的专门角色,从而促进团队之间的协作。MetaGPT 将 SOP 编码为提示序列,以组织和促进多智能体工作流。SOP 工作流引入了结构和改进的机会。
例如,系统提示项目经理智能体创建产品需求文档 (PRD)。由于项目采用增量式开发,产品经理智能体会收到一次提示,然后会被要求完善 PRD 的某些互素。例如,智能体被指示在 PRD 中创建一个“产品目标”部分。然后,通过更新最初的产品目标,确保这些目标与当前的项目方向保持一致,从而再次提示其完善这些目标。7 该优化方法用于确保全局任务在所有智能体中被正确识别并保持内聚性。
在下面的示例中,产品经理智能体被提示生成需求分析。在此初始提示之后,将提示智能体生成完善的分析报告,将任何协作中的新功能和增强功能考虑在内。
需求分析提示说明:“提供详细的需求分析。”8
完善的分析提示说明: “审查现有的需求分析,将其细分为字符串列表,以适应项目因增量式开发而不断变化的需求。确保分析全面涵盖细化项目范围所需的新功能和增强功能。”9
本示例演示了作为标准化输出生成的 PRD,该 PRD 由产品经理智能体传递给架构师智能体。每个生成的输出结果旁边会列出基于 SOP 的提示。请注意,提示同样基于 SOP 工作流,包括要求定义、任务完成方法以及完成顺序:
用户提示: “为我构建一个基于 React 应用的 Web 应用程序,供财富经理用来审查客户投资组合,并为客户推荐合适的基金。该应用程序需要在美国、英国和西班牙运行。”
原始需求
提示说明:“将原始用户的需求放在此处。” 10
“为我构建一个基于 React 的应用程序网络应用程序,供财富经理用来审查客户的组合,并推荐合适的基金供他们使用。该应用程序需要在美国、英国和西班牙运行。”
产品目标
提示说明:“提供最多三个清晰、正交的产品目标。” 11
用户故事
提示说明:“提供最多 3 到 5 个基于场景的用户故事。”12
竞争分析
提示说明:“提供 5 到 7 种竞争产品。”13
需求分析
提示说明:“提供详细的需求分析。”14
该应用程序必须使用 React 构建,确保其可扩展且可维护。它应该有一个多语言界面,以满足美国、英国和西班牙的用户的需求。该应用程序必须安全,保护敏感的财务数据,并遵守地区法规。它还应与各种金融数据源集成,以提供实时投资组合分析和基金建议。
需求池
提示说明: “列出前 5 到 7 个需求及其优先级 (P0、P1、P2)。”,“涵盖旧内容和增量内容。保留与增量式开发无关的内容。” 15
用户界面设计稿
提示说明:“请简单描述一下用户界面元素、功能、风格和布局。”16
该用户界面将采用简洁而现代的设计,仪表板可概述客户投资组合。它将包括用于投资组合分析的交互式图表、用于选择基金的推荐部分,以及在英语和西班牙语之间轻松切换。
任何不清楚的内容
提示说明:“提及项目中不明确的方面,并尝试加以澄清。”17
目前没有不清楚的方面。
以上示例是移交给架构师智能体进行设计,以下是与 PRD 一起给出的基于 SOP 的提示:
“这是产品需求文档(PRD):基于此 PRD 审查此 API 设计是否满足 PRD 的要求,以及是否符合良好设计实践。” 18
架构师遵循自己的 SOP 工作流,为应用程序设计系统。
SOP 概述了每个智能体角色的职责,并建立了中间输出的标准。这些 SOP 随后会被编码,以影响智能体的行为。这种做法使智能体能够生成结构化输出,例如高质量的需求文档、设计工件、流程图和接口规范。所有智能体之间的交接必须遵守某些既定标准,以减少由于 LLM 之间的闲聊而导致的幻觉风险。结构化输出的使用大大提高了目标代码生成的成功率。19
MetaGPT 内的所有智能体都作为员工,必须遵循严格且简化的工作流。SOP 中有两个主要部分定义智能体的行为:智能体角色专业化和跨智能体的工作流。
智能体角色专业化:MetaGPT 为软件公司定义了五个角色:产品经理、架构师、项目经理、工程师和质量保证工程师。每个智能体的配置文件都会初始化特定信息,包括智能体名称、个人资料、目标、角色约束,以及每个角色的具体背景和技能。20每个智能体都像一个在环境中行动的数字有机体。21 预定义角色的概念不同于 CrewAI 等多智能体框架,后者允许用户定义智能体在团队中的功能,以实现更通用的用例。
跨智能体的工作流: 定义智能体的角色和操作技能,为智能体在软件开发过程中建立基本工作流提供依据。智能体按照顺序或流水线模式工作,以分解复杂的任务,从而提高团队的效率。
MetaGPT 认为,有意义的协作需要有效、连贯和准确的问题解决流程。AI 智能体是复杂的系统;但它们的流程并不一定复杂,至少根据 MetaGPT 及其对人类直接工作流的继承,情况并非如此。
通信协议
智能体在称为通信协议的结构化通信接口内进行交互。MetaGPT 与大多数基于 LLM 的多智能体框架不同,它不使用无约束的自然语言作为通信接口,而是建议使用结构化通信来制定智能体之间的交互。例如,在另一个多智能体协作框架 ChatDev 中,智能体通过对话进行 通信,而 MetaGPT 中的智能体通过结构化输出(如文档和图表)进行通信。
为了促进这一通信协议,MetaGPT 为每个智能体建立了模式和格式,并要求每个不同的角色根据其具体目标和上下文提供必要的输出。22 在一个示例中,架构师智能体生成两个输出:系统接口设计和顺序流程图。两种输出均包含系统模块设计和交互序列,它们是工程智能体最重要的可交付成果。23
发布和订阅机制
为了提高通信效率,MetaGPT 使用全局消息池来存储信息,使智能体可以直接交换消息。智能体在池中发布自己的结构化消息,并且可以透明地访问来自其他智能体的消息。这种方法使智能体能够直接从共享池中获取必要的信息,而无需询问其他智能体并等待它们的回复。24
开发过程开始于用户输入命令,结束于根据用户规范设计的软件。例如,用户的输入可能是“编写一个 Python 图形用户界面应用程序,以用于绘制图像”。用户提示被传递给软件公司,这是一个由角色扮演智能体组成的团队,其中包括产品经理、架构师、项目经理、工程师、质量保证工程师。
在收到用户提示构建特定软件应用程序后,产品经理生成一个 PRD,其中包含目标、用户案例、竞争分析、需求分析和需求池。此外,产品经理智能体还会根据应用程序中的规格生成一个竞争四象限图表。这些文件和图表将移交至架构师智能体进行系统设计。
架构师智能体根据产品需求文档(PRD)中的要求制定技术规范。技术规范包括系统架构图和接口定义,涵盖项目的整体技术路线。项目的架构,包括文件、类和序列流程图,都是根据架构师智能体的技术定义设计的。然后,架构师生成的文档将提供给项目经理进行任务分配和执行。
项目经理在任务列表中分解项目。每个代码文件都根据其预期功能进行分析,然后作为单独的任务分配给工程师。
工程师智能体生成具有基本开发技能所需的代码,以完成开发任务。收到工程师智能体的输出代码后,质量保证工程师智能体会生成单元测试代码并对其进行审查,以识别和修复任何错误。
MetaGPT 的智能体基于 OpenAI 的一系列 GPT(生成式预训练转换器)模型 GPT-3.5 和 GPT-4。不过,MetaGPT 及其开源社区已推动接入多款可通过 LLM API 配置初始化的其他模型。MetaGPT 提供了教程,方便用户在其 GitHub 文档网站上探索如何与开源 LLM 集成。集成 LLM 的第一步是设置一个推理存储库,例如 LLaMA-Factory、FastChat、Ollama 等。通过该资源库,可以部署通过其 API 凭据配置的相应 LLM 模型。除 Ollama 外,所有受支持的推理软件源都支持发布与 OpenAI 兼容的接口。MetaGPT 力求在未来支持 Ollama 接口。
元编程框架提供了创建程序的功能,这些程序可以编写、操作和分析其他程序以及程序本身。MetaGPT 通过融入人类工作流来实现这一目标,利用基于智能体的技术驱动生成式 AI,从而增强元编程能力。
基于 LLM 的智能体包含多个具有高级自动编程任务的核心功能。25这些进步包括 ReAct 和 Reflexion,它们是智能体使用的推理范式,采用思维链提示来生成 LLM 的推理轨迹和行动计划。26
ReAct 智能体设计循环展示了一个有效的自动编程过程,它的迭代设计循环赋予了智能体推理、行动和观察的能力。27 反思通过语言反馈来强化语言智能体,遵循类似的迭代设计循环,以诱导更好的决策。28这两种范式设计都允许智能体不断学习和改进工作流。
传统的 LLM,例如 OpenAI 的 GPT-3 模型、Meta 的 Llama 模型和 IBM Granite 模型,都在知识和推理方面受到限制。它们根据训练数据生成响应,而训练数据可能经常包含过时的信息。相比之下,智能体技术充分利用后端工具调用来获取当前信息、简化工作流并自主创建特定任务,以完成复杂的目标。在此过程中,自主智能体会逐渐学会适应用户的期望,提供量身定制的体验和更全面的响应。这种工具调用无需人工干预,从而扩展了这些 AI 系统在现实世界中的潜在应用。
MetaGPT 的工程师智能体通过可执行反馈参与迭代式编程。调试和优化是日常编程任务中至关重要的环节。其他实现方法缺乏智能体自我纠正机制,会导致代码幻觉或代码失效等不必要的结果。为了降低这些风险,MetaGPT 引入了一种可执行的反馈机制,以便在每次迭代时改进代码。
工程师根据原始产品需求和设计编写代码。这样,智能体就能利用自身的历史执行和调试内存,不断改进代码。工程师通过编写和执行相应的单元测试用例,获取更多信息来改进代码。收到结果后,工程师要么继续执行其他开发任务,要么在继续编程前调试代码。此迭代过程一直持续到测试通过或最多重试 3 次。29
crewAI – CrewAI 是一个开源的、基于 python 的多智能体框架,利用角色扮演的自主智能体协同工作,作为一个团队完成任务。用户可以根据应用需求或使用场景构建和定制智能体。典型应用场景包括通用目的,如内容规划与创作、数据分析和自动化任务。CrewAI 支持与 IBM 的 watsonx.ai 整合,并提供多个 LLM 整合以及与 Ollama 的兼容性。30
ChatDev – ChatDev 是一个开源多智能体框架,它通过担任不同组织角色的各种智能体来模拟虚拟软件公司的运作。智能体通过对话进行合作,生成包括可执行代码和文档在内的软件产品。ChatDev 支持 OpenAI 的 GPT-3.5-turbo 和 GPT-4 模型,为其智能体提供动力。31
AutoGPT – AutoGPT 是一个开源多智能体框架,它应用自然语言处理来理解用户目标和复杂的任务分解。智能体在工作流中协作,通过将每项任务分解为一系列较小的子任务来处理高级用户提示。用例包括通用解决方案,例如市场调研和分析、产品开发、虚拟协助等。该框架采用基于 OpenAI 的 GPT-4 的 AI 智能体构建。32
借助 IBM 业界领先的人工智能专业知识和解决方案组合,让人工智能在您的业务中发挥作用。
通过增加 AI 重塑关键工作流程和运营,最大限度提升体验、实时决策和商业价值。