结构化输出 Structured Output
应用要让 AI 返回订单摘要,后续代码需要读取 status、total 和 next_step,而不是从一段自由文本里猜字段。
AI 与智能体约 10 分钟 · 从真实需求理解
1为什么 AI 返回了 JSON,代码还是不能直接用?
STRUCTURED OUTPUT · SCHEMA + VALIDATE先让返回可解析,再判断内容能不能用
CONTRACT → PARSE → TRUST结构合同挡住类型错误;通过之后,事实仍要单独核验。
- statusstringrequired
- totalnumberrequired
- next_stepstringrequired
{ status: 'ready', total: '3', next_step: 'ship' }JSON 能解析,但 total 的类型不符合 schema
结构不合约,先拒绝这一份结果
结构化输出要求模型按预先约定的 schema 返回对象,让应用可以稳定读取字段,而不是从自由文本里猜答案。应用仍要检查字段是否齐全、类型是否正确,再决定能不能继续处理。
- schema 先声明字段名、类型和必填关系,模型输出要对着这份合同返回。
- 解析成功不代表字段内容正确;total 写成字符串、缺少 next_step 等问题仍要拒绝或重试。
- 结构校验通过后,订单金额、库存和状态等事实还要由应用或权威数据来源确认。
2结构化输出不是事实核验,也不是固定答案
结构化输出约束的是返回长什么样,内容是否真实、是否有权限使用,仍是应用和数据来源的责任。一个格式完全正确的对象,也可能包含过时或编造的数值。
- schema 通过说明字段名和类型合格,不说明 total 一定来自真实订单。
- 它比自由文本更容易解析,但仍要处理缺字段、类型错误、枚举值不合法和模型拒绝返回。
看到“JSON 合法”时,还要继续问:内容由谁确认?失败后应用是重试、提示用户,还是回到权威接口读取?
3结构化输出的四个边界
拆开这条链,可以看到结构化输出不是“让模型返回 JSON”这么简单,而是从字段合同一路走到内容核验。
- SCHEMA 说明字段名、类型和必填关系,给应用一个可执行的返回合同。
- RAW MODEL OUTPUT 是模型实际返回的对象,必须先按原样接住再检查。
- FIELD CHECK 负责发现缺字段和类型错误,失败结果不能直接交给后续代码。
- CONTENT CHECK 把结构通过与事实可信分开,必要时继续查应用数据或权威来源。
4怎样把结构化输出需求交给 Agent?
请让订单摘要返回固定对象:status 必须是字符串,total 必须是数字,next_step 必须是字符串且不能为空。先展示模型原始返回,再按 schema 检查缺字段和类型错误;不合格就拒绝或重试。即使结构通过,也要从应用或权威订单接口核验 total 和 status,不能把“JSON 合法”当成事实正确。
5不用背,看看你能不能判断
1 / 3
结构化输出首先解决什么问题?
请选择一个最符合题意的答案
社区延伸
看别人真实遇到过什么
社区帖子还没有关联到这个词条。