OpenManus代码详解(二):app/flow

请添加图片描述

往期推荐:

1. OpenManus架构解析
2. OpenManus代码详解(一):app/agent
3. OpenManus代码详解(二):app/flow
4. OpenManus代码详解(三):app/tool
5. OpenManus代码详解(四):app/schema.py
6. OpenManus代码详解(五):app/tool/planning.py
7. OpenManus代码详解(六):代码调用流程

官方地址:https://github.com/mannaandpoem/OpenManus


1. 目录结构

flow/
├── __init__.py     # 空文件,标记为包
├── base.py         # 基础流程类定义
├── flow_factory.py # 流程工厂类
└── planning.py     # 计划流程实现

2. base.py - 基础流程定义

class BaseFlow(BaseModel, ABC):
    """基础流程类"""
    agents: Dict[str, BaseAgent]        # 代理映射表
    tools: Optional[List] = None        # 可用工具列表
    primary_agent_key: Optional[str]    # 主要代理的键名

主要功能:

  1. 代理管理

    • 支持单个代理、代理列表或代理字典的初始化
    • 提供代理访问和添加的方法
    • 维护主要代理(primary_agent)的引用
  2. 状态枚举

class PlanStepStatus(str, Enum):
    NOT_STARTED = "not_started"
    IN_PROGRESS = "in_progress"
    COMPLETED = "completed"
    BLOCKED = "blocked"

3. flow_factory.py - 流程工厂

class FlowFactory:
    @staticmethod
    def create_flow(flow_type: FlowType, agents, **kwargs) -> BaseFlow:
        flows = {
            FlowType.PLANNING: PlanningFlow,
        }
        # 创建并返回指定类型的流程

功能:

  • 根据流程类型创建相应的流程实例
  • 当前支持 PLANNING 类型
  • 可扩展支持其他类型的流程

4. planning.py - 计划流程实现

class PlanningFlow(BaseFlow):
    llm: LLM                           # 语言模型实例
    planning_tool: PlanningTool        # 计划工具
    executor_keys: List[str]           # 执行器键名列表
    active_plan_id: str                # 当前活动计划ID
    current_step_index: Optional[int]  # 当前步骤索引

核心功能:

  1. 计划创建和初始化
async def _create_initial_plan(self, request: str):
    # 使用 LLM 创建初始计划
    # 设置计划 ID 和步骤
    # 存储计划到 planning_tool
  1. 步骤执行管理
async def execute(self, input_text: str) -> str:
    # 1. 创建初始计划
    # 2. 循环执行步骤
    # 3. 检查完成状态
    # 4. 返回执行结果
  1. 步骤状态追踪
async def _get_current_step_info(self):
    # 获取当前步骤信息
    # 更新步骤状态
    # 返回步骤索引和信息
  1. 计划执行和监控
async def _execute_step(self, executor: BaseAgent, step_info: dict):
    # 准备步骤上下文
    # 使用指定代理执行步骤
    # 更新步骤状态
    # 返回执行结果
  1. 计划完成处理
async def _finalize_plan(self) -> str:
    # 生成计划总结
    # 使用 LLM 或代理提供最终报告

5. 关键特性:

  1. 灵活的代理管理

    • 支持多个代理协同工作
    • 可以根据步骤类型选择合适的执行代理
  2. 状态管理

    • 详细的步骤状态跟踪
    • 支持进度监控和报告
  3. 错误处理

    • 完善的异常捕获和处理
    • 提供备选方案和降级处理
  4. 可扩展性

    • 基于工厂模式,易于添加新的流程类型
    • 模块化设计,便于扩展功能
  5. 进度追踪

    • 详细的步骤执行状态
    • 支持计划执行进度的可视化

使用示例:

# 创建计划流程
agents = {"planner": planner_agent, "executor": executor_agent}
flow = FlowFactory.create_flow(FlowType.PLANNING, agents)

# 执行任务
result = await flow.execute("完成一个复杂任务")

这个流程系统的设计非常灵活和强大,特别适合处理需要多个代理协作的复杂任务。它提供了清晰的任务分解、执行追踪和状态管理,同时保持了良好的可扩展性和错误处理能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值