导读
本文详细讨论了如何确保大型语言模型(LLMs)在推理过程中输出结构化的 JSON 格式。这对于提高数据处理的自动化程度、增强系统的互操作性至关重要,特别是在需要程序化解析模型输出的工程链路中。
一、引言
1.1 JSON 结构化输出的意义
对于基于大型语言模型的应用而言,确保输出能直接以结构化的 JSON 格式呈现,对于提升数据处理的自动化程度、增强系统的互操作性具有重要意义。例如,当客户需要对 LLM 的输出进行信息提取时,若输出是一个标准的 JSON 格式,将大大方便工程链路上的后处理流程;又如,LLM 在调用工具(Tool Use)或与其他智能体协作时,需要按照工具定义的要求传入正确的参数。若能保证 LLM 的输出是严格的结构化 JSON,则能保证传参正确,从而避免调用失败。
然而,在实践中,即使我们在提示词(Prompt)中反复强调要输出 JSON 结构,LLM 偶尔仍会出错。虽然'偶尔'出错的概率在单次交互中可能很低,但对于高并发、高可靠性的工程链路设计来说,这种不确定性往往是致命且麻烦的,会导致系统需要额外的容错机制或人工介入。
1.2 LLM 为何不能严格输出 JSON
LLM 在推理时,是基于已经输出的上下文序列,从词汇表(Vocabulary)中预测下一个 token。预测时,模型为词汇表中的每个 token 分配一个概率分布,通过采样策略(如 Top-K, Top-P, Greedy)得到最终的预测输出。
例如,模型在输出"My name is"后,仅有 0.62 的概率输出自己的名字"Tang",即使我们在提示词中明确告诉模型自己的名字是"Tang",模型仍有 0.38 的概率输出别的名字。这种依概率采样的推理过程决定了 LLM 本质上是一个概率生成模型,不可能 100% 按确定性逻辑输出特定格式的字符串。错误的 JSON 输出(如缺少引号、括号不匹配、键名错误)导致了我们在工程链路上无法使用标准解析库(如 Python 的 json.loads)进行后续解析,因此,能 100% 严格限制 JSON 格式输出的方法非常重要。
1.3 现有方案对比
目前业界针对 JSON 输出的解决方案主要分为以下几类:
- OpenAI JSON Mode:推出于 2023 年 12 月,基于提示词优化,用户仍需要在提示词中给出 JSON 示例,不能保证严格 100% 输出 JSON,存在格式错误风险。
- Kimi JSON Mode:近期推出,类似 OpenAI 的 JSON Mode,用户仍需要在提示词中给出 JSON 示例,同样不能保证严格 100% 输出 JSON。
- OpenAI Structured Outputs:推出于 2024 年 8 月,根据用户给出的 JSON Schema,通过后端约束解码技术,严格保证 100% 输出符合 Schema 的 JSON 格式。
二、前中后三阶段的优化策略
在一个基于通义千问的 AI 教评项目场景中,JSON 格式输出对客户十分重要。因此,我们在该项目实践中由浅入深,从 LLM 推理的前、中、后三个阶段探索了限制输出 JSON 格式的方法。其中,'推理前'和'推理后'这两个阶段的方法用在了项目实践中,大大提高了 AI 教评任务中 JSON 格式的输出概率。为了进一步研究如何 100% 输出 JSON 格式,我们研究了动态限制解码技术,在'推理中'这一阶段探索并验证了基于约束解码的 100% 输出 JSON 格式方法。
在分析相关工作基础上,我们将深入讨论每阶段的方法、优劣及其实现方式,以期帮助读者掌握提升 JSON 输出概率的办法,并应用在实践中。
2.1 推理'前':Prompt Engineering
在提示词中加入特定的指令可提高 JSON 输出概率。以下是经过大量项目实践验证的有效技巧:
- 明确指定格式:在提示词中加入这句话
The JSON object: ...,可显著提高模型遵循格式的概率。 - 提供输出规范:在提示词中给出
##输出格式规范,并给出一个完整的 JSON 示例(Few-Shot Prompting)。示例应包含所有可能的字段,包括空值情况。 - 设置温度参数:将模型的 temperature 设置为 0 或非常低的值(如 0.1),以减少随机性,增加确定性输出。
【实践案例】
在利用 Qwen-long 作 AI 教评的一个项目中,我们需要从教师的课堂录音文本中提取结构化的教学维度信息。采用本节中的 prompt 加上后处理方法后,输出样本基本是符合预期的结构化 JSON。JSON 正确概率从 50% 左右上升到了 95%。可见仅靠 prompt 和后处理,已经能以很高的概率使得大模型按照 JSON 格式输出。然而,在一些需要严谨输出 JSON 格式的场景(如金融交易、自动化控制),100% 严格输出 JSON 格式的方法仍值得研究。


