需要AI的输出严格遵守JSON格式化时,佬们是怎么确保稳定输出正确的JSON格式的呢
给个输出例子
用 structure output 啊,都是通过 token 严格控制 JSON 格式的
给个例子,降低温度。
支持 format 就用 format,不支持的就 few shot + 正则提取校验
让ai输出稳定的json不是很容易,llm是基于概率的,尽管prompt约束 +开启structed 偶尔也会翻车,需要代码兜底。 这个我踩了好多坑![]()
系统提示词加案例,足够应付99%
如果你是正常的api,直接看官方文档,严格json格式
只是给例子不行,无法确保稳定性,尤其是上下文数量大了之后 基本非常低的成功率
感谢佬的提醒,我使用的api确实是有response_format字段可以设置,能有效提高稳定性
感谢佬的提醒 我现在的代码流程不合适用这个机制,但是确实是非常好的方法,之前没注意这些,后面别的功能有需求会尝试使用这个
只是给例子不行,无法确保稳定性,尤其是上下文数量大了之后 基本非常低的成功率 降低温度可以提高一些成功率但是很有限,我的上下文会有几万十几万几十万tokens 上下文大了格式就容易出错了
确实是的 我现在就是用的这个方式了, 目前用的模型的response_format 字段,设置json格式化输出,然后加上正则和json语法的校验修复,虽然还有很小概率出错,但是基本稳定性可以满足要求了
目前用的模型的response_format 字段,设置json格式化输出,然后加上正则和json语法的校验修复,虽然还有很小概率出错,但是基本稳定性可以满足要求了
如果只是小数据量的话 应该是可以的 但是我这边上下文会非常大 会从几万token不断增加到十几万几十万,上下文越大,这个方法对模型的约束性就会越低,到时出错概率最后会非常非常高
简单,再开个分支,开个新对话,判断这次返回的是不是json
我这是AI长篇小说生成系统中需要的功能,生成章节大纲列表,生成流程中的一个环节,需要准确生成出json格式 不是就重新生成 但是到后期成功率太低 需要不断重试 耗时 耗费api费用 并且重试太多次数也会出现质量问题
我看dify 1.3 之后LLM就可以选格式化输出了,以前没有,纯靠promp约束 + 代码兜底。
