通用人工智能
MetaGPT:当前最好的AI代理的完整指南

随着像ChatGPT这样的大型语言模型(LLM)的出现,OpenAI在企业和用户采用方面经历了一次激增,目前每月收入约为8000万美元。根据The Information的一份最近报告,总部位于旧金山的这家公司据报道正在朝着10亿美元的年度收入目标迈进。
上次我们深入探讨了AutoGPT和GPT-Engineering,这些是早期的主流开源LLM-based AI代理,旨在自动化复杂任务。虽然这些系统很有前景,但它们也存在一些问题:结果不一致,性能瓶颈,以及处理多方面需求的局限性。它们在代码生成方面表现出色,但它们的能力往往就此止步。它们缺乏关键的项目管理功能,如PRD生成、技术设计生成和API接口原型设计。
进入MetaGPT——一个由Sirui Hong创建的多代理系统,它利用大型语言模型,将标准操作程序(SOP)与LLM-based多代理系统相结合。这种新兴范式打破了LLM在促进有效合作和任务分解方面的现有局限性,特别是在复杂的现实世界应用中。
MetaGPT的美丽之处在于其结构。它利用元编程技术来操纵、分析和转换代码,从而实现实时操作。其目标是实现一个敏捷、灵活的软件架构,可以适应动态编程任务。
SOP作为一个元函数,在这里协调代理根据定义的输入自动生成代码。简单来说,这就像你把一个高度协调的软件工程师团队转变成一个适应性强、智能的软件系统。
理解MetaGPT框架

