Constrained Decoding(受限解码)
在文本生成过程中实时约束模型输出必须符合指定语法规则(如JSON Schema)的推理技术。通过在每一步解码时屏蔽不合法的token,从根本上保证输出格式正确,是Structured Outputs的底层实现机制。
Constrained Decoding(受限解码)
一句话理解
在模型"一个 token 一个 token 吐字"的过程中,实时屏蔽掉所有会导致格式违规的 token,让输出从生成过程本身就不可能出错。
工作原理
大语言模型生成文本时,每一步都会为词表中的所有 token 计算概率分布,然后选出概率最高的(或按概率采样)。Constrained Decoding 在这个选择环节加了一层语法约束:
- 维护一个目标格式的状态机(如 JSON Schema 对应的有限状态自动机)
- 每次解码前,根据当前状态计算哪些 token 是"合法的下一步"
- 将不合法 token 的概率置为 0(mask),只从合法 token 中采样
这样模型在每一步都只能输出符合格式要求的 token,最终结果必然是合法的。
与后处理校验的区别
应用场景
- Structured Outputs:OpenAI 的
strict: true底层就是 Constrained Decoding - JSON Mode:各厂商的 JSON 输出模式也依赖类似技术
- 代码生成:保证输出的代码在语法上合法
- 结构化数据提取:从非结构化文本中提取符合 schema 的数据