AI应用高级工程师 · 第 07 / 12 章

Agent工作流与可靠执行

Agent不是“更聪明的聊天机器人”,而是模型在有限循环里观察状态、选择下一步、调用工具、读取结果,直到完成、拒绝或交给人工。可靠性来自工作流和边界。

上一章
已经会让模型提出一次工具调用,并由后端安全执行。
→
本章解决
怎样组织多步骤任务、保存进度、限制循环并在失败后恢复。
→
下一章
深入保存会话状态、长期记忆和并发更新。
学完后的结果:你能判断何时需要工作流、何时需要Agent,并设计可观察、可恢复、不会无限行动的执行系统。

本章目录

阅读过程中可按 Ctrl + Z 快速返回当前页面的本章目录;也可以点击右下角按钮。

本章思维导图

把多个判断和工具组织成任务

知识流向:先完成左侧基础,再进入中间机制,最后用右侧工程控制把它变成可上线能力。节点可直接点击跳转。

MODULE 01

Workflow 与 Agent 的边界

按照本模块顺序完成以下知识点,再进入下一模块。

A01Workflow 与 Agent 的边界

Workflow 工作流

程序预先规定路径

步骤和分支主要由代码决定,例如查订单→检查规则→用户确认→退款。稳定、可测,适合高风险业务。

Agent 智能体

模型动态选择下一步

程序提供目标、工具和边界,模型根据中间结果决定下一步。灵活,但更难预测和评测。

默认选择:退款这类高风险流程用确定性Workflow主导,只在“理解用户、选择查询工具、整理信息”等低风险环节使用Agent判断。

生活中的例子:工作流像固定地铁线路;Agent像出租车司机可动态选路。运送危险品时更适合固定且受控的线路。

A02Agent循环在系统哪里运行

Agent循环运行在你控制的后端编排器中,不在模型内部自动永久运行。每一轮后端把当前目标、状态和工具结果发给模型,模型返回下一动作。

for step in 1..max_steps:
    decision = 调用模型(目标, 当前状态, 可用工具)
    if decision是最终答案: 结束
    if decision是工具调用: 校验并执行,保存结果
    if 超预算/高风险/连续失败: 停止并转人工
生活中的例子:像棋手每走一步都要重新看棋盘;循环由比赛裁判控制,不是棋手想下多久就下多久。

A03状态机让复杂任务可解释

程序控制结构 State Machine状态机把流程表示成有限状态和允许的转换。状态保存在数据库,模型只能提出下一状态,程序检查转换是否合法。

collecting_info
→
checking_order
→
awaiting_confirmation
→
refund_completed

不允许从collecting_info直接跳到refund_completed;即使模型这样要求,状态机也拒绝。

生活中的例子:像快递状态只能从“已揽收”走到“运输中”,不能从“待付款”直接跳到“已签收”。
MODULE 02

执行分工、状态保存与停止条件

按照本模块顺序完成以下知识点,再进入下一模块。

A04Planner、Executor 与 Verifier 的职责

Planner 规划器

把目标拆成步骤或选择下一步,可以是模型或固定规则。

Executor 执行器

后端按权限调用真实工具,绝不是让模型自己宣称执行。

Verifier 验证器

检查结果是否满足完成条件;高风险验证尽量使用规则和数据库事实。

Orchestrator 编排器

保存状态、组织循环、处理超时、预算、日志与人工接管。

生活中的例子:像装修:设计师规划,施工队执行,监理验收,项目经理协调进度和预算。

A05Checkpoint检查点与断点恢复

Checkpoint是每个重要步骤后保存的可靠快照,包括任务ID、当前状态、已完成步骤、工具调用ID、结果摘要、下一步和版本。服务重启后从最后检查点继续。

{
 "task_id":"refund-task-88",
 "state":"awaiting_confirmation",
 "completed":["get_order","check_policy"],
 "pending":"user_confirmation",
 "workflow_version":"refund-v3"
}

不要只保存一大段聊天文字;程序需要明确知道哪些真实操作已经成功。

生活中的例子:像游戏存档;断电后从最近存档继续,而不是完全重来或猜测之前做到了哪里。

A06有限循环、预算和停止条件

Agent必须同时有:最大步数、最大工具调用数、总Token/费用预算、总耗时、单工具超时、连续失败上限、允许工具列表和明确完成条件。

成功停止

完成条件由程序验证。

安全停止

需要确认、权限不足或证据不足。

异常停止

超预算、重复动作、工具连续失败。

生活中的例子:像出租车设置目的地、预算和最晚到达时间,超过条件就停车求助,而不是无限绕路。

A07Human-in-the-loop 人工控制点

人工控制点 系统要保存并展示:用户目标、模型建议、依据资料、准备执行的工具与参数、风险提示、已完成步骤。人工可以批准、修改、拒绝或接管,决定也要写审计日志。

如果人工只能看到“AI不确定,请处理”,却看不到上下文和已执行步骤,转人工会造成重复询问和误操作。

生活中的例子:像手术前签字:医生要展示方案、风险和当前检查结果,不能只说“系统不确定”。
MODULE 03

复杂失败与多 Agent 边界

按照本模块顺序完成以下知识点,再进入下一模块。

A08失败补偿与Saga思路

跨多个系统的操作很难使用一个数据库事务全部回滚。Saga表示把长流程拆成多个本地操作,并为已成功步骤设计补偿动作。

成功:创建退款 → 取消发货 → 发通知
若取消发货失败:
  不要再次创建退款
  记录退款已创建、发货取消失败
  尝试补偿/人工介入,并告知真实状态

补偿不一定能恢复原状,例如邮件发出后无法“收回用户已经看到的内容”,因此执行前确认更重要。

生活中的例子:像旅行订了机票和酒店,酒店失败时要取消或人工处理已订机票,而不是把所有步骤盲目再做一次。

A09多 Agent 的适用条件

多Agent是多个受限角色通过消息协作,例如检索Agent、订单Agent和审查Agent。它会增加调用次数、延迟、状态同步和错误传播。

默认不用:一个模型加清晰工具和确定性工作流能完成时,不拆多Agent。只有角色权限必须隔离、任务确实可并行、或不同专业模型收益经评测证实时才使用。

生活中的例子:多人团队能分工但沟通成本更高;一个人能完成的任务,不必强行开十人会议。

A10退款Agent完整执行轨迹

request_id=req-9 / task_id=task-88
1 intent识别:退款进度查询(不改业务)
2 get_order:成功,订单属于当前用户
3 retrieve_policy:命中v4有效政策
4 判断:只需查询,无写操作
5 get_refund_status:成功
6 verifier:订单号、状态、引用齐全
7 final:生成回答并记录trace

若用户要求立即退款:进入awaiting_confirmation,不直接执行。
生活中的例子:像查看银行流水:每一步都有时间、负责人和凭证,最后能复盘整条处理轨迹。

本章总结:从哪里来,解决什么,为什么继续

上一章留下的问题怎样可靠完成多步骤任务
本章形成的能力高风险任务以工作流和状态机为骨架,Agent只在受限循环中做动态判断。
下一章必须继续解决跨轮对话怎样保存状态和记忆

本章参考的权威资料

课程讲的是跨厂商通用工程方法;具体参数会更新,真正开发时再以所选厂商最新官方文档为准。

← 上一章工具调用、Function Calling与MCP下一章 →状态、记忆与多轮会话
↑ 返回本章目录Ctrl+Z