结构化输出(Structured Outputs)
也叫: Structured Outputs · JSON 模式 · Schema 约束输出 · 受限解码
结构化输出是一种模型能力:强制回答遵循预先声明的 schema,比如带指定字段的 JSON 对象,让程序不必靠脆弱的解析就能读取。
语言模型输出的是自由文本,而程序需要的是可靠的数据。早期的做法是让模型“用 JSON 回答”然后碰运气,再写代码去捕获格式错误的回复。结构化输出把这份保证挪进了模型服务商自己的实现里:你提供一个 schema,回答就被约束成与它相符。
许多主流服务商都提供某种形式的支持,叫法有 structured outputs、JSON 模式等,function-tool-calling(函数/工具调用)背后也是同样的思路:工具调用的参数必须符合声明的结构。具体的功能和 schema 覆盖范围因服务商而异,也在不断变化,请以当前文档为准。
关键要看它保证什么。符合 schema 的回答,字段和类型是对的;但这不代表值是真的,也不代表选择是正确的。
怎么运作
常见的机制是受限解码:模型生成 token 的同时,系统会屏蔽掉任何会让输出违反 schema 的 token,因此最终输出一定能解析。另一类做法是事后校验,失败了就重试。无论哪种,模型的值仍然是逐 token 生成的,所以即使格式完美,内容也可能是错的。
和相关概念的区别
结构化输出与 jev 这类决策模型:用结构化输出时,LLM 仍然是一个 token 接一个 token 地生成答案,只是恰好符合 schema;决策模型则一次并行计算,返回你声明的选项里的一个值,并带概率,别的什么都产生不了。结构化输出更通用,字段里也能放自由文本;决策模型更窄、更快、有校准,但不能写东西。
常见误解
hallucination)。常见问题
大模型的结构化输出是什么?
结构化输出能防止幻觉吗?
结构化输出和函数调用有什么区别?
最近核实: 2026-09-21