LLM结构化输出:约束解码、CFG和response_format
文章目录
-
-
-
- constrained decoding的基本思想
- 常见的实现思路
- Response Format 参数
-
- 底层原理
-
-
LLM结构化输出的方法有3大类。第一类使用Kor,其本质仍是基于
Prompt,依赖模型的通用
instruction following能力,第二篇使用
LLM厂商提供的
function calling,用一种“曲线救国”的方式,间接实现
structured generation。但这两种方法本质上都 不是100%鲁棒 的,模型仍有一定概率失败(即输出不符合
schema的内容;结构越复杂则失败概率越大)。
可以预想,各大厂会快速跟进openai的更新,加入structured output能力;而实际上,早有许多开源项目(例如outlines[2], guidance[3], sglang[4], llama.cpp[5], LMQL[6], jsonformer[7]),能基于本地模型实现类似效果,其背后的核心技术是constrained decoding。

constrained decoding的基本思想
- 一个直觉是:定义好
schema之后,我们就知道了各个字段的 输出范围
