任务规划 | Middleware 中间件 | 产品经理学Langchian | 第14篇

内容纲要

概述

在前面几节中,我们讨论了如何通过摘要压缩管理上下文、如何通过人工审批控制风险、如何限制调用次数控制成本,以及如何保护敏感信息。现在我们要关注另一个问题:如何让AI智能体更好地处理复杂任务,特别是那些需要多步骤、长时间执行的任务

当任务很复杂时,AI智能体可能会迷失方向,不知道下一步该做什么。或者用户想了解任务进度,却发现AI智能体无法清楚地说明当前状态。

To-do list中间件就是为了解决这个问题而设计的。它为AI智能体提供任务规划与跟踪能力,让AI智能体能够将复杂任务拆解成多个子任务,创建待办清单,并在执行过程中跟踪进度、调整计划。这样,AI智能体就能更有条理地处理复杂任务,用户也能清楚地了解任务进展。

使用场景

复杂多步骤任务

需要协调多个工具、按顺序执行的复杂任务。比如"分析销售数据并生成可视化报告",这个任务涉及多个步骤:获取数据、清洗数据、分析数据、生成图表、生成报告等。

长时间运行任务

需要较长时间完成的任务,比如"爬取网站并整理数据"。通过待办清单,用户可以清楚地看到当前进度,知道任务进行到哪一步了。

任务分解与优先级

AI智能体可以将复杂任务拆解为子任务,并设置优先级,按重要性顺序执行。这样能确保重要任务优先完成。

核心功能需求

自动任务规划

当AI智能体收到一个复杂任务时,应该能够自动分析任务,并将其拆解为多个可执行的子任务。

任务拆解逻辑

  • 识别任务复杂度:判断任务是否需要规划(简单任务可能不需要)
  • 任务分解:将复杂任务拆解为多个子任务
  • 依赖关系识别:识别子任务之间的依赖关系,确定执行顺序
  • 优先级设定:为子任务设置优先级

产品建议:可以在PRD中约定任务复杂度阈值,比如任务涉及3+个工具、预计执行时间>30秒,超过阈值则触发规划。

待办清单创建

AI智能体使用<code>write_todos</code>工具创建待办清单,每个待办项包含:

  • ID:唯一标识符
  • 描述:任务描述
  • 状态:pending(待执行)、in_progress(执行中)、completed(已完成)

进度跟踪与更新

在执行过程中,AI智能体需要能够更新待办清单的状态,反映当前的执行进度。

状态更新机制

  • 自动更新:当AI智能体开始执行某个子任务时,自动将状态更新为<code>in_progress</code>
  • 完成标记:任务完成后,将状态更新为<code>completed</code>
  • 失败处理:如果任务失败,可以标记为失败状态,并允许调整后续计划

动态调整

AI智能体可以根据执行过程中的新信息动态调整计划:

  • 添加新任务:发现需要额外的步骤,可以添加新的待办项
  • 删除任务:发现某些步骤不必要,可以删除
  • 调整优先级:根据实际情况调整任务的执行优先级

可观测性

待办清单不仅用于AI智能体内部规划,也可以向用户展示,让用户了解任务进展。

可视化展示

  • 进度展示:可以向用户展示当前进度,比如"已完成3/5个任务"
  • 任务列表:可以展示待办清单,让用户看到所有任务及其状态
  • 实时更新:任务状态实时更新,用户可以看到最新的进展

产品建议:如果应用有前端界面,建议展示待办清单,提升用户体验。

PRD需求描述

功能需求

FR-1: 自动任务规划

  • 描述:AI智能体能够自动分析复杂任务,并将其拆解为多个子任务
  • 触发条件:可以配置任务复杂度阈值,超过阈值则触发规划
  • 任务拆解:支持将任务拆解为多个子任务,识别依赖关系和优先级
  • 优先级:P0(核心功能)

FR-2: 待办清单管理

  • 描述:AI智能体可以使用<code>write_todos</code>工具创建、更新待办清单
  • 清单结构:每个待办项包含ID、描述、状态等信息
  • 状态管理:支持pending、in_progress、completed等状态
  • 优先级:P0(核心功能)

