本节将解释MetaGPT中的Action Framework(动作框架),它定义了动作如何在代理架构中进行结构化、执行和组合。该框架使得角色(代理)能够通过结构化的动作定义和执行方法来执行任务。有关使用这些动作的角色信息,请参阅角色系统,有关角色之间消息传递的信息,请参阅消息传递系统。
Action Framework提供了一种定义可由角色执行的工作单元的方法。它包含两个主要组件:
这两个组件共同作用,使MetaGPT能够创建具有强类型和验证功能的高级、多步工作流。
来源:metagpt/actions/action.py metagpt/actions/action_node.py metagpt/roles/role.py
Action 类是MetaGPT中所有可执行动作的基础。它定义了所有特定动作必须实现的接口和核心功能。
来源:metagpt/actions/action.py29-115 metagpt/actions/action_node.py135-195 metagpt/roles/role.py29-115
Action 类的主要特性
_aask方法使用语言模型ContextMixin访问共享上下文SerializationMixin进行保存和加载run(),这是执行的入口点一个简单动作实现的示例
来源:metagpt/actions/write_code.py88-102 metagpt/actions/action.py110-114
ActionNode 类提供了一个复杂的系统,用于定义具有验证、示例和分层组合功能的复杂、结构化动作。
来源:metagpt/actions/action_node.py135-195
ActionNodes可以用于
ActionNodes可以组合成树状结构来表示复杂的结构化数据
来源:metagpt/actions/write_prd_an.py13-40 metagpt/actions/action_node.py201-217
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
执行流程
_observe()接收消息_think()决定执行哪个动作todo_act()执行动作Action Framework支持几种实现动作的模式
直接使用Action基类的基本动作
来源:metagpt/actions/design_api.py52-63 metagpt/actions/action.py110-114
更复杂的动作,使用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
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