AGI 与未来 AI

MetaGPT:当前最好的AI代理的完整指南

mm
将 Unite.AI 添加到您在 Google 上的首选来源

随着大型语言模型(LLM)如ChatGPT的出现,OpenAI公司在企业和用户采用率方面经历了激增,目前每月收入约为8000万美元。根据The Information的一份最近报告,总部位于旧金山的公司据报道预计将达到10亿美元的年度收入。

上次我们探讨了AutoGPT和GPT-Engineering,这些是早期主流的开源LLM-based AI代理,旨在自动化复杂任务。虽然这些系统很有前景,但它们也存在一些问题:不一致的结果、性能瓶颈和处理多面需求的局限性。它们在代码生成方面表现出色,但它们的能力往往就此止步。它们缺乏像PRD生成、技术设计生成和API接口原型设计这样的关键项目管理功能。

现在,让我们介绍MetaGPT——一个多代理系统,利用大型语言模型和标准化操作程序(SOPs)来实现有效的合作和任务分解。这种新兴范式打破了LLM在复杂、现实世界应用中的局限性。

MetaGPT的美妙之处在于其结构。它利用元编程技术来操纵、分析和转换代码,从而实现一个敏捷、灵活的软件架构,可以适应动态编程任务。

敏捷开发 - MetaGPT

敏捷开发

SOPs在这里起到元函数的作用,协调代理根据定义的输入自动生成代码。简单来说,这就像你拥有一个高效协调的软件工程师团队,已经转化为一个可适应的智能软件系统。

理解MetaGPT框架

基础层和协作层

MetaGPT的架构分为两个层:基础组件层和协作层。

  1. 基础组件层:该层专注于个别代理操作,并促进系统范围内的信息交换。它引入了核心构建块,如环境、内存、角色、操作和工具。环境为共享工作空间和通信路径提供了基础,而内存则作为历史数据存档。角色封装了特定领域的专业知识,操作执行模块化任务,工具提供了公共服务。该层本质上是代理的操作系统。有关这些组件如何协同工作的更多详细信息,请参阅文章《超越ChatGPT;AI代理:一个新的工作者世界
  2. 协作层:建立在基础组件之上,该层管理和简化了个别代理的协作努力。它引入了两个机制:知识共享和封装工作流。
    • 知识共享:该机制作为代理之间的协作粘合剂。代理可以在不同层级存储、检索和共享信息,从而减少冗余并提高操作效率。
    • 封装工作流:这是标准化操作程序(SOPs)发挥作用的地方。SOPs作为蓝图,将任务分解为可管理的组件。代理被分配这些子任务,并且它们的性能与标准化输出保持一致。

MetaGPT还使用“角色定义”来启动各种专业代理,如产品经理、架构师等。这些角色由关键属性如名称、个人资料、目标、约束和描述来定义。

此外,“锚点代理”为这些代理提供了特定于角色的指导。例如,产品经理的角色可能被初始化为“高效地创建一个成功的产品”的约束。锚点代理确保代理的行为与整体目标保持一致,从而优化性能。

MetaGPT代理的认知过程

MetaGPT可以观察、思考、反思和行动。它们通过特定的行为函数运作,如_think()_observe()_publish_message()等。这种认知建模使代理能够成为主动学习者,可以适应和演化。

  1. 观察:代理扫描环境并将关键数据纳入内存。
  2. 思考和反思:通过_think()函数,角色在采取行动之前进行商议。
  3. 广播消息:代理使用_publish_message()共享当前任务状态和相关操作记录。
  4. 知识沉淀和行动:代理评估传入的消息并更新内部存储库,然后决定下一步行动。
  5. 状态管理:具有任务锁定和状态更新等功能,角色可以顺序处理多个操作而不会中断,模拟现实世界的人类协作。

MetaGPT的代码审查机制

代码审查是软件开发生命周期中的一个关键组件,但在几个流行框架中却缺失。MetaGPT和AgentVerse都支持代码审查功能,但MetaGPT更进一步。它还包含预编译执行,这有助于早期错误检测并提高代码质量。考虑到编码的迭代性质,这个功能不仅仅是一个附加功能,而是任何成熟开发框架的必备条件。

在多个任务上进行的定量实验表明,MetaGPT在几乎每种情况下都优于其同行。Pass@1是框架生成准确代码的能力的衡量标准,在单次迭代中。这个指标提供了一个更现实的框架在实际环境中的实用性的反映。更高的Pass@1率意味着调试更少、效率更高,这直接影响开发周期和成本。当与其他高级代码生成工具如CodeXCodeT和甚至GPT-4相比,MetaGPT都超越了它们。该框架在HumanEvalMBPP基准测试中实现了81.7%至82.3%的Pass@1率。

比较MBPP和HumanEval指标:MetaGPT与其他领先模型

