📐

约束解码(Constrained Decoding)

Constrained Decoding
使用技巧
结构化输出JSON推理优化

是什么:让模型输出合法 JSON、合法 SQL 或固定模板文本,靠「在提示词里求它」是不可靠的。约束解码(constrained decoding / grammar-constrained decoding)的做法是把这个格式要求变成硬约束:给定一份文法(比如 JSON Schema 或正则式),推理引擎在每一步解码前先算出「哪些 token 接下去仍然能构成合法输出」,把不合法的 token 从候选里直接屏蔽,模型只能从剩下的里面选。

机制

实现上通常先把文法编译成逐 token 的掩码(token mask),每生成一个 token 就推进文法状态、更新掩码,再作用于模型输出的概率分布。XGrammar 是这一方向的代表性开源实现,由 MLC 团队提出,论文强调其兼顾灵活性(支持完整 JSON Schema 的复杂结构)与效率。推理框架与多家模型 API 的「JSON mode / structured output」功能,底层基本都是这类机制或其变体。

适用边界

约束解码只保证语法合法,不保证内容正确——模型可以在合法 JSON 里填错的事实。另一个代价是过度约束可能降低文本质量:格式限制越死,模型可选的表达越窄。需要「既合法又准」时,通常配合程序化校验与重试。与「结构化输出」条目的关系:后者是能力与产品形态,本条是支撑该能力的解码层机制。

🔗 探索更多 AI 工具板块

除了本板块,AI工具宝箱还有这些独家内容板块,帮你从不同角度发现好工具。

☆ 0