如何让AI大模型输出合法的JSON格式?

938 阅读2分钟

如何让大模型输出合法的 JSON 格式?

为确保大语言模型(LLM)稳定输出合法的JSON格式,可采用以下方法,结合提示工程、解码约束、后处理和模型优化策略

图片

1.提示工程

通过设计精准的Prompt引导模型输出JSON结构,这是最直接且低成本的方法。

1)通过指令限制模型输出

强制模型仅输出JSON,禁止其他文本。

图片

2)fewshot示例

在Prompt中明确要求输出JSON,并提供完整的示例(包含所有字段和格式符号)。

图片

图片

2.约束解码

在模型生成过程中强制模型遵循json语法,确保输出内容的合法性。

1)动态Token屏蔽

在生成每个Token时,仅允许符合JSON语法的字符。例如:

第一个Token必须是{

字符串需用双引号包裹

Key后必须跟冒号,值后必须跟逗号或}

图片

使用工具

LM-Format-Enforcer:基于JSON Schema动态过滤无效Token。

Outlines:通过语法规则约束生成过程。

2)固定结构插入(比较工程)

预先生成JSON的固定部分(如括号、字段名),仅让模型填充内容,常搭配文本解析工具使用。

图片

3.后处理与验证

1)表达式修正

使用正则表达式修复缺失的引号、逗号等。

图片

2)JSON验证与重试

解析失败时触发模型重试,减少无效输出。

图片

使用工具:strict-json库自动处理重试和局部修正

4.模型微调与工具集成

1)模型微调

上述方法均在现有模型基础上通过prompt优化或者调整解码策略使模型输出json格式,针对于特定场景,可以通过模型微调来让模型自发地学习到特定的pattern

图片

2)框架集成

使用LangChain等框架内置的JSON输出解析器

图片

图片

AI大模型系统化学习入口