生态与新兴热词

结构化输出(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;决策模型则一次并行计算,返回你声明的选项里的一个值,并带概率,别的什么都产生不了。结构化输出更通用,字段里也能放自由文本;决策模型更窄、更快、有校准,但不能写东西。

常见误解

常被以为: JSON 合法就说明答案正确。
实际上: schema 只保证形状。模型仍然可能往一个合法的字段里填进错的或编造的值(见 hallucination)。

常见问题

大模型的结构化输出是什么?
一种把模型回答约束在你声明的 schema(比如带指定字段的 JSON)内的功能,方便代码稳定地使用。
结构化输出能防止幻觉吗?
不能。它保证的是格式合法,而不是内容属实。
结构化输出和函数调用有什么区别?
两者基于同一个思路。函数调用把 schema 用在工具调用的参数上,让软件去运行工具;结构化输出把 schema 用在模型回复本身。

最近核实: 2026-09-21

相关术语