首页/AI/AI 应用速查/结构化输出(json_schema / JSON Mode)

结构化输出(json_schema / JSON Mode)

约束模型输出符合 JSON Schema:OpenAI 提供 response_format 的 json_schema(strict)与 JSON mode;Anthropic 常用强制工具调用变通。适合抽取、分类、入库场景。

AI 应用速查AI更新于 2026-10-13

结构化输出是什么

结构化输出让模型返回可被程序直接解析的数据,而不是一段自然语言。做法分三档:最弱的是在提示里要求返回 JSON,靠模型自觉;中间档是指定返回类型为 JSON 对象;最强的是给出 JSON Schema 约束,服务端保证输出符合模式。约束越强,下游解析越省事,但模式写得太复杂会挤压模型表达空间,也更容易触发拒绝。

基本信息

目标输出可直接解析、可直接入库的结构化数据
强度分档提示要求、返回类型约束、模式严格约束
关键参数返回格式字段加模式定义
常见形式对象、数组、枚举与嵌套结构
失败表现解析报错、字段缺失、被截断
配套措施程序侧做校验与重试,提示里写清字段含义

三档约束的取舍

方式可靠性适用
提示里要求 JSON较低,模型可能夹带解释文字快速验证与内部实验
返回类型约束中等,保证是合法 JSON结构简单、字段固定的场景
模式严格约束较高,按定义生成结果要直接入库的生产链路
自由文本加后处理取决于解析规则非关键路径的批量抽取

典型使用场景

  • 信息抽取:从合同、简历、工单里取固定字段
  • 分类打标:输出固定枚举值,便于统计与路由
  • 数据清洗:把非结构化文本转成表格记录
  • 流程编排:让模型输出调用意图与参数,供程序执行
  • 批量处理:为下游系统提供稳定的数据契约

模式约束的写法要点

模式约束的写法要点
{
  "model": "gpt-4o",
  "response_format": { "type": "json_schema",
    "json_schema": { "name": "invoice", "strict": true,
      "schema": { "type": "object",
        "properties": { "金额": { "type": "number" }, "开票方": { "type": "string" } },
        "required": ["金额", "开票方"], "additionalProperties": false } } },
  "messages": [ { "role": "user", "content": "从这段文本里抽取开票信息" } ]
}
# 模式里把不需要的额外字段关掉,避免模型自由发挥出计划外的键

常见失败与处理

现象原因处理
解析直接报错输出里混入说明文字或代码块围栏用模式约束,并在提示里禁止额外文字
字段缺失未把字段列入必填模式里标记必填,程序侧校验后重试
内容被截断输出长度上限过小调大上限,或拆成多次抽取
枚举值超出预期模式里未限定取值范围把取值限定为枚举,程序侧再兜底
模型拒绝执行模式过于复杂或任务本身受限简化结构,拆分为多步调用
解析失败不要无限重试:把失败样例连同模式一起回传再试一次通常有效,连续失败应记录并转人工或降级。
结构化输出保证的是格式合法,不保证内容正确:字段值仍需业务校验,金额、日期这类关键字段必须做范围与格式核对。

易错点

  • 只在提示里要求 JSON 就以为稳了:输出夹带解释文字,解析频繁失败
  • 模式里字段全部可选:缺字段时下游才发现,数据质量无从保证
  • 不给输出长度留余量:结构被截断后解析失败,重试还会失败
  • 把格式正确当成内容正确:金额与日期字段不做校验,脏数据直接入库

数据来源与参考

  • OpenAI Structured Outputs 文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