需要AI的输出严格遵守JSON格式化时,佬们是怎么确保稳定输出正确的JSON格式的呢

需要AI的输出严格遵守JSON格式化时,佬们是怎么确保稳定输出正确的JSON格式的呢

给个输出例子

提供 JSON 输出吧,还可以指定 schema 确保符合格式要求。当然你提示词也要给说明

本地模型的话请搜索关键词:guidance,outline llm,不仅可以设置什么 schema 甚至还能要求输出一定满足某个正则表达式或上下文无关文法

用 structure output 啊,都是通过 token 严格控制 JSON 格式的

官方文档里面都很明确:

严格 token 级别限制

OpenAI

Gemini

Grok

Claude

非严格 token 级别限制

DeepSeek

GLM

给个例子,降低温度。

支持 format 就用 format,不支持的就 few shot + 正则提取校验

让ai输出稳定的json不是很容易,llm是基于概率的,尽管prompt约束 +开启structed 偶尔也会翻车,需要代码兜底。 这个我踩了好多坑:hole:

系统提示词加案例,足够应付99%
如果你是正常的api,直接看官方文档,严格json格式

只是给例子不行,无法确保稳定性,尤其是上下文数量大了之后 基本非常低的成功率

感谢佬的提醒,我使用的api确实是有response_format字段可以设置,能有效提高稳定性

感谢佬的提醒 我现在的代码流程不合适用这个机制,但是确实是非常好的方法,之前没注意这些,后面别的功能有需求会尝试使用这个

只是给例子不行,无法确保稳定性,尤其是上下文数量大了之后 基本非常低的成功率 降低温度可以提高一些成功率但是很有限,我的上下文会有几万十几万几十万tokens 上下文大了格式就容易出错了

确实是的 我现在就是用的这个方式了, 目前用的模型的response_format 字段,设置json格式化输出,然后加上正则和json语法的校验修复,虽然还有很小概率出错,但是基本稳定性可以满足要求了

目前用的模型的response_format 字段,设置json格式化输出,然后加上正则和json语法的校验修复,虽然还有很小概率出错,但是基本稳定性可以满足要求了

如果只是小数据量的话 应该是可以的 但是我这边上下文会非常大 会从几万token不断增加到十几万几十万,上下文越大,这个方法对模型的约束性就会越低,到时出错概率最后会非常非常高

简单,再开个分支,开个新对话,判断这次返回的是不是json

我这是AI长篇小说生成系统中需要的功能,生成章节大纲列表,生成流程中的一个环节,需要准确生成出json格式 不是就重新生成 但是到后期成功率太低 需要不断重试 耗时 耗费api费用 并且重试太多次数也会出现质量问题

Spring ai 的 参考propmt:
Your response should be in JSON format.
The data structure for the JSON should match this Java class: java.util.HashMap
Do not include any explanations, only provide a RFC8259 compliant JSON response following this format without deviation.

我看dify 1.3 之后LLM就可以选格式化输出了,以前没有,纯靠promp约束 + 代码兜底。