SPT术语库

结构化输出 Structured Output

应用要让 AI 返回订单摘要,后续代码需要读取 status、total 和 next_step,而不是从一段自由文本里猜字段。

AI 与智能体约 10 分钟 · 从真实需求理解

1为什么 AI 返回了 JSON,代码还是不能直接用?

STRUCTURED OUTPUT · SCHEMA + VALIDATE先让返回可解析,再判断内容能不能用

结构合同挡住类型错误;通过之后,事实仍要单独核验。

CONTRACT → PARSE → TRUST
SCHEMAORDER SUMMARY
  • statusstringrequired
  • totalnumberrequired
  • next_stepstringrequired
RAW MODEL OUTPUTMODEL
{ status: 'ready', total: '3', next_step: 'ship' }

JSON 能解析,但 total 的类型不符合 schema

FIELD CHECKWAITING
total: expected number · received string

结构不合约,先拒绝这一份结果

CONTENT CHECKSTRUCTURE OK · FACTS UNVERIFIED
修正后可读取字段;金额和状态仍需应用或权威来源确认

结构化输出要求模型按预先约定的 schema 返回对象,让应用可以稳定读取字段,而不是从自由文本里猜答案。应用仍要检查字段是否齐全、类型是否正确,再决定能不能继续处理。

  • schema 先声明字段名、类型和必填关系,模型输出要对着这份合同返回。
  • 解析成功不代表字段内容正确;total 写成字符串、缺少 next_step 等问题仍要拒绝或重试。
  • 结构校验通过后,订单金额、库存和状态等事实还要由应用或权威数据来源确认。

2结构化输出不是事实核验,也不是固定答案

结构化输出约束的是返回长什么样,内容是否真实、是否有权限使用,仍是应用和数据来源的责任。一个格式完全正确的对象,也可能包含过时或编造的数值。

  • schema 通过说明字段名和类型合格,不说明 total 一定来自真实订单。
  • 它比自由文本更容易解析,但仍要处理缺字段、类型错误、枚举值不合法和模型拒绝返回。

看到“JSON 合法”时,还要继续问:内容由谁确认?失败后应用是重试、提示用户,还是回到权威接口读取?

3结构化输出的四个边界

SCHEMAstatus · stringtotal · number · required
RAW MODEL OUTPUTtotal: "3"先接住原始对象
FIELD CHECKREJECTED → FIXstring ≠ number
CONTENT CHECK结构 OK · 事实待核验

拆开这条链,可以看到结构化输出不是“让模型返回 JSON”这么简单,而是从字段合同一路走到内容核验。

  • SCHEMA 说明字段名、类型和必填关系,给应用一个可执行的返回合同。
  • RAW MODEL OUTPUT 是模型实际返回的对象,必须先按原样接住再检查。
  • FIELD CHECK 负责发现缺字段和类型错误,失败结果不能直接交给后续代码。
  • CONTENT CHECK 把结构通过与事实可信分开,必要时继续查应用数据或权威来源。

4怎样把结构化输出需求交给 Agent?

请让订单摘要返回固定对象:status 必须是字符串,total 必须是数字,next_step 必须是字符串且不能为空。先展示模型原始返回,再按 schema 检查缺字段和类型错误;不合格就拒绝或重试。即使结构通过,也要从应用或权威订单接口核验 total 和 status,不能把“JSON 合法”当成事实正确。

5不用背,看看你能不能判断

1 / 3

结构化输出首先解决什么问题?

请选择一个最符合题意的答案

选择答案后自动进入下一题

社区延伸

看别人真实遇到过什么

社区帖子还没有关联到这个词条。