跳到主内容
快讯直播
AI智模界
AI 词典

结构化输出 / 约束解码:让模型"只能"吐出合法 JSON

一句话定义

结构化输出(structured output,也常叫结构化生成)指让大语言模型(Large Language Model, LLM)的回答不是一段自由发挥的文字,而是严格符合事先约定格式的结果,最常见的就是 JSON。约束解码(constrained decoding)是实现它的主流手段:在模型每吐一个字的过程中,就把"会导致格式不合法"的选项直接掐掉。

原理:边写边管

模型生成是逐词元(token)进行的:每一步它会给词表里所有词元打一个概率分,然后挑一个。自由生成时,什么词元都可能被选中。

约束解码在这一步插入一个"裁判"。裁判手里有一份语法(grammar)规则,比如"JSON 对象必须以左花括号开头""字符串里的引号必须成对"。它根据已经生成的内容,算出当前允许出现哪些词元,把其他词元的概率直接归零,再在剩下的候选里重新归一化采样。这样无论模型多想写"好的,以下是 JSON:```json",它都没有机会——那些词元在当前状态下已经判出局。

打个比方:自由生成像让人即兴写作文,你怎么求他"请用表格写",他也可能夹带一段感慨;约束解码像给他一张已经画好格子的表单,只能往格子里填,笔伸不到格子外面。

和几种相邻做法比一比

做法保证程度代价
提示词里写"只输出 JSON"靠模型自觉,可能带解释、带代码块围栏零成本,最不稳
微调(fine-tuning)概率上更爱输出 JSON,但不保证 100%要数据、要训练
后处理 + 失败重试解析失败就修、就重试浪费词元和延迟,修复可能改语义
约束解码语法层面几乎必然合法需要推理框架支持,配置稍复杂

函数调用(function calling)里那套"模型返回结构化参数"的能力,底层通常也是同一类机制。

实际意义

对做应用的人:解析成功率从"经常要 try/except 加重试"变成基本可以直接解析,下游的校验、修复代码能砍掉一大半;同时要注意它约束的是语法而不是语义——字段名对了,里面的值仍可能是模型编的,枚举型字段也可能选错,所以业务校验不能省。另外,强约束有时会干扰模型"先想清楚"的过程,常见做法是先让它自由推理,最后一步再按格式填表。

对普通人:你用的 AI 能一键填进表格、生成日历事件、把一段话变成待办清单,靠的往往就是这层看不见的"格子"。各家框架支持哪些格式、怎么开关,以官方文档为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。