FR-3: 进度跟踪与更新

  • 描述:在执行过程中自动更新待办清单状态,反映当前进度
  • 动态调整:支持根据执行情况动态添加、删除、修改待办项
  • 优先级调整:支持调整待办项的优先级
  • 优先级:P0(核心功能)

FR-4: 任务可视化

  • 描述:向用户展示待办清单和任务进度
  • 进度展示:展示当前进度,如"已完成3/5个任务"
  • 任务列表:展示所有任务及其状态
  • 实时更新:任务状态实时更新
  • 优先级:P1

非功能需求

NFR-1: 状态持久化

  • 状态保存:待办清单保存在Agent state中,需要支持状态持久化
  • 跨请求保持:待办清单需要在多轮请求中保持一致性
  • 状态大小限制:需要注意state大小限制,避免待办项过多导致state过大

NFR-2: 性能要求

  • 规划成本:创建待办清单需要额外的模型调用,需要控制成本
  • 规划时间:任务规划不应显著影响响应时间

NFR-3: 可观测性

  • 进度日志:记录任务规划的详细信息,包括待办清单内容、状态更新等
  • 监控指标:监控任务规划触发率、平均任务数量、任务完成率等

产品设计要点

任务规划触发条件

简单任务

  • 单步骤任务(如"查询天气")不需要规划
  • AI智能体可以直接执行

复杂任务

  • 多步骤任务(如"分析数据并生成报告")应该触发规划
  • 可以在PRD中约定复杂度阈值

判断标准

  • 任务涉及的工具数量(如3+个工具)
  • 预计执行时间(如>30秒)
  • 任务复杂度评分

产品建议:建议在PRD中明确任务复杂度判断标准,确保AI智能体能够准确识别何时需要规划。

待办清单可视化设计

前端展示

  • 展示待办清单,让用户看到所有任务
  • 用不同颜色或图标区分不同状态(待执行、执行中、已完成)
  • 展示进度条,直观显示完成进度

进度反馈

  • 定期向用户反馈当前进度(如"已完成3/5个任务")
  • 当任务状态更新时,及时通知用户

产品建议:如果有前端界面,建议设计清晰的待办清单展示,提升用户体验。

计划调整机制

动态更新

  • 支持在执行过程中动态添加、删除、修改待办项
  • 当发现新信息时,能够灵活调整计划

优先级调整

  • 支持调整待办项的优先级
  • 确保重要任务优先执行

计划回滚

  • 如果执行过程中发现计划不可行,支持重新规划

产品建议:在PRD中明确计划调整的规则和限制,确保AI智能体能够合理调整计划。

使用建议

什么时候应该使用

  1. 复杂多步骤任务:任务涉及多个步骤,需要协调多个工具
  2. 长时间运行任务:任务需要较长时间完成,用户需要了解进度
  3. 需要任务分解的场景:需要将复杂任务拆解为子任务并设置优先级

配置建议

  1. 任务复杂度阈值:根据实际场景设置合理的阈值
  2. 状态持久化:生产环境需要配置状态持久化,确保待办清单不会丢失
  3. 可视化展示:如果有前端界面,建议展示待办清单

注意事项

  1. 规划成本:创建待办清单需要额外的模型调用,需要控制成本
  2. 状态管理:需要注意state大小限制,避免待办项过多
  3. 简单任务:简单任务不需要规划,避免过度使用

与其他中间件的配合

To-do list可以与其他中间件配合使用:

  • 与SummarizationMiddleware配合:如果待办清单过长,可以在摘要时保留关键待办项
  • 与Human-in-the-loop配合:关键待办项执行前,可以触发人工审核
  • 与ToolCallLimitMiddleware配合:限制待办项中工具调用的总次数,防止无限循环

后续优化方向

  1. 智能任务分解:基于历史数据和任务类型,智能拆解任务
  2. 依赖关系识别:更准确地识别任务之间的依赖关系
  3. 资源预估:预估每个任务需要的资源和时间,帮助优化计划
  4. 任务模板:对于常见任务类型,提供任务模板,加快规划速度
滚动至顶部