Skip to content

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 输出有什么区别?”组织的中文教学图,通过分区、箭头和标签解释核心机制。

Tool Calling 与普通 JSON 输出有什么区别?教学图片

读图结论: 模型表达调用意图,宿主系统掌握执行权。

这张图片用于建立主题机制的直觉。精确公式、参数、失败分支和事实边界仍以正文与 Mermaid 为准。

图片生成记录: model=gpt-image-2generated=2026-07-15prompt_version=v1reviewed=2026-07-16review_basis=user-confirmed查看生成 Prompt

图:技术调用流程|工具意图到真实执行

替代文本: 模型选择工具并生成参数后,宿主程序依次进行 Schema、权限和幂等校验,执行工具并回传结果;普通 JSON 在结构化输出处结束。

图表加载中…

读图结论: Tool Calling 比 JSON 多的是工具选择和执行闭环,真实副作用始终由受控宿主负责。

工具描述影响模型选用,但不是安全边界;服务端必须独立校验。执行回执要区分业务失败、系统失败和未知状态。

核心原理

工具契约至少包含稳定名称、用途、参数 Schema、错误语义和权限要求。副作用操作应分“计划/预览”和“确认执行”,并为重试携带幂等键。

项目和生产视角

示例项目: 退款 Agent 可以生成 create_refund_request 意图,但服务端重新校验订单归属、退款上限与审批状态;实际退款由支付域执行。该结构用于说明边界,不代表真实项目实现。

常见错误回答

  • “模型输出 JSON 就是 Tool Calling。” 缺少工具注册、选择、执行和结果回传语义。
  • “Schema 通过就安全。” 还要验证身份、业务权限和副作用。
  • “超时后直接重试。” 首次调用可能已成功,需幂等与状态查询。

递进追问

  1. 工具描述应该包含哪些信息?
  2. 如何处理模型生成的未知字段?
  3. 副作用工具超时未知时怎么办?
  4. 如何避免工具返回内容注入下一轮?

关联阅读

总结

一句话记忆: JSON 描述数据,Tool Calling 描述受控执行意图,真正执行权属于宿主系统。

  • 模型调用不等于工具成功;
  • Schema 之外还有身份和业务授权;
  • 副作用工具必须幂等、可审计;
  • Tool Result 要回到 Agent 状态中。