语法约束解码: 让每个 token 都强制 LLM 输出有效语法
LLM 会对语法产生幻觉,因为它们以概率方式采样 token。语法约束解码在每一步过滤词表,只输出保持语法有效性的 token。
让 LLM 生成一个 JSON 对象,它最终一定会输出一个末尾逗号、字符串里未转义的换行符,或者在一个本该有引号键的位置输出 bare word。这个错误不是模型的 bug。它是自回归采样工作方式的必然结果:在每一步,模型都会把自己的词表里每个 token 都当作候选,包括那些会让部分输出在语法上 invalid 的…