菜单

概述

相关源文件

MetaGPT 是一个多智能体框架,能够协调多个基于 LLM 的智能体来处理复杂任务。通过为这些智能体分配不同的角色并建立结构化的通信协议,MetaGPT 创建了一个类似于软件公司的协作系统,其中专业角色按照标准操作程序 (SOP) 进行协作。

本文档提供了 MetaGPT 系统架构、关键组件和核心功能的高级概述。

来源: README.md40-47

核心架构

MetaGPT 的架构由几个相互连接的系统组成,这些系统支持智能体的协作、通信和任务执行。下图说明了核心架构。

来源: metagpt/context.py57-92 metagpt/config2.py49-102 README.md41-47

角色系统

Role 系统是 MetaGPT 的基础。每个角色代表一个具有特定职责和能力的智能体。角色遵循观察-思考-行动的循环。

  1. 观察:从消息和环境中收集相关信息
  2. 思考:处理信息并使用 LLM 功能决定操作
  3. 行动:执行操作并将结果作为消息发布

角色被组织成模仿软件公司的团队结构,包括产品经理、架构师、工程师等角色。

来源: README.md40-47 metagpt/software_company.py14-77

消息传递系统

消息是 MetaGPT 中角色之间通信的主要方式。消息传递系统支持结构化的信息交换和协作。每条消息包含:

  • 内容(实际信息)
  • 角色(发送者角色)
  • 原因(触发消息的原因)
  • 发送至(目标接收者)

系统根据角色的监听列表和职责将消息路由到相应的角色。

来源: metagpt/context.py57-92 metagpt/context_mixin.py17-102

动作框架

Action 定义了角色可以执行的具体操作。每个 Action 都有一个名称、一个前缀(用于提示工程)和一个运行方法。Action 使用 LLM 根据精心设计的提示生成响应。

Action 框架通过将任务分解为可以顺序或条件执行的离散步骤,从而实现了复杂的工作流程。

来源: README.md40-47

LLM 集成

MetaGPT 可以通过灵活的配置系统与各种 LLM 提供商集成。LLM 提供商系统负责管理:

  1. API 连接和身份验证
  2. 模型选择和参数
  3. Token 计数和成本跟踪
  4. 响应处理和错误管理

集成通过 config2.yaml 文件进行配置,该文件指定了 LLM 提供商、模型、API 密钥和其他设置。

来源: metagpt/config2.py53-64 metagpt/context.py86-100

配置和上下文系统

MetaGPT 使用一个强大的配置系统来处理框架的各种设置。 metagpt/config2.py 中的 Config 类管理:

  1. LLM 提供商和模型
  2. 嵌入服务
  3. 工具配置(搜索引擎、浏览器、mermaid 图)
  4. 存储设置(S3、Redis)
  5. 工作空间设置

配置可以从文件、环境变量加载,或以编程方式设置。

Context 类在 metagpt/context.py 提供 MetaGPT 的环境上下文。

  1. 它管理 LLM 实例和成本跟踪。
  2. 它通过 kwargs 属性维护共享状态。
  3. 它提供用于序列化和反序列化的实用工具。

总而言之,这些系统为 MetaGPT 的运营提供了一个灵活且可扩展的基础。

来源: metagpt/config2.py49-102 metagpt/context.py57-127 metagpt/context_mixin.py17-102 tests/metagpt/test_config.py14-24 tests/metagpt/test_context.py12-73

软件开发工作流

MetaGPT 的旗舰功能是其软件开发工作流程,它将一个单行需求转换为完整的软件项目。该工作流程涉及多个角色遵循标准操作程序 (SOP) 进行协作。

  1. 需求分析:产品经理分析需求并创建产品需求文档 (PRD)
  2. 架构设计:架构师设计系统架构并提出技术解决方案
  3. 任务规划:项目经理规划任务并分配职责
  4. 实现:工程师根据设计实现代码
  5. 代码审查:工程师互相审查代码以确保质量
  6. 测试:进行测试以确保功能

该工作流程由 Team 类编排,该类负责组织角色并管理它们之间的交互。

来源: README.md40-47 metagpt/software_company.py14-77

主要功能

多智能体协作

MetaGPT 的核心优势在于其协调多个智能体来解决复杂问题的能力。 Team 类在 metagpt/software_company.py 中进行管理,通过以下方式:

  1. 雇用具有特定职责的角色
  2. 管理资源(投资)
  3. 通过多轮交互运行协作工作流程
  4. 存储和检索项目工件

动态智能

MetaGPT 包含一个动态智能系统,可通过以下方式增强智能体的能力:

  1. 工具使用(浏览器、终端、文件系统)
  2. 规划和推理
  3. 经验池用于知识重用

检索增强生成 (RAG)

RAG 系统通过检索相关信息来增强生成能力。

  1. 文档索引和检索
  2. 上下文感知生成
  3. 知识增强

跨平台兼容性

MetaGPT 可通过以下方式使用:

  1. 命令行界面 (CLI): metagpt "创建一个 2048 游戏"
  2. Python API: generate_repo("创建一个 2048 游戏")
  3. Docker: docker run metagpt/metagpt:latest metagpt "创建一个 2048 游戏"

来源: README.md50-102 Dockerfile1-25 metagpt/software_company.py14-77

使用示例

命令行用法

Python API用法

来源:README.md90-115 docs/tutorial/usage.md13-32

配置

MetaGPT 可以通过 ~/.metagpt/config2.yaml 文件进行配置

可以使用以下命令初始化配置

这将创建一个默认的配置文件,您可以根据自己的需求进行自定义。

来源:README.md69-86 metagpt/software_company.py126-154

安装

MetaGPT 可以使用 pip 进行安装

或者通过克隆仓库进行安装

也支持 Docker 安装

来源:README.md57-67 docs/install/cli_install.md10-125 docs/install/docker_install.md3-44

总结

MetaGPT 提供了一个全面的多代理协作框架,特别侧重于软件开发。通过将基于 LLM 的代理组织成具有特定职责的角色,并实现它们之间的结构化通信,MetaGPT 可以应对单一代理难以完成的复杂任务。该系统的模块化架构、灵活的配置以及与各种 LLM 提供商的集成使其能够适应不同的用例和环境。

有关特定组件的更多详细信息,请参阅相关的 wiki 页面

  • 角色系统 [2.1]
  • 消息传递系统 [2.2]
  • 操作框架 [2.3]
  • LLM 集成 [3]
  • 内存系统 [4]
  • 动态智能 [5]

来源:README.md127-139