第 2 章 · Agent 与工具调用:从 ReAct 到工作流
考点梳理
2.1 Agent 三要素(“循环体”)
Agent = 模型(大脑) + 工具(手脚) + 循环(思考→行动→观察)
| 要素 | 内容 | 要点 |
|---|---|---|
| 模型 | 负责决策(下一步干什么) | 要能按格式输出动作(工具调用能力) |
| 工具 | 搜索/数据库/API/代码执行 | 每个工具要有清晰描述 + 参数 schema |
| 循环 | 思考 → 行动 → 观察 → 再思考 | 要有限步/超时(防死循环) |
记忆锚:“大脑手脚加循环,步数超时必设限”。
2.2 ReAct 模式(“最经典循环”)
Thought(思考:我要查什么)
↓
Action(行动:调用 search("北京天气"))
↓
Observation(观察:返回"晴 26℃")
↓
Thought(思考:够了,可以答了)
↓
Final Answer(最终回答)
关键:“观察喂回模型,模型决定继续还是结束”——“Agent 的’智能’在循环,不在单次调用”。
2.3 工具调用(“Function Calling”)
工具定义 3 要素(“模型按这个决定调不调”):
① 名字 + 描述("做什么"——描述质量决定调用准确率)
② 参数 schema(JSON:字段/类型/必填/说明)
③ 返回结构(模型能读得懂的 Observation)
生产注意(“3 件”):
| 件 | 内容 |
|---|---|
| 参数校验 | 模型给的参数先校验再执行(“别直接信模型”) |
| 权限最小 | 工具权限按最小必要给(“写库/删数据要确认”) |
| 幂等/日志 | 工具调用记日志(“哪步调了什么、返回什么"可追溯) |
记忆锚:“描述要写清,参数先校验,权限给最小,全程有日志”。
2.4 Agent vs 工作流(“选型核心”)
| 维度 | 工作流(Workflow) | Agent |
|---|---|---|
| 路径 | 人设计死步骤(A→B→C) | 模型自主决定下一步 |
| 可控性 | 高(每步确定) | 低(可能跑偏) |
| 成本 | 低(步数固定) | 高(步数不固定) |
| 适用 | 步骤固定/合规要求高(报销审核/客服 SOP) | 开放任务(调研/多工具协作) |
选型口诀:“步骤固定用工作流,开放任务用 Agent,混合场景’工作流骨架 + 关键步 Agent’”——“别为了 Agent 而 Agent”。
2.5 生产约束(“Agent 上线 4 闸”)
| 闸 | 内容 | 典型值(示例) |
|---|---|---|
| 步数上限 | 最多思考-行动几轮 | 5~10 步(超了 → 兜底/人工) |
| 超时 | 单次任务总时长 | 30s~2min(按任务) |
| 人工确认 | 高风险动作必须人确认 | 写库/支付/删除 → 必确认 |
| 降级 | 卡住/超步 → 降级路径 | 转人工 / 给部分结果 + 说明 |
记忆锚:“步数、超时、确认、降级——四闸缺一不可”。
🧠 记忆工具箱
口诀速记
- 三要素:“大脑手脚加循环”;
- ReAct:“想→做→看→再想,够了就答”;
- 工具:“描述写清参数校验,权限最小日志全程”;
- 选型:“固定用流程,开放用 Agent,混合骨架加关键步”;
- 约束:“步数超时确认降级”(“4 闸”)。
场景锚点
- Agent 想象”“派实习生办差”":你不是实习生(不需要跑腿),你是"派活的组长"(“定边界”)——“模型 = 实习生(聪明但可能跑偏);工具 = 办公室设备(查资料/打电话/发邮件);循环 = 办差过程(查一下→做一下→看结果→再决定)”——“派活必须定边界:最多跑 10 趟(步数)、半天必须回来(超时)、花钱的事先问我(确认)、卡住了先交部分进度(降级)”——“不设边界的实习生 = 生产事故”。
⚠️ 易错提醒
- “为了 Agent 而 Agent” = 高频扣分点:“步骤固定的业务流用工作流更稳更便宜”(“评审必问’为什么不用工作流’”);
- 工具"没设步数上限" = 死循环风险:“模型可能反复调同一个工具”(“步数 + 超时双保险”);
- 工具调用"直接信模型参数" = 安全事故:“参数先校验再执行”(“模型会编参数”);
- 高风险动作"不确认就执行" = 事故:“写库/支付/删除必须人工确认”(“Agent 再聪明也不能裸奔写生产库”)。