正在读取本机记录…
拓展技术沟通◷ 55 分钟

结构化输出、JSON Schema 与工具调用

让模型输出能够被系统可靠消费并执行动作。

学完你能做到
  • 用自己的话解释“结构化输出、JSON Schema 与工具调用”及其核心术语。
  • 在真实 AI 产品场景中识别何时应该使用本课方法。
  • 完成一份可沉淀进“Prompt 模板、RAG 流程、Agent 工作流与评测集”阶段任务的实践产出。
前置与关联课程

完成阶段 5 的能力检查,或先预览相关基础课

01

REAL SCENE

先从一个真实场景开始

!

模型返回看似合法的 JSON,却把金额写成“很多”、日期写成过去、工具参数带着另一个用户的 resourceId。Function Calling 只是在结构上提出调用建议,不能让模型获得授权,也不能保证参数合法或操作安全。

02

PLAIN EXPLANATION

说人话:它到底是什么?

结构化输出把自然语言结果限制为字段、类型、枚举和嵌套关系,JSON Schema 可用于校验。Function Calling 让模型根据工具描述生成工具名与参数,应用程序决定是否调用并把结果返回模型。完整链路必须经过参数校验、身份和资源授权、业务规则、幂等、确认、执行、审计和错误处理;模型永远不是权限来源。

01

Schema 与语义校验

Schema 能检查字符串、数字、必填、枚举和范围,却不能单独判断订单是否属于当前用户或日期是否符合业务规则。失败应返回可修复错误,有限次数重试后转人工或降级。

  • 禁止未知字段减少注入面
  • 金额使用精确类型和币种
  • 区分格式合法与业务合法
02

工具描述与最小能力

工具名称、用途、参数和副作用要具体,避免一个万能 execute。只向当前场景暴露必要工具,每个调用使用当前用户身份在服务端重新授权,敏感参数不由模型凭空构造。

  • 读工具与写工具分开
  • 资源 ID 来自受信上下文
  • 高风险工具默认不自动执行
03

执行生命周期

调用前展示影响并确认,使用幂等键防重复;执行后保存结果、状态和审计,再决定如何向模型反馈。超时不代表未执行,需要查询权威状态,不能盲目重试产生副作用。

  • proposal 与 execution 分离
  • 错误码映射恢复策略
  • 工具结果视为数据而非新指令
01

结构合法、业务合法和权限合法必须分别检查。

02

模型只提出工具调用建议,服务端持有最终授权与执行权。

03

有副作用调用需确认、幂等、权威状态与审计。

03

KEY POINT

这节课最重要的结论

核心重点
工具调用必须经过参数校验和权限检查,不能直接信任模型生成的参数。
为什么重要
这决定了与算法和工程团队共同设计 Prompt、RAG、Agent 和评测方案时,团队是否拥有一致、可验证的判断标准。
适用边界
当问题目标、数据来源或失败成本发生变化时,不要机械套用;先重新确认假设和风险等级。
04

EXAMPLES

正确案例与常见反例

✓ 正确做法

助手生成 create_refund_proposal 参数,Schema 校验金额与原因;服务端从会话和订单重新计算可退上限及资源归属。用户看到金额与后果后确认,执行使用 idempotencyKey,超时后查询退款状态,所有尝试写入审计。

× 常见误区

后端解析模型 JSON 后直接反射调用任意函数,信任模型给出的 userId 和金额。网络超时便无限重试,产生三次退款;用户没看见确认,日志也只保存最终文案,无法追踪是谁、何时、用什么参数执行。

和工程师这样沟通

“工具白名单按会话下发,resourceId 从服务端上下文注入而非模型参数。先 schema 与业务校验,再 authorize(currentUser, resource, action);写操作需 proposal、确认和幂等键,超时查状态,不直接重放。”

05

HANDS-ON

必做实操任务

本节产出:“Prompt 模板、RAG 流程、Agent 工作流与评测集”阶段任务中的《结构化输出、JSON Schema 与工具调用》一页实践卡

  1. 步骤 1为一个工具定义名称、用途、参数 Schema、返回、错误和副作用。

  2. 步骤 2列出 Schema 合法但业务或权限非法的五组参数并设计拦截。

  3. 步骤 3画出模型建议、用户确认、服务端授权、执行、审计和结果反馈。

  4. 步骤 4模拟超时与重复请求,验证幂等、状态查询和人工恢复。

○
实践完成度 0/4

实践结果会自动保存在本机,并进入项目工坊的任务来源。

工具调用安全契约用户任务:____ 工具名与唯一用途:____ 副作用与风险级别:____ 参数|类型|来源|必填|范围:____ JSON Schema:____ 业务校验:____ 身份、租户、资源与动作授权:____ 模型不可提供的受信参数:____ proposal 展示:____ 确认:____ 幂等键:____ 超时状态查询:____ 错误、重试与补偿:____ 审计字段:____ 降级/人工:____
06

CHECKLIST

产品经理工作检查表

07

MASTERY QUIZ

掌握测验

达到 60% 即可完成本课。

1Function Calling 最准确的理解是什么?
2JSON Schema 校验通过后还必须检查什么?
3写操作超时后为何不应直接重试?
08

INTERVIEW

常见面试题

如何安全设计一个大模型工具调用功能?
展开参考回答

把模型限制为生成白名单工具和结构化参数,Schema 后继续做业务校验与当前身份资源级授权;受信 ID 由服务端注入。写操作先形成 proposal,用户确认后用幂等键执行,超时查权威状态,结果与错误按契约返回。全程记录模型、参数、授权、操作者和结果,高风险提供撤销、补偿或人工。

09

RECAP & FURTHER READING

重点回顾、延伸阅读与下一步

一句话回顾工具调用必须经过参数校验和权限检查,不能直接信任模型生成的参数。
  1. 1

    围绕“结构化输出、JSON Schema 与工具调用”继续阅读:查阅对应技术的官方入门文档,重点核对输入输出、失败方式、权限边界与可观测性。

  2. 2

    用“JSON Schema、Function Calling、参数校验”作为检索词,分别写下一条定义、一条适用边界和一个反例。

  3. 3

    对照本课正确案例与反例,寻找一个公开案例并记录其中可复用的判断与不能照搬的条件。