845 字
约 2 分钟
7
S20-J03 · Agent:Function Calling 与工作流
适用读者:想从"单次问答"走到"能自己动手"的人。
前置:S20-B01、S19-B02。
覆盖旧文:2309(565) 2176(233) 2114(183) = 981 点。
覆盖扩展:E-S20-008(Agent 循环与终止条件)。
上一篇:S20-J02 · 上下文与记忆:token 预算与管理
下一篇:S20-J04 · 微调与意图识别。
1. 一句话结论
Agent = 模型 + 工具 + 循环。它和"写长提示词"的差别就在那个循环:模型看完工具结果,再决定下一步。
用户请求 → 模型决定调用哪个工具 → 执行 → 结果回填 → 模型再判断 → … → 终止
2. 循环的五个要素(E-S20-008)
| 要素 | 作用 | 缺了会怎样 |
|---|---|---|
| 工具定义(schema) | 告诉模型能调什么 | 模型乱编参数 |
| 终止条件 | 何时停 | 无限循环/烧钱 |
| 最大步数 | 硬上限 | 同上 |
| 状态(记忆) | 多步上下文 | 每步都重来 |
| 错误回传 | 工具失败也要告诉模型 | 模型重复失败 |
"为什么必须有最大步数":模型可能陷入"调用—失败—再调用"的循环——这是真实存在的失控模式。
3. Function Calling 的本质
| 事实 | 说明 |
|---|---|
| 模型不执行工具 | 只输出"要调用什么 + 参数" |
| 执行在你的代码里 | 你做校验、鉴权、限流 |
| 结果是文本 | 回填后模型继续推理 |
安全边界:工具参数必须校验——模型可能生成越权参数(如 userId 被别人猜中)。这与 S17-B04 的"鉴权放网关还是服务"是同一类判断。
4. Agent vs 工作流
| 形态 | 谁决定流程 | 适合 |
|---|---|---|
| 工作流(固定编排) | 你 | 步骤稳定、要求可控 |
| Agent(模型自主) | 模型 | 步骤不确定、探索型 |
| 混合 | 你定主干、模型填细节 | 多数生产系统 |
判据:"这条流程的步骤每次都一样吗?" 一样 → 工作流(更可控、更便宜);不一样 → Agent。
"为什么不都用 Agent":不可预测 + 成本高 + 难测试——生产上多数是"工作流为主、Agent 兜底"。
5. 五个误区
| 误区 | 真相 |
|---|---|
| "Agent 能自己完成一切" | 需要工具与终止约束 |
| "模型会替我执行工具" | 只输出调用意图 |
| "工具参数不用校验" | 会越权/注入 |
| "步数不设上限也行" | 会失控 |
| "Agent 一定比工作流好" | 可控性差 |
6. 自检
- Agent 与"长提示词"的核心差别?
- 循环五要素?
- Function Calling 到底谁执行?
- 工具参数为什么必须校验?
- 什么时候该用工作流而不是 Agent?
7. 下一篇
S20-J04 · 微调与意图识别:BERT/LoRA/双模型路由
Agent 讲完,下一篇讲"什么时候该训模型而不是写提示"。
本篇属于系列《S20 · AI 应用与工程》。旧文来源:A-2309/2176/2114;扩展点 E-S20-008。
S20-J03 · Agent:Function Calling 与工作流
https://www.clxhxhhr.top/posts/5470/ 评论
0 条
还没有评论,先写一条吧。