Connect with us

通用人工智能

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

mm
MetaGPBassed Illustration of human and machine collaborationT

随着像ChatGPT这样的大型语言模型(LLM)的出现,OpenAI在企业和用户采用方面经历了一次激增,目前每月收入约为8000万美元。根据The Information的一份最近报告,总部位于旧金山的这家公司据报道正在朝着10亿美元的年度收入目标迈进。

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

进入MetaGPT——一个由Sirui Hong创建的多代理系统,它利用大型语言模型,将标准操作程序(SOP)与LLM-based多代理系统相结合。这种新兴范式打破了LLM在促进有效合作和任务分解方面的现有局限性,特别是在复杂的现实世界应用中。

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

敏捷开发 - MetaGPT

敏捷开发

SOP作为一个元函数,在这里协调代理根据定义的输入自动生成代码。简单来说,这就像你把一个高度协调的软件工程师团队转变成一个适应性强、智能的软件系统。

理解MetaGPT框架

基础层和协作层

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

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

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率。

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

比较MetaGPT和其他领先模型的MBPP和HumanEval指标(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 "输入提示" --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输出 - 系统设计

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个不同的软件工程项目做出贡献,特别注重人工智能/机器学习。我的持续好奇心也使我对自然语言处理产生了兴趣,这是一个我渴望进一步探索的领域。