工作流与 Agent
工作流与 Agent 的区别在于后续步骤由谁决定。工作流把步骤和分支预先写进代码,Agent 则让模型根据执行结果选择下一步动作。步骤的执行顺序和跳转方式,合起来称为控制流。
本文从单次调用、工作流和 Agent 三种结构入手,再介绍常见工作流模式,最后说明选型与混合编排。选择控制结构时,可以用这三个问题判断:
- 任务的路径能否提前写清楚?
- 多轮调用带来的收益是否足以覆盖代价?
- 哪些步骤需要模型选择,哪些步骤由程序控制?
1. 面试核心
先记住这几条,再读正文- 决策来源。 单次调用在生成后结束,工作流按代码预设的路径执行,Agent 则由模型根据观测选择后续动作。卡 · 三种结构
- 工作流的适用条件。 路径可以预先枚举、需要稳定延迟与逐步审计的任务,适合工作流。
- 动态执行的收益与代价。 Agent 利用外部观测修正动作,增加的轮次也会带来延迟、费用和错误累积。卡 · 三种结构
- 混合结构。 混合结构用工作流管理固定阶段,在需要动态决策的节点内运行受预算限制的 Agent。卡 · 常见工作流模式
2. 三种结构
选择结构前,先看一次生成是否足以完成任务。如果还要继续查询、修改或验证,就需要决定后续步骤由代码安排,还是交给模型选择。
| 结构 | 控制方式 | 典型任务 | 代价 |
|---|---|---|---|
| 单次调用 | 一次生成后结束 | 分类、抽取、改写 | 修正需要额外流程 |
| 工作流 | 预定义路径与分支 | 审批、固定查询链 | 需要覆盖失败分支 |
| Agent | 按观测选择工具与后续动作 | 排障、代码修改 | 步数与错误路径增加 |
单次调用适合分类、抽取、改写或摘要,生成后就结束。若结果有误,需要额外流程才能修正。
工作流中也能使用模型作判断。比如模型先把订单分成已发货和未发货两类,代码再进入预设的物流回复或催单分支。分类结果可以变化,但外层的分发规则与处理阶段已经确定。设计时需要覆盖失败分支,否则遇到未考虑的输入就会中断或返回错误结果。
Agent 的程序提供工具与循环边界,模型则根据当前上下文提出工具名、参数或最终回答。工具返回的数据或错误称为观测,它会影响下一轮选择。由于动作数量和顺序取决于执行结果,延迟、费用与错误路径也更难提前估算。
工作流:输入 → 提取订单号 → 查询订单 → 按状态选择固定回复分支
Agent: 输入 → 模型选择工具 → 执行 → 返回观测 → 再次选择
3. 常见工作流模式
工作流可以把多个模型调用组合起来,解决单次生成难以稳定完成的任务。常见的五种模式如下:
- 提示链:把前一步输出交给下一步,中间插入校验。比如先生成大纲,检查是否覆盖要求,再根据大纲写正文。
- 路由:先对输入分类,再进入对应的提示词、模型或处理分支。它适合类别明确、各类处理方法差异较大的输入。
- 并行:让模型同时处理独立子任务,再由代码汇总。也可以对同一个问题生成多份回答,再投票选择结果。
- 编排者—执行者:编排模型动态拆分子任务,由执行者分别完成,再集中汇总。子任务数量和内容可以随输入变化。
- 评审与修改:一次调用生成产物,另一次调用按标准评审并返回反馈。生成者据此修改,直到满足标准或达到次数上限。
编排者—执行者可以保持固定的分发与汇总阶段。即使阶段内部动态生成子任务,外层仍按预设流程运行。开放式 Agent 则持续根据观测选择后续动作,所以动态拆分本身不足以判断整体属于哪种结构。
这些工作流模式都可以在代码中规定最大步数、超时和失败分支。阶段边界明确后,就能分别测试各节点,并审计每次跳转的原因。
4. 选择条件
选型要比较任务需要怎样决策,以及业务能接受多少延迟和错误。先以最简单的可用结构为基线,再检查以下条件。
| 条件 | 选择依据 |
|---|---|
| 路径固定 | 用工作流表达分支与失败处理 |
| 下一步依赖未知结果 | 在开放步骤引入 Agent |
| 子任务独立 | 评估并行及上下文隔离的收益 |
| 延迟受限 | 比较关键路径和尾延迟 |
| 副作用高 | 执行前由程序校验授权与业务约束 |
比如客服退款可以按“查订单、校验规则、发起退款”执行,适合用工作流表示。未知故障排查则要先读取日志,再决定检查哪个服务,适合交给 Agent。混合结构可以让 Agent 负责调查,再由固定节点处理审批和写入。
转账或删除数据等动作会改变外部状态,这种影响称为副作用。执行这类动作前,程序需要校验参数、授权和业务约束,并在需要批准时等待人工确认。
在线接口还要关注 P99,也就是 99% 请求能够完成的耗时上界。严格的延迟要求下,固定步骤更容易估算执行时间。离线调研和编码任务能接受更长等待,因此可以给探索与修正留出更多轮次。
结构选定后,需要用相同任务、工具和预算做对照评测:
- 比较成功率,确认新增步骤是否改善任务结果。
- 比较耗时和总成本,确认收益是否满足业务要求。
- 检查失败类型与执行轨迹,判断额外轮次用于有效纠错,还是无效重复。
每多一轮调用,就多一次参数出错、工具失败或上下文偏离目标的机会。因此,工作流可以逐节点测试,Agent 则还要结合最终结果与完整轨迹评估。
评测方法见 Agent 评估。
面试说明选型时,要给出项目中的具体输入:哪些能被固定分支覆盖,哪些需要运行时决策。然后说明增加 Agent 后,成功率、延迟和成本发生了什么变化。
5. 常见问题
5.1 图编排算工作流还是 Agent?
两者都可以用图表示,判断依据是后续动作由谁决定。图中的节点表示处理步骤,边表示步骤之间的跳转。固定节点和条件边可以组成有次数上限的评审循环,这仍然可以是工作流。
如果模型反复选择工具,执行后又回到模型节点,图中就实现了 Agent 循环。因此,仅凭有条件边或循环,无法判断整体结构。
框架提供的状态与执行机制见 Agent 框架。
5.2 Agent 和 RAG 是什么关系?
RAG 通过先检索证据、再生成回答来补充信息,也能作为工具供 Agent 多次调用。知识问答如果一次检索就能提供所需证据,可以直接采用固定流程。
检索流程见检索增强生成(RAG)。
6 · 面试题卡片
本页题目与参考回答
6.1 Workflow 和自主 Agent 有什么区别?各自适合什么场景?
考察重点
- 解释工作流与 Agent 的后续步骤分别由谁决定。
- 根据路径是否可枚举,以及延迟、成本和审计要求选择结构。
参考回答
工作流由代码预设步骤和分支,Agent 由模型根据观测选择后续动作。
工作流中的模型仍能分类或生成,结果进入预先定义的处理阶段。Agent 则在每轮选择工具与参数,由程序执行,并限制工具范围、循环次数和预算。
固定审批、退款和报表流程的路径比较清楚,适合工作流,也便于估算延迟和逐步审计。代码修复、开放式调研和未知故障排查依赖中间结果,适合 Agent。混合系统可以用工作流管理阶段,在开放节点内运行 Agent,并规定步数、预算和失败后的处理方式。
6.2 Agent 流程一定比 LLM 单次调用更好吗?
考察重点
- 解释多轮调用怎样增加延迟、成本和错误累积。
- 用同一任务集的对照评测说明复杂结构是否带来收益。
参考回答
Agent 流程不一定更好,收益取决于任务是否需要外部观测和多轮修正。
分类、抽取或改写如果单次调用已经达标,增加循环会带来额外延迟与费用。每多一步,参数错误、工具失败和上下文偏移也会累积。任务需要查询数据、运行代码或根据结果纠错时,Agent 才能利用这些反馈改善结果。
应在同一任务集上比较成功率、延迟、总成本和失败类型。结合轨迹判断额外轮次用于有效纠错还是重复尝试,再决定收益是否足以覆盖代价。
6.3 项目选择单 Agent、多 Agent 还是 Workflow 编排,依据是什么?
考察重点
- 用具体任务的依赖和控制要求解释选型。
- 说明混合结构中哪些阶段固定,哪些节点交给 Agent 决策。
相关内容:常见工作流模式、选择条件、多 Agent 协作。
参考回答
选择依据是任务依赖、控制要求,以及同一任务集上的评测结果。
路径固定时用工作流,便于逐节点测试和审计。后续步骤取决于观测时,用单 Agent 处理开放决策。子任务独立、需要不同工具,或上下文容量成为瓶颈时,再评估多 Agent 的隔离与并行收益。
说明项目时,应给出真实任务和对照结果。比如可以用一个假设说明混合结构:80% 请求走固定分支,剩余长尾问题交给最多执行 10 步的 Agent。这些数字只是示例,实际比例和步数要从项目评测中取得。
混合结构还要规定开放节点的预算与失败出口。比较多 Agent 时,则把通信、冲突处理、汇总和跨任务调试的成本一起计入。