菜单

动作框架

相关源文件

本节将解释MetaGPT中的Action Framework(动作框架),它定义了动作如何在代理架构中进行结构化、执行和组合。该框架使得角色(代理)能够通过结构化的动作定义和执行方法来执行任务。有关使用这些动作的角色信息,请参阅角色系统,有关角色之间消息传递的信息,请参阅消息传递系统

概述

Action Framework提供了一种定义可由角色执行的工作单元的方法。它包含两个主要组件:

  1. Action:所有可执行动作的基类
  2. ActionNode:一个用于复杂动作并带有验证功能的树状结构系统

这两个组件共同作用,使MetaGPT能够创建具有强类型和验证功能的高级、多步工作流。

来源:metagpt/actions/action.py metagpt/actions/action_node.py metagpt/roles/role.py

Action 基类

Action 类是MetaGPT中所有可执行动作的基础。它定义了所有特定动作必须实现的接口和核心功能。

来源:metagpt/actions/action.py29-115 metagpt/actions/action_node.py135-195 metagpt/roles/role.py29-115

Action 类的主要特性

  1. LLM集成:动作可以通过_aask方法使用语言模型
  2. 上下文管理:动作可以通过ContextMixin访问共享上下文
  3. 序列化:动作可以通过SerializationMixin进行保存和加载
  4. run方法:每个动作都必须实现run(),这是执行的入口点

一个简单动作实现的示例

来源:metagpt/actions/write_code.py88-102 metagpt/actions/action.py110-114

ActionNode 系统

ActionNode 类提供了一个复杂的系统,用于定义具有验证、示例和分层组合功能的复杂、结构化动作。

来源:metagpt/actions/action_node.py135-195

ActionNodes可以用于

  1. 定义结构化输入/输出:指定动作数据的预期类型和示例
  2. 创建验证模型:为验证输入和输出生成Pydantic模型
  3. 生成提示:为LLM交互编译结构化提示
  4. 处理LLM响应:根据定义的结构解析和验证LLM输出

ActionNode组合

ActionNodes可以组合成树状结构来表示复杂的结构化数据

来源:metagpt/actions/write_prd_an.py13-40 metagpt/actions/action_node.py201-217

ActionNode 验证流程

ActionNode 系统遵循生成和验证内容的结构化流程

来源:metagpt/actions/action_node.py469-484 metagpt/actions/action_node.py427-453

角色中的动作执行

角色通过定义的步骤序列来执行动作。角色根据当前上下文和消息决定执行哪个动作。

来源:metagpt/roles/role.py454-470 metagpt/roles/role.py379-397 metagpt/roles/role.py340-378

执行流程

  1. 角色通过_observe()接收消息
  2. 角色通过_think()决定执行哪个动作
  3. 选定的动作被设置为角色的todo
  4. 角色通过_act()执行动作
  5. 动作输出作为消息发布

动作实现模式

Action Framework支持几种实现动作的模式

简单动作模式

直接使用Action基类的基本动作

来源:metagpt/actions/design_api.py52-63 metagpt/actions/action.py110-114

ActionNode 模式

更复杂的动作,使用ActionNodes进行结构和验证

来源:metagpt/actions/write_prd_an.py210-294 metagpt/actions/write_prd.py76-211

审查和修订模式

一些动作使用多个ActionNodes来实现审查和修订周期

来源:metagpt/actions/action_node.py769-792 metagpt/actions/write_code_review.py147-166

具体实现示例

产品需求文档(PRD)生成

WritePRD动作使用ActionNode模式来生成结构化的PRD文档

来源:metagpt/actions/write_prd.py209-217

代码生成

WriteCode动作使用基于模板的方法结合LLM集成

来源:metagpt/actions/write_code.py94-165

代码评审

WriteCodeReview 操作实现了代码审查和潜在的重构流程

来源: metagpt/actions/write_code_review.py147-166

高级特性

操作链

角色可以将多个操作链接在一起,以创建复杂的流程。

来源: metagpt/roles/engineer.py102-106

增量式开发

操作通过专门的节点结构支持增量式开发

来源: metagpt/actions/write_prd_an.py297-317 metagpt/actions/project_management_an.py39-45

结论

Action 框架提供了一个灵活且强大的系统,用于在 MetaGPT 中定义结构化、可执行的操作。通过将基础的 Action 类与 ActionNode 系统相结合,它能够创建复杂、经过验证的工作流程,这些工作流程可以由角色执行以完成复杂的任务。该框架与 LLM 子系统和消息传递架构紧密集成,构成了 MetaGPT 代理能力的核心。

有关工具如何扩展 Action 框架功能的更多信息,请参阅 工具系统

来源: metagpt/roles/role.py124-592 metagpt/actions/action.py29-115 metagpt/actions/action_node.py135-795