比较MBPP和HumanEval指标:MetaGPT与其他领先模型 (https://arxiv.org/pdf/2308.00352.pdf)

该框架还使用较少的令牌和计算资源,实现了高成功率,同时仅需传统软件工程成本的一小部分。数据表明,使用MetaGPT的平均项目成本仅为1.09美元,这只是开发人员为同一任务收取的费用的一小部分。

在您的系统上本地安装MetaGPT的步骤

NPM和Python安装

  1. 检查和安装NPM:首先,确保NPM已安装在您的系统上。如果没有,您需要安装node.js。要检查您是否安装了npm,请在终端中运行以下命令:npm --version。如果您看到版本号,则表示您已安装。
  2. 要安装mermaid-js(MetaGPT的依赖项),请运行:sudo npm install -g @mermaid-js/mermaid-clinpm install -g @mermaid-js/mermaid-cli
  3. 验证Python版本:确保您安装了Python 3.9或更高版本。要检查Python版本,请在终端中输入:python --version。如果您尚未更新,请从Python官方网站下载最新版本。
  4. 克隆MetaGPT存储库:首先,使用以下命令克隆MetaGPT GitHub存储库:git clone https://github.com/geekan/metagpt。确保您的系统中已安装Git。如果没有,请访问这里
  5. 导航到目录:克隆后,使用以下命令导航到MetaGPT目录:cd metagpt
  6. 安装:执行Python设置脚本以安装MetaGPT:python setup.py install
  7. 创建应用程序:运行python startup.py "ENTER-PROMPT" --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.1
mkdir -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密钥集成。以下是步骤:

  1. 找到或生成您的OpenAI密钥:您可以在OpenAI仪表板的API设置下找到此密钥。
  2. 设置API密钥:您可以将API密钥放在config/key.yamlconfig/config.yaml或设置为环境变量(env)。优先顺序为config/key.yaml > config/config.yaml > env
  3. 要设置密钥,请导航到config/key.yaml并用您的OpenAI密钥替换占位符文本:OPENAI_API_KEY: "sk-..."

请注意保护您的OpenAI API密钥。绝不将其提交到公共存储库或与未经授权的个人共享。

用例说明

我给出了开发一个基于CLI的石头剪刀布游戏的目标,MetaGPT成功地执行了该任务。

以下是一个视频,展示了生成的游戏代码的实际运行。

MetaGPT演示运行

MetaGPT提供了一个系统设计文档,以Markdown格式书写——一种常用的轻量级标记语言。该Markdown文件包含UML图,提供了对架构蓝图的详细视图。此外,API规范详细说明了HTTP方法、端点、请求/响应对象和状态代码

MetaGPT输出 - 系统设计Markdown

MetaGPT输出 – 系统设计Markdown

类图详细说明了Game类的属性和方法,提供了一个易于理解的抽象。它甚至可视化了程序的调用流程,有效地将抽象的想法转化为具体的步骤。

这不仅大大减少了规划的manual开销,还加速了决策过程,确保您的开发管道保持敏捷。使用MetaGPT,您不仅是在自动化代码生成,您还在自动化智能项目规划,从而在快速应用开发中获得竞争优势。

结论:MetaGPT——革命性软件开发

MetaGPT重新定义了生成性AI和软件开发的格局,提供了智能自动化和敏捷项目管理的无缝融合。它远远超出了ChatGPT、AutoGPT和传统LangChain模型的能力,在任务分解、代码生成和项目规划方面表现出色。了解更多信息

以下是本文的主要要点:

  1. 元编程的力量:通过使用元编程,MetaGPT提供了一个敏捷和适应性的软件框架。它超越了传统工具的狭隘功能,引入了一种变革性的方法,不仅处理编码,还处理项目管理和决策方面。
  2. 双层架构:通过其基础层和协作层,MetaGPT有效地创建了一个协同的生态系统,其中代理可以像一个专业管理的软件团队一样协同工作。
  3. 优化的代码审查:MetaGPT不仅生成代码,还提供了预编译执行的功能,这基本上是一个早期错误检测系统。这种功能不仅节省了调试时间,还确保了代码质量。
  4. 认知代理:MetaGPT的智能代理,具有_observe()_think()_publish_message()等认知功能,能够演化和适应,确保您的软件解决方案不仅仅是编码的,而是“智能的”。
  5. 安装和部署:我们已经演示了MetaGPT可以通过npm和Python进行本地安装,也可以通过Docker进行容器化。

我已经沉浸在了令人着迷的机器学习和深度学习世界中五年了。我的热情和专业知识让我为超过50个不同的软件工程项目做出了贡献,特别关注AI/ML。我的持续的好奇心也让我对自然语言处理产生了兴趣,这是一个我渴望进一步探索的领域。