菜单

RoleZero

相关源文件

RoleZero 是 MetaGPT 动态智能 (DI) 系统的基石。它代表了一种先进的代理架构,能够通过响应式的观察-思考-行动周期进行自主思考和行动。与具有固定标准操作程序 (SOP) 的传统角色不同,RoleZero 可以根据不同的上下文动态地调整其行为、使用工具、管理计划以及与人类进行交互。

本页面涵盖了 RoleZero 的核心架构、能力和实现。有关 RoleZero 可以使用的工具系统的信息,请参阅 工具系统

架构概述

RoleZero 扩展了基础的 Role 类,并为其增强了动态智能能力,使其能够通过工具使用、规划和自适应行为进行自主问题解决。

来源

响应式循环和决策制定

RoleZero 在以观察-思考-行动循环为核心的响应式架构上运行,并集成了动态智能能力。这使其能够适应不断变化的需求并自主执行复杂任务。

来源

快速思考 vs. 深度思考

RoleZero 采用双层思考系统

  1. 快速思考 (_quick_think):用于无需工具或复杂推理即可直接回答的简单查询。这包括

    • 常识性查询
    • 基本编码任务
    • 随意聊天
    • 多项选择题
  2. 深度思考 (_think):用于需要工具、规划和推理的复杂任务

    • 软件开发
    • 数据分析
    • 多步问题解决
    • 工具利用

过程始于快速思考,用于分类查询类型(QUICK、SEARCH、TASK 或 AMBIGUOUS)。对于 QUICK 或 AMBIGUOUS 查询,RoleZero 会直接响应。对于 SEARCH 查询,它使用 SearchEnhancedQA 工具。对于 TASK 查询,它进入完整的响应式循环。

来源

规划和任务管理

RoleZero 使用 Planner 组件来管理任务和跟踪进度。规划功能支持

  1. 创建和更新顺序任务
  2. 跟踪任务依赖关系
  3. 管理任务完成状态
  4. 为决策提供上下文

规划工作流程包括

  1. 根据用户需求创建初始任务
  2. 执行当前任务
  3. 完成任务后更新状态
  4. 移动到下一个任务

计划状态作为 RoleZero 思考过程的上下文的一部分,帮助它决定下一步采取何种行动。

来源

工具集成

RoleZero 可以通过复杂的工具集成架构动态访问和使用各种工具。这使其能够与文件交互、浏览网页、执行终端命令等等。

工具执行映射

RoleZero 维护命令名称与其实现之间的映射

命令类型示例实现
基本工具Editor.readBrowser.goto直接调用工具方法
计划命令Plan.append_taskPlan.finish_current_task调用计划器方法
特殊命令endRoleZero.ask_human自定义处理程序方法
第三方工具SearchEnhancedQA.run根据配置有条件注册

来源

工具推荐

RoleZero 使用 ToolRecommender 组件根据当前上下文建议合适的工具。这有助于 LLM 就使用哪些工具做出更明智的决策。工具推荐发生在 _think 阶段,为 LLM 提供有关可用工具及其功能的信息。

来源

经验增强的 LLM 集成

RoleZero 通过复杂的缓存和经验增强系统与语言模型集成。这使其能够

  1. 缓存 LLM 对类似上下文的响应,以提高效率
  2. 用相关的过往经验增强提示
  3. 高效地序列化和管理上下文

通过 exp_cache 装饰的 llm_cached_aask 方法通过以下方式管理此过程

  1. 使用 RoleZeroContextBuilder 将相关经验添加到请求中
  2. 使用 RoleZeroSerializer 提取缓存的关键部分
  3. 缓存结果以备将来类似查询
  4. 通过经验检索器检索相关的过往经验

来源

人机交互

RoleZero 提供两种主要的人机交互方法

  1. ask_human:当角色需要人类指导才能继续进行时使用,例如当

    • 遇到不熟悉的情况
    • 达到最大行动循环限制
    • 需要澄清需求
    • 遇到错误或意外结果
  2. reply_to_human:用于向人类用户提供响应,尤其是在

    • 回答直接问题
    • 报告任务完成情况
    • 提供状态更新
    • 分享分析结果

这些方法与环境(特别是 MGXEnv)集成,以促进用户和 RoleZero 代理之间的通信。

来源

命令解析和执行

RoleZero 通过强大的解析和执行管道将语言模型输出处理成可执行命令

  1. LLM 生成包含 JSON 命令的结构化响应
  2. _parse_commands 提取并验证这些命令
  3. _run_commands 顺序执行每个命令
  4. 特殊命令由 _run_special_command 处理
  5. 其他命令通过 tool_execution_map 执行

命令格式遵循结构化 JSON 模式

命令可以组合起来执行复杂的任务,同时小心处理可能冲突的互斥命令。

来源

错误处理和恢复

RoleZero 结合了多种处理错误和从问题中恢复的机制

  1. 重复响应检测:识别语言模型何时重复输出,并触发重新生成或请求人工帮助

  2. JSON 修复:通过专门的修复提示修复命令输出中格式错误的 JSON

  3. 命令验证:检查独占命令并确保命令格式正确

  4. 异常处理:捕获和报告命令执行期间的异常

  5. 最大循环预防:达到 max_react_loop 后停止,并请求人工指导

这些机制确保 RoleZero 能够优雅地处理意外情况,即使在发生错误时也能继续运行。

来源

扩展 RoleZero

RoleZero 是 MetaGPT 生态系统中多个专用角色的基础

角色目的关键扩展
Engineer2软件开发代码编写、仓库管理
DataAnalyst数据分析和机器学习数据处理、模型训练
TeamLeader团队协调任务分配、消息传递

扩展 RoleZero

  1. 创建一个继承自 RoleZero 的新类
  2. 覆盖 _update_tool_execution 以添加自定义工具
  3. 自定义指令和系统提示
  4. 根据需要实现专用方法
  5. 使用 @register_tool 装饰器注册工具

来源

内存集成

RoleZero 拥有先进的内存能力,使其能够

  1. 通过 RoleContext 存储和检索过去的交互
  2. 在配置时维护长期记忆
  3. 解析和处理多模态内容(包括图像)
  4. 过滤和处理内存以优化上下文窗口

内存系统对于在多次交互中保持上下文并用相关历史信息为思考过程提供信息至关重要。

启用长期记忆时,RoleZero 使用向量化存储,根据当前上下文检索语义上相似的过去交互。

来源

结论

RoleZero 代表了 MetaGPT 框架内自主代理架构的重大进步。通过其动态智能、规划能力、工具集成和经验增强,它能够在最少的人工干预下处理复杂任务,同时保持在需要时寻求指导的能力。

其架构平衡了自主性与人工监督,使其既能作为独立的解题者,也能作为更专业角色的基础。经验检索和缓存机制使其能够从过去的交互中学习,随着时间的推移变得越来越高效和有效。

RoleZero 的模块化设计允许轻松扩展和定制,使其能够适应广泛的用例和环境。