外观
Tool Calling 与普通 JSON 输出有什么区别?
3 分钟速学卡
30 秒口述: 普通 JSON 输出只约束模型返回一种数据形状,Tool Calling 还表达“选择哪个已注册工具、提供什么参数”,并由宿主程序完成校验、授权、执行和结果回传。模型发出的工具调用只是执行意图,不等于工具已经成功,更不等于可以绕过业务权限。生产系统要验证 Schema、工具白名单、身份作用域、幂等键、超时与审计,并把执行结果作为新消息返回模型。
- 本质: JSON 描述数据,Tool Calling 描述受控执行意图,真正执行权属于宿主系统。
- 核心机制: 模型调用不等于工具成功;Schema 之外还有身份和业务授权。
- 关键判断: 副作用工具必须幂等、可审计;Tool Result 要回到 Agent 状态中。
- 项目落地: 示例项目:退款 Agent 可以生成 create_refund_request 意图,但服务端重新校验订单归属、退款上限与审批状态;实际退款由支付域执行。
- 边界与坑: “模型输出 JSON 就是 Tool Calling。” 缺少工具注册、选择、执行和结果回传语义;“Schema 通过就安全。” 还要验证身份、业务权限和副作用。
目录
面试官为什么问
这道题考察协议语义、执行责任和安全边界,能识别“结构化输出”和“产生真实副作用”之间的鸿沟。
小白先看懂
JSON 像填好一张申请表;Tool Calling 像把申请表提交到指定窗口,但窗口仍要验身份、校验字段、执行并回执。填表本身不会自动转账。
映射关系:表格格式是 JSON Schema,窗口名称是工具名,身份证核验是授权,办理结果是 Tool Result。类比边界是不同模型 API 的具体消息协议并不完全一致。
主题教学图片
图:教学图片|Tool Calling 与普通 JSON 输出有什么区别?
替代文本: 围绕“Tool Calling 与普通 JSON 输出有什么区别?”组织的中文教学图,通过分区、箭头和标签解释核心机制。

读图结论: 模型表达调用意图,宿主系统掌握执行权。
这张图片用于建立主题机制的直觉。精确公式、参数、失败分支和事实边界仍以正文与 Mermaid 为准。
图片生成记录: model=gpt-image-2,generated=2026-07-15,prompt_version=v1,reviewed=2026-07-16,review_basis=user-confirmed;查看生成 Prompt。
图:技术调用流程|工具意图到真实执行
替代文本: 模型选择工具并生成参数后,宿主程序依次进行 Schema、权限和幂等校验,执行工具并回传结果;普通 JSON 在结构化输出处结束。
图表加载中…
读图结论: Tool Calling 比 JSON 多的是工具选择和执行闭环,真实副作用始终由受控宿主负责。
工具描述影响模型选用,但不是安全边界;服务端必须独立校验。执行回执要区分业务失败、系统失败和未知状态。
核心原理
工具契约至少包含稳定名称、用途、参数 Schema、错误语义和权限要求。副作用操作应分“计划/预览”和“确认执行”,并为重试携带幂等键。
项目和生产视角
示例项目: 退款 Agent 可以生成 create_refund_request 意图,但服务端重新校验订单归属、退款上限与审批状态;实际退款由支付域执行。该结构用于说明边界,不代表真实项目实现。
常见错误回答
- “模型输出 JSON 就是 Tool Calling。” 缺少工具注册、选择、执行和结果回传语义。
- “Schema 通过就安全。” 还要验证身份、业务权限和副作用。
- “超时后直接重试。” 首次调用可能已成功,需幂等与状态查询。
递进追问
- 工具描述应该包含哪些信息?
- 如何处理模型生成的未知字段?
- 副作用工具超时未知时怎么办?
- 如何避免工具返回内容注入下一轮?
关联阅读
总结
一句话记忆: JSON 描述数据,Tool Calling 描述受控执行意图,真正执行权属于宿主系统。
- 模型调用不等于工具成功;
- Schema 之外还有身份和业务授权;
- 副作用工具必须幂等、可审计;
- Tool Result 要回到 Agent 状态中。