菜单

角色系统

相关源文件

MetaGPT 中的角色系统是创建具有特定能力、职责和行为的智能代理的基础。它提供了定义代理如何感知其环境、做出决策和采取行动的架构,从而在多代理场景中实现协作式问题解决。

有关为特定任务创建自定义角色的信息,请参阅 动态智能;有关角色之间消息交换的详细信息,请参阅 消息传递系统

核心架构

角色系统围绕代理作为具有独特职责和能力的分化实体的概念构建。每个角色都由其配置文件、目标和约束来定义,并配备了它可以执行的具体操作。

来源: metagpt/roles/role.py125-593 metagpt/schema.py232-455 metagpt/actions/action.py29-115 metagpt/memory/memory.py20-112

角色生命周期

角色的生命周期遵循观察-思考-行动(observe-think-act)的模式,该模式允许角色以结构化的方式处理输入、做出决策和采取行动。

来源: metagpt/roles/role.py398-429 metagpt/roles/role.py454-523 metagpt/roles/role.py530-554

观察阶段

_observe() 阶段,角色会处理其消息缓冲区中未读的消息。它会根据它正在关注的内容(watch 集合)过滤这些消息,并将相关的消息添加到其内存中。

来源: metagpt/roles/role.py398-429

思考阶段

_think() 阶段,角色会决定下一步要采取什么行动。如果只有一个可用行动,它就会选择那个行动。否则,它可能会使用语言模型来决定转换到哪个状态,这决定了下一个行动。

来源: metagpt/roles/role.py340-379

行动阶段

_act() 阶段,角色会执行在思考阶段选定的操作。该操作可能会与语言模型交互以生成响应,然后将其作为消息返回。

来源: metagpt/roles/role.py381-397

响应模式

MetaGPT 的角色系统支持多种响应模式,这些模式决定了角色在其生命周期中如何选择和执行操作。

来源: metagpt/roles/role.py82-89 metagpt/roles/role.py454-523 metagpt/roles/role.py261-283

REACT 模式

在 REACT 模式下,角色会在思考和行动之间交替进行。它会思考以选择一个行动,执行该行动,然后再次思考以选择下一个行动,以此类推。这个过程会一直持续,直到达到 max_react_loop 或没有更多可执行的行动。

来源: metagpt/roles/role.py454-470

BY_ORDER 模式

在 BY_ORDER 模式下,角色按其定义的顺序执行操作,每次运行时切换到下一个操作。

来源: metagpt/roles/role.py353-357

PLAN_AND_ACT 模式

在 PLAN_AND_ACT 模式下,角色首先使用 LLM 创建一个计划,然后按顺序执行计划中的操作。

来源: metagpt/roles/role.py472-496

消息处理

角色之间通过交换消息进行通信。MetaGPT 中的消息处理系统包含发送、接收和过滤消息的机制。

来源: metagpt/roles/role.py429-453 metagpt/schema.py232-455 metagpt/const.py74-83

发布消息

当一个角色想要与其他角色通信时,它会使用 publish_message 方法来发布消息。如果消息是特定于某个角色的,发送者会相应地设置 send_to 字段。

来源: metagpt/roles/role.py429-446

接收消息

角色通过其消息缓冲区接收消息。put_message 方法将消息添加到缓冲区,而 _observe 方法在角色的观察阶段处理来自缓冲区的消息。

来源: metagpt/roles/role.py448-452 metagpt/roles/role.py398-429

消息过滤

角色可以根据它们正在关注的内容过滤消息。_watch 方法设置角色感兴趣的操作,而 _observe 方法会相应地过滤消息。

来源: metagpt/roles/role.py284-292

角色配置

角色在初始化期间会配置各种属性和行为。这包括设置操作、响应模式和消息过滤。

设置操作

可以使用 set_actions 方法为角色配备特定操作。这定义了角色的功能。

来源: metagpt/roles/role.py244-260

设置响应模式

响应模式决定了角色如何执行其操作。可以使用 _set_react_mode 方法来设置。

来源: metagpt/roles/role.py261-283

具体的角色实现

角色系统包含几个用于特定目的的具体角色实现。以下是一些示例:

  1. 工程师:负责根据系统设计和任务分配编写代码。
  2. 质量保证工程师:编写测试并确保代码质量。
  3. 产品经理:创建产品需求文档。
  4. 架构师:设计系统架构。
  5. 研究员:针对特定主题进行研究。

来源: metagpt/roles/engineer.py73-593 metagpt/roles/qa_engineer.py39-208 metagpt/roles/product_manager.py21-65 metagpt/roles/architect.py17-58

创建自定义角色

您可以通过继承基础的 Role 类并配置其特定的动作和行为来创建自定义角色。

来源: examples/build_customized_agent.py54-70 examples/build_customized_multi_agents.py42-50

在 MetaGPT 团队中使用

角色通常在团队中使用,团队中的多个角色协作以完成复杂的任务。Team 类管理角色之间的交互并促进它们的协作。

来源: examples/debate.py84-93 examples/debate_simple.py20-27

总而言之,MetaGPT 中的角色系统提供了一个灵活而强大的框架,用于创建具有特定能力和行为的智能代理。通过理解角色如何观察、思考和行动,您可以创建能够协作解决复杂问题的复杂多代理系统。