2023年2月18日

工作流编排

工作流编排是把 LLM 推理、工具调用、状态流转、条件分支、并发执行和人工审批组织成可重复执行的流程,用确定性骨架约束不确定性模型。

知识库大模型智能体与工具调用agentworkfloworchestration

工作流编排

先说结论

工作流编排是把 LLM 推理、工具调用、状态流转、条件分支、并发执行和人工审批组织成可重复执行的流程,用确定性骨架约束不确定性模型。

为什么我会单独记这一篇

如果把复杂任务完全交给一个自由循环的 Agent,通常会出现:

  1. 路径不可控,难以复现。
  2. 状态不透明,难以恢复。
  3. 成本和延迟不稳定。
  4. 有副作用的步骤缺少审批与补偿。

工作流编排的目标,是把开放式推理嵌进可追踪、可恢复、可治理的执行图里。

核心机制

常见编排模式

  • DAG / 有向图:节点表示步骤,边表示条件流转。
  • 状态机:显式维护共享状态,节点读写状态。
  • 计划-执行:先生成计划,再逐步执行。
  • Event-driven:由事件驱动下一个步骤。

典型能力

  • 显式状态
  • 条件分支
  • 并行执行
  • checkpoint / 持久化
  • human-in-the-loop
  • tracing / replay

框架侧典型抽象

  • LangGraph 强调 StateGraph、条件边、checkpoint 和人工介入。
  • LlamaIndex Workflows 强调事件驱动和类型化事件。
  • OpenAI Agents SDK 更偏运行时编排,强调 tools、handoffs、guardrails 和 tracing。

与相邻概念的区别

  • Workflow vs Agent loop:workflow 更可控、更可测;agent loop 更灵活,但更容易失控。
  • DAG vs 动态 ReAct:DAG 适合稳定业务流程;动态 ReAct 适合开放任务求解。
  • 显式状态 vs 隐式对话历史:显式状态更利于恢复、审计与并发。

设计时真正要权衡什么

  • 稳定性 vs 灵活性:流程越确定,越好管控;但对开放任务适应性更弱。
  • 中心调度 vs 分布式协作:前者更统一,后者更灵活但更难调试。
  • 同步链路 vs 异步事件:同步易理解,异步更适合长任务和外部依赖。

容易踩的坑

  • 全靠对话历史传状态,没有结构化 state。
  • 条件分支不清,自由文本直接决定流转。
  • 并行步骤没有做幂等与归并。
  • 外部工具超时后没有重试、补偿或熔断。
  • 人工审批点放得太晚,高风险动作已执行。
  • 长链路全交给一个 Agent 自己想,导致成本和行为失控。

工程落地时我会怎么做

  • 稳定业务优先 workflow-first,不要一上来 full agent。
  • 关键状态字段显式建模并强类型化。
  • 条件分支尽量使用结构化判断,不要直接依赖自由文本。
  • 对外部副作用节点增加重试、超时、熔断和补偿逻辑。
  • 高风险写操作前置审批节点。
  • 全链路 tracing:节点输入、输出、耗时、token、工具调用轨迹都要记录。

如果要对外讲,可以怎么概括

“工作流编排的核心思想,是用确定性流程去包裹不确定性的模型推理。这样做的价值不只是更稳定,还包括状态可恢复、成本可控制、失败可回放。对稳定业务场景,我通常优先 workflow-first,而不是让一个 Agent 全程自由发挥。”

最后记几条

  1. 工作流编排本质是给 Agent 套上可治理的执行骨架。
  2. 显式状态比纯对话历史更适合复杂系统。
  3. 并行、审批、补偿和 tracing 是落地关键。
  4. 稳定业务优先 DAG / state graph。
  5. 自由 Agent loop 更适合开放任务,不适合所有生产链路。

参考资料

延伸阅读