本文档解释了MetaGPT的基础架构,包括其角色、动作、消息和整体系统设计。它提供了MetaGPT如何实现用于协作解决问题多智能体框架的技术概述。有关动态智能或检索增强生成等特定功能的信息,请参阅其各自的维基页面。
MetaGPT遵循一种基于角色的架构,其中专门的智能体(角色)在一个共享环境中通过消息传递进行协作。该系统依赖于明确定义的消息结构、灵活的动作框架、内存系统以及用于在角色之间路由消息的环境。
来源
Role类是MetaGPT智能体架构的基础。角色是自主智能体,它们处理消息、执行动作并协作以解决复杂任务。
来源
角色遵循观察-思考-行动的循环
角色生命周期中的核心方法是
_observe() - 处理消息缓冲区中的新消息并将其添加到内存中_think() - 根据观察和状态确定要采取的行动_act() - 执行选定的动作并处理其输出react() - 根据响应模式协调观察-思考-行动循环角色可以采用不同的响应模式
react: 标准的思考-行动循环,其中LLM动态选择动作by_order: 按预定顺序执行动作plan_and_act: 先创建计划,然后执行一系列动作来源
_think() 方法_act() 方法_observe() 方法_react() 方法消息是MetaGPT中角色之间通信的基石。每条消息都包含结构化信息,以便正确路由和处理。
来源
Message 类UserMessage 类SystemMessage 类AIMessage 类消息通过环境路由到其目标接收者
关键消息路由常量
MESSAGE_ROUTE_TO_ALL: 发送给所有角色MESSAGE_ROUTE_TO_NONE: 不路由消息MESSAGE_ROUTE_TO_SELF: 路由回发送者来源
publish_message() 方法MessageQueue 类动作定义了角色可以执行的能力。每个动作封装了一个特定的功能,并且可以与LLM交互以生成输出。
Action基类提供了
_aask()与LLM交互的方法来源
Action 类WritePRD 类WriteDesign 类WriteTasks 类WriteCode 类WriteCodeReview 类内存系统提供角色的存储和检索能力
关键内存操作
add(message): 将消息添加到内存并索引get(k=0): 检索最近的k条消息,或在k=0时检索所有消息get_by_action(action): 获取由特定动作引起的消息get_by_role(role): 从特定角色获取消息delete(message): 从内存中删除消息来源
Memory 类Team和Environment类管理角色之间的协作
Team类协调角色之间的协作Environment路由消息并维护共享上下文hire方法将角色添加到环境中run_project开始,并继续进行run来源
Team 类MetaGPT的主要应用是协同软件开发,遵循此工作流程
每一步由一个专业角色处理
WritePRD从需求中创建PRDWriteDesign设计系统架构WriteTasks将项目分解为任务WriteCode实现代码WriteTest和RunCode测试和验证代码来源
ProductManager 类Architect 类ProjectManager 类Engineer 类QAEngineer 类消息在系统中流动的详细视图
来源
run 方法Message 类设计此表总结了核心组件及其关系
| 组件 | 描述 | 关键类 | 关系 |
|---|---|---|---|
| 角色系统 | 具有特定配置文件的自主代理 | Role、RoleContext、RoleReactMode | 包含 Actions,使用 Memory |
| 消息系统 | 通信结构 | Message、UserMessage、AIMessage、MessageQueue | 由 Roles 创建,由 Environment 路由 |
| 动作框架 | Roles 可以执行的能力 | Action、ActionNode、各种专用操作 | 由 Roles 用于生成响应 |
| 记忆系统 | 消息和知识的存储 | 内存 | 用于 Roles 存储/检索信息 |
| 环境 | 消息路由和角色管理 | 环境 | 包含 Roles,路由 Messages |
| 团队 | 高级编排 | 团队 | 管理 Environment,协调 Roles |
来源
配置系统和上下文管理确保了整个框架的一致行为
上下文会在整个系统中传播,以确保配置和行为的一致性。
来源
MetaGPT 的核心架构提供了一个灵活的框架,通过以下方式实现多代理协作:
这种架构使得复杂的流程,如协作软件开发,成为可能,在这种流程中,多个专业的角色共同将用户需求转化为完整的软件解决方案。