菜单

核心架构

相关源文件

本文档解释了MetaGPT的基础架构,包括其角色、动作、消息和整体系统设计。它提供了MetaGPT如何实现用于协作解决问题多智能体框架的技术概述。有关动态智能或检索增强生成等特定功能的信息,请参阅其各自的维基页面。

高层架构概述

MetaGPT遵循一种基于角色的架构,其中专门的智能体(角色)在一个共享环境中通过消息传递进行协作。该系统依赖于明确定义的消息结构、灵活的动作框架、内存系统以及用于在角色之间路由消息的环境。

来源

角色系统

Role类是MetaGPT智能体架构的基础。角色是自主智能体,它们处理消息、执行动作并协作以解决复杂任务。

角色结构

来源

角色生命周期

角色遵循观察-思考-行动的循环

角色生命周期中的核心方法是

  1. _observe() - 处理消息缓冲区中的新消息并将其添加到内存中
  2. _think() - 根据观察和状态确定要采取的行动
  3. _act() - 执行选定的动作并处理其输出
  4. react() - 根据响应模式协调观察-思考-行动循环

角色可以采用不同的响应模式

  • react: 标准的思考-行动循环,其中LLM动态选择动作
  • by_order: 按预定顺序执行动作
  • plan_and_act: 先创建计划,然后执行一系列动作

来源

消息系统

消息是MetaGPT中角色之间通信的基石。每条消息都包含结构化信息,以便正确路由和处理。

消息结构

来源

消息路由

消息通过环境路由到其目标接收者

关键消息路由常量

  • MESSAGE_ROUTE_TO_ALL: 发送给所有角色
  • MESSAGE_ROUTE_TO_NONE: 不路由消息
  • MESSAGE_ROUTE_TO_SELF: 路由回发送者

来源

动作框架

动作定义了角色可以执行的能力。每个动作封装了一个特定的功能,并且可以与LLM交互以生成输出。

动作类层次结构

Action基类提供了

  • 所有动作的标准接口
  • 通过_aask()与LLM交互的方法
  • 上下文管理以实现一致的执行

来源

记忆系统

内存系统提供角色的存储和检索能力

关键内存操作

  • add(message): 将消息添加到内存并索引
  • get(k=0): 检索最近的k条消息,或在k=0时检索所有消息
  • get_by_action(action): 获取由特定动作引起的消息
  • get_by_role(role): 从特定角色获取消息
  • delete(message): 从内存中删除消息

来源

团队与环境

Team和Environment类管理角色之间的协作

  • Team类协调角色之间的协作
  • Environment路由消息并维护共享上下文
  • 通过hire方法将角色添加到环境中
  • 团队的执行从run_project开始,并继续进行run

来源

软件开发工作流

MetaGPT的主要应用是协同软件开发,遵循此工作流程

每一步由一个专业角色处理

  • Alice (产品经理): 使用WritePRD从需求中创建PRD
  • Bob (架构师): 使用WriteDesign设计系统架构
  • Eve (项目经理): 使用WriteTasks将项目分解为任务
  • Alex (工程师): 使用WriteCode实现代码
  • Edward (QA工程师): 使用WriteTestRunCode测试和验证代码

来源

基于消息的通信架构

消息在系统中流动的详细视图

来源

关键组件和关系

此表总结了核心组件及其关系

组件描述关键类关系
角色系统具有特定配置文件的自主代理RoleRoleContextRoleReactMode包含 Actions,使用 Memory
消息系统通信结构MessageUserMessageAIMessageMessageQueue由 Roles 创建,由 Environment 路由
动作框架Roles 可以执行的能力ActionActionNode、各种专用操作由 Roles 用于生成响应
记忆系统消息和知识的存储内存用于 Roles 存储/检索信息
环境消息路由和角色管理环境包含 Roles,路由 Messages
团队高级编排团队管理 Environment,协调 Roles

来源

配置和上下文

配置系统和上下文管理确保了整个框架的一致行为

上下文会在整个系统中传播,以确保配置和行为的一致性。

来源

结论

MetaGPT 的核心架构提供了一个灵活的框架,通过以下方式实现多代理协作:

  1. 一个基于角色的系统,其中专业代理可以执行特定功能
  2. 一种用于结构化通信的消息传递机制
  3. 一个用于可扩展功能的模块化操作框架
  4. 用于持久化知识存储的内存系统
  5. 用于协调执行的环境和团队编排

这种架构使得复杂的流程,如协作软件开发,成为可能,在这种流程中,多个专业的角色共同将用户需求转化为完整的软件解决方案。