MetaGPT框架 (https://arxiv.org/pdf/2308.00352.pdf)
基础层和协作层
MetaGPT的架构分为两个层:基础组件层和协作层。
- 基础组件层:该层专注于个别代理操作,并促进系统范围内的信息交换。它引入了核心构建块,如环境、内存、角色、操作和工具。环境为共享工作空间和通信路径提供了基础,而内存则作为历史数据存档。角色封装了特定领域的专业知识,操作执行模块化任务,工具提供了常见的服务。该层本质上是代理的操作系统。更多关于这些组件如何协同工作的细节,请参见文章 ‘超越ChatGPT;AI代理:一个新的工作者世界‘
- 协作层:在基础组件之上,管理和简化了个别代理的协作努力。它引入了两个机制:知识共享和封装工作流。
- 知识共享:这作为代理之间的协作粘合剂。代理可以以不同的级别存储、检索和共享信息,从而减少冗余并提高运营效率。
- 封装工作流:这是标准操作程序(SOP)发挥作用的地方。SOP作为蓝图,将任务分解为可管理的组件。代理被分配这些子任务,并且其性能与标准化输出保持一致。
MetaGPT还使用 “角色定义” 来初始化各种专业代理,如产品经理、架构师等。这些角色由名称、个人资料、目标、约束和描述等关键属性来表征。
此外,”锚点代理” 为这些代理提供了特定于角色的指导。例如,产品经理的角色可能被初始化为具有 “高效创建成功产品” 的约束。锚点代理确保代理的行为与整体目标保持一致,从而优化性能。
MetaGPT代理的认知过程
MetaGPT可以观察、思考、反思和行动。它们通过特定的行为函数运作,如 _think()、_observe()、_publish_message() 等。这种认知建模使得代理能够成为主动学习者,可以适应和演化。
- 观察:代理扫描其环境,并将关键数据纳入其内存。
- 思考和反思:通过
_think()函数,角色在采取行动之前进行商议。 - 广播消息:代理使用
_publish_message()来共享当前任务状态和相关操作记录。 - 知识沉淀和行动:代理评估传入的消息,并在决定下一步行动之前更新其内部存储库。
- 状态管理:具有任务锁定和状态更新等功能,角色可以在不中断的情况下顺序处理多个操作,模拟现实世界中的人类协作。
MetaGPT的代码审查机制
代码审查是软件开发生命周期中的一个关键组成部分,但是在几个流行的框架中,它是缺失的。MetaGPT和 AgentVerse 都支持代码审查功能,但 MetaGPT更进一步。它还包含了预编译执行,这有助于早期错误检测,并随后提高代码质量。鉴于编码的迭代性质,这个功能不仅仅是一个附加功能,而是一个成熟的开发框架的要求。
在多个任务上进行的定量实验显示,MetaGPT在几乎所有场景中都优于其对手。Pass@1是框架生成准确代码的能力的衡量标准,在单次迭代中。这个指标提供了一个更现实的框架在实际环境中的实用性的反映。更高的Pass@1率意味着调试更少,效率更高,这直接影响了开发周期和成本。当与其他先进的代码生成工具(如 CodeX、CodeT 和甚至 GPT-4)进行比较时,MetaGPT 优于它们所有。该框架能够在 HumanEval 和 MBPP 基准测试中实现 81.7% 至 82.3% 的Pass@1率。
该框架还使用较少的令牌和计算资源,实现了高成功率,同时仅花费了传统软件工程成本的一小部分。数据表明,使用MetaGPT的平均成本仅为每个项目 1.09 美元,这只是开发人员为同一任务收取的费用的一小部分。
在系统上本地安装MetaGPT的步骤
NPM、Python安装
- 检查和安装NPM:首先,确保NPM已安装在您的系统上。如果没有,您需要安装 node.js。要检查是否安装了npm,请在终端中运行以下命令:
npm --version。如果您看到版本号,则表示一切正常。 - 要安装
mermaid-js(MetaGPT的依赖项),请运行:sudo npm install -g @mermaid-js/mermaid-cli或npm install -g @mermaid-js/mermaid-cli - 验证Python版本:确保您具有Python 3.9或更高版本。要检查Python版本,请在终端中输入:
python --version。如果您不够最新,请从 Python官方网站 下载最新版本。 - 克隆MetaGPT存储库:首先,使用以下命令克隆MetaGPT GitHub存储库:
git clone https://github.com/geekan/metagpt。确保您的系统中已安装Git。如果没有,请访问 这里。 - 导航到目录:克隆后,使用以下命令导航到MetaGPT目录:
cd metagpt。 - 安装:执行Python设置脚本以安装MetaGPT:
python setup.py install。 - 创建应用程序:运行
python startup.py "输入提示" --code_review True
注意:
- 您的新项目现在应该位于
workspace/目录中。 --code_review True将允许GPT模型执行额外的操作,这将确保代码准确运行,但请注意,这将花费更多。- 如果在安装过程中遇到权限错误,请尝试运行
python setup.py install --user作为替代方案。 - 要访问特定的版本和更多详细信息,请访问MetaGPT GitHub版本页面:MetaGPT版本。
Docker安装
对于那些喜欢容器化的人来说,Docker简化了这个过程:
- 拉取Docker镜像:下载MetaGPT官方镜像并准备配置文件:
docker pull metagpt/metagpt:v0.3.1mkdir -p /opt/metagpt/{config,workspace}docker run --rm metagpt/metagpt:v0.3.1 cat /app/metagpt/config/config.yaml > /opt/metagpt/config/key.yaml
vim /opt/metagpt/config/key.yaml
- 运行MetaGPT容器:使用以下命令执行容器:
docker run --rm --privileged \-v /opt/metagpt/config/key.yaml:/app/metagpt/config/key.yaml \-v /opt/metagpt/workspace:/app/metagpt/workspace \metagpt/metagpt:v0.3.1 \python startup.py "创建一个简单且交互式的CLI基于的石头、纸、剪刀游戏" --code_review True
使用OpenAI API密钥配置MetaGPT
在初始设置后,您需要将MetaGPT与您的OpenAI API密钥集成。以下是执行此操作的步骤:
- 找到或生成您的OpenAI密钥:您可以在OpenAI仪表板的API设置下找到此密钥。
- 设置API密钥:您可以将API密钥放在
config/key.yaml、config/config.yaml或将其设置为环境变量(env)。优先顺序为config/key.yaml > config/config.yaml > env。 - 要设置密钥,请导航到
config/key.yaml并将占位符文本替换为您的OpenAI密钥:OPENAI_API_KEY: "sk-..."
请记住保护您的OpenAI API密钥。永远不要将其提交到公共存储库或与未经授权的个人共享。
使用案例说明
我给出了开发一个CLI基于的石头、纸、剪刀游戏的目标,MetaGPT成功地执行了该任务。
以下是一个视频,展示了生成的游戏代码的实际运行。
MetaGPT演示运行
MetaGPT提供了一个系统设计文档,以Markdown格式书写——一种常用的轻量级标记语言。该Markdown文件中包含UML图,从而提供了对架构蓝图的详细视图。此外,API规范中包含了HTTP方法、端点、请求/响应对象和状态代码。
类图详细说明了 Game 类的属性和方法,提供了一个容易理解的抽象。它甚至可视化了程序的调用流程,有效地将抽象的想法转化为具体的步骤。
这不仅大大减少了规划方面的manual开销,还加速了决策过程,确保您的开发流水线保持敏捷。有了MetaGPT,您不仅实现了代码生成的自动化,还实现了智能项目规划,从而在快速应用开发中提供了竞争优势。
结论:MetaGPT——软件开发的革命
MetaGPT重新定义了生成性AI和软件开发的格局,提供了智能自动化和敏捷项目管理的无缝融合。它远远超越了ChatGPT、AutoGPT和传统的LangChain模型的能力,在任务分解、代码生成和项目规划方面都表现出色。了解更多
以下是本文的主要要点:
- 元编程的力量:通过采用元编程,MetaGPT提供了一个敏捷和适应性的软件框架。它超越了传统工具的狭隘功能,引入了一种变革性的方法,不仅处理编码,还处理项目管理和决策方面。
- 双层架构:通过其基础层和协作层,MetaGPT有效地创建了一个协同的生态系统,其中代理可以像专家软件团队一样协同工作。
- 优化的代码审查:除了生成代码,MetaGPT还提供了预编译执行的功能,基本上是一个早期错误检测系统。这不仅节省了调试时间,还确保了代码质量。
- 认知代理:MetaGPT的智能代理,具有
_observe()、_think()和_publish_message()等认知功能,使其成为主动学习者,可以适应和演化。 - 安装和部署:我们已经演示了MetaGPT可以通过npm和Python进行本地安装,也可以通过Docker进行容器化安装。
















