先记住这个答案
先看执行路径由谁决定。工作流由代码预先定义步骤、分支和循环,模型可以参与分类或生成,但只能在编排好的范围内运行。自主 Agent 则根据目标和中间反馈,动态选择下一步行动或工具。步骤可预先分解、分支能够明确约束时,工作流通常更容易测试和控制;所需步骤难以预知时,可以评估 Agent 是否带来更高的任务成功率。选型还要比较成本、延迟与错误恢复能力,不能只按步骤多少判断。
- 任务可预测、步骤固定,优先工作流。
- 步骤难预设且需动态决策,考虑 Agent。
- Agent 增加延迟成本,需可验证收益。
判定机制:可预测性与可分解性
固定工作流并不等于一条没有分支的直线。它可以包含条件路由、并行执行、检查和重试;关键是允许的控制路径由开发者编排。步骤也不必每个都调用模型,例如订单查询可以是普通 API 调用。预设路径提高的是执行过程的可控性,并不能保证模型每次生成相同答案。
自主 Agent 适用于开放式问题,难以预测所需步骤数或硬编码固定路径,LLM 需在循环中自主规划并调用工具。关键机制是环境反馈:每个工具调用结果或代码执行输出成为下一步决策依据。若缺少真实环境反馈而仅靠模型自我判断,Agent 容易漂移。
场景:客服工单分类与处理
假设客服系统按既定售后政策处理“未收到订单”的工单。工作流先读取物流和签收信息,再根据明确规则选择继续查询、解释配送状态或进入退款审核。输入可以是自然语言,分类可以由模型完成,但不能仅凭“未收到”就直接退款;订单状态与政策判断仍需在执行前核对。
若无法预先规定何时追问、查询哪些信息源或何时升级,例如“为什么我的账户被冻结”,才可能需要 Agent:它根据工具结果自主决定查账户日志、知识库或创建工单,步骤随会话和环境反馈变化。若这些分支仍能预先枚举并用代码编排,仍应优先工作流。
失败边界:何时固定与自主都会失控
工作流容易遇到的问题是预设分支没有覆盖实际输入,或对中间结果的假设过于简单。例如一条工单同时包含退款与技术排查,单一分类可能丢失其中一个诉求。可以通过多标签路由、异常分支或人工接管补充覆盖;这仍是工作流,不意味着必须改成完全自主规划。
自主 Agent 的失效条件:当工具错误率高或反馈信号噪声大时,错误可能逐轮累积。且 Agent 的每次 LLM 调用都会增加延迟和成本;若任务实际只需固定三步,Agent 通常没有必要。缓解:限最大迭代次数、设人工检查点、在沙箱测试;若任务可被固定分解,优先使用工作流。
容易答错的地方
- 认为所有多步骤都必须用 Agent
- 多步骤不等于需要 Agent。若步骤可明确分解且顺序固定,工作流更可控。以客服退款为例,固定路由到退款流程通常比让模型自由发挥更可靠且成本更低。当步骤难以预先确定、无法硬编码固定路径,且需要根据环境反馈动态调整时,再考虑升级为 Agent。
- 忽视环境反馈的真实性
- Agent 不能只靠模型自我判断,必须获取环境真实反馈(如工具返回值、代码执行结果)。若工具返回不可靠或调用失败,Agent 可能基于不完整或错误的信息继续行动,从而累积错误。反馈质量直接影响 Agent 能否可靠评估进展。
面试官还会怎么问?
那么评估 Agent 和 Workflow 哪个更好,应该用什么指标?
不能仅看最终答案正确率,必须定义任务级别指标:成功率、用户解决率、错误恢复率。工作流侧重步骤执行的准确率与异常率;Agent 侧重多轮任务完成率与成本。用回放和测试集持续对比。
如果任务介于两者之间,有混合模式吗?
有。常见混合是工作流内部嵌入 Agent,如主流程用固定步骤,但某个子任务需要开放决策时让模型自主。例:先生成大纲(固定模板),再对每节用 Agent 收集资料。需保持边界清晰,避免职责混乱。
给 Agent 设置最大迭代数,如何避免过早截止?
根据任务复杂度设置迭代上限,达到上限仍未完成时暂停并转人工处理。还可以把同一工具连续失败、重复无进展等信号作为保护条件,触发暂停或人工检查。此类条件应与最大迭代数并用;是否更有效需用任务测试集验证,不能预先保证。
参考资料
示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。