结构化输出、JSON Schema 与工具调用
让模型输出能够被系统可靠消费并执行动作。
- 用自己的话解释“结构化输出、JSON Schema 与工具调用”及其核心术语。
- 在真实 AI 产品场景中识别何时应该使用本课方法。
- 完成一份可沉淀进“Prompt 模板、RAG 流程、Agent 工作流与评测集”阶段任务的实践产出。
REAL SCENE
先从一个真实场景开始
模型返回看似合法的 JSON,却把金额写成“很多”、日期写成过去、工具参数带着另一个用户的 resourceId。Function Calling 只是在结构上提出调用建议,不能让模型获得授权,也不能保证参数合法或操作安全。
PLAIN EXPLANATION
说人话:它到底是什么?
结构化输出把自然语言结果限制为字段、类型、枚举和嵌套关系,JSON Schema 可用于校验。Function Calling 让模型根据工具描述生成工具名与参数,应用程序决定是否调用并把结果返回模型。完整链路必须经过参数校验、身份和资源授权、业务规则、幂等、确认、执行、审计和错误处理;模型永远不是权限来源。
Schema 与语义校验
Schema 能检查字符串、数字、必填、枚举和范围,却不能单独判断订单是否属于当前用户或日期是否符合业务规则。失败应返回可修复错误,有限次数重试后转人工或降级。
- 禁止未知字段减少注入面
- 金额使用精确类型和币种
- 区分格式合法与业务合法
工具描述与最小能力
工具名称、用途、参数和副作用要具体,避免一个万能 execute。只向当前场景暴露必要工具,每个调用使用当前用户身份在服务端重新授权,敏感参数不由模型凭空构造。
- 读工具与写工具分开
- 资源 ID 来自受信上下文
- 高风险工具默认不自动执行
执行生命周期
调用前展示影响并确认,使用幂等键防重复;执行后保存结果、状态和审计,再决定如何向模型反馈。超时不代表未执行,需要查询权威状态,不能盲目重试产生副作用。
- proposal 与 execution 分离
- 错误码映射恢复策略
- 工具结果视为数据而非新指令
结构合法、业务合法和权限合法必须分别检查。
模型只提出工具调用建议,服务端持有最终授权与执行权。
有副作用调用需确认、幂等、权威状态与审计。
KEY POINT
这节课最重要的结论
- 为什么重要
- 这决定了与算法和工程团队共同设计 Prompt、RAG、Agent 和评测方案时,团队是否拥有一致、可验证的判断标准。
- 适用边界
- 当问题目标、数据来源或失败成本发生变化时,不要机械套用;先重新确认假设和风险等级。
EXAMPLES
正确案例与常见反例
助手生成 create_refund_proposal 参数,Schema 校验金额与原因;服务端从会话和订单重新计算可退上限及资源归属。用户看到金额与后果后确认,执行使用 idempotencyKey,超时后查询退款状态,所有尝试写入审计。
后端解析模型 JSON 后直接反射调用任意函数,信任模型给出的 userId 和金额。网络超时便无限重试,产生三次退款;用户没看见确认,日志也只保存最终文案,无法追踪是谁、何时、用什么参数执行。
“工具白名单按会话下发,resourceId 从服务端上下文注入而非模型参数。先 schema 与业务校验,再 authorize(currentUser, resource, action);写操作需 proposal、确认和幂等键,超时查状态,不直接重放。”
HANDS-ON
必做实操任务
本节产出:“Prompt 模板、RAG 流程、Agent 工作流与评测集”阶段任务中的《结构化输出、JSON Schema 与工具调用》一页实践卡
步骤 1为一个工具定义名称、用途、参数 Schema、返回、错误和副作用。
步骤 2列出 Schema 合法但业务或权限非法的五组参数并设计拦截。
步骤 3画出模型建议、用户确认、服务端授权、执行、审计和结果反馈。
步骤 4模拟超时与重复请求,验证幂等、状态查询和人工恢复。
实践结果会自动保存在本机,并进入项目工坊的任务来源。
用户任务:____
工具名与唯一用途:____
副作用与风险级别:____
参数|类型|来源|必填|范围:____
JSON Schema:____
业务校验:____
身份、租户、资源与动作授权:____
模型不可提供的受信参数:____
proposal 展示:____ 确认:____
幂等键:____
超时状态查询:____
错误、重试与补偿:____
审计字段:____
降级/人工:____CHECKLIST
产品经理工作检查表
MASTERY QUIZ
掌握测验
达到 60% 即可完成本课。
INTERVIEW
常见面试题
展开参考回答
把模型限制为生成白名单工具和结构化参数,Schema 后继续做业务校验与当前身份资源级授权;受信 ID 由服务端注入。写操作先形成 proposal,用户确认后用幂等键执行,超时查权威状态,结果与错误按契约返回。全程记录模型、参数、授权、操作者和结果,高风险提供撤销、补偿或人工。
RECAP & FURTHER READING
重点回顾、延伸阅读与下一步
- 1
围绕“结构化输出、JSON Schema 与工具调用”继续阅读:查阅对应技术的官方入门文档,重点核对输入输出、失败方式、权限边界与可观测性。
- 2
用“JSON Schema、Function Calling、参数校验”作为检索词,分别写下一条定义、一条适用边界和一个反例。
- 3
对照本课正确案例与反例,寻找一个公开案例并记录其中可复用的判断与不能照搬的条件。