大模型吐 JSON

51 天前
 young1
各位大佬,我现在遇到一个问题,就是提示词规定了模型要吐的 JSON 格式,然后也让模型处理转义字符。但是还是会出现模型吐的 JSON 字符串不对,缺或者多括号,然后双引号没有转义等问题,导致 Java 转 JSON 的时候报错。有什么好的办法吗
6676 次点击
所在节点    程序员
55 条回复
luoyou1014
51 天前
Vegetable
51 天前
建议选择官方支持 json schema output 的模型
young1
51 天前
@Vegetable 现在用的豆包 1.6
chenluo0429
51 天前
很多语言都有一些 json 修复库,对于存在少量异常的 json 修正为合法格式。
nolan1864
51 天前
从推理的角度看,即使加上 guided decoding 也不能完全保证输出就一定是 json 的。一方面你可以选择 #2 说的训练过程中有 json 相关训练的模型,另一方面你可以在客户端进行 json 的检查,检查不过就重发请求,几次不行就报错好了。
zsc8917zsc
51 天前
给一个建议哈,行不行自己试一试,你让模型把 json 吐在代码块里面,你从代码块里面取内容,忽略非代码块的部分
Vegetable
51 天前
@young1
https://www.volcengine.com/docs/82379/1568221
https://www.volcengine.com/docs/82379/1330310#5414cb1d

官方文档声称支持 json_schema 的 response_output ,这样你调用的时候,模型会保证返回的结构是合法的 JSON 。实际上,业界是先有的 json 这个 output 类型,已经能保证返回合法的 json ,后来大家发现用 prompt 来说明结构太呆了,又纷纷支持了 json_schema 这种标准的描述 response json 的形式。
zfjdif
51 天前
换个好点的模型,大部分的问题其实都是模型能力不足,除非没的选,不建议从工程上想办法解决。
lllllliiii
51 天前
搜 AI 结构化输出吧,现在模型基本都支持
metadata
51 天前
最靠谱的就是找豆包有没有相关的官方 api ,简单的就做个重试机制,报错就把 json 再发给大模型让他修复,如果不行就是大模型能力问题。
cheng6563
51 天前
用另一个提示词检查 JSON 格式输出验证信息,以及你自己程序的 JSON 转格式时的报错信息。
若检查到格式不对,补充错误信息让他重出 JSON 。
zjyl1994
51 天前
https://github.com/HAibiiin/json-repair

建议用库先修一下,然后再解析。代码里做点容错也能解决嵌套不对的问题
dddd1919
51 天前
解析 try catch ,异常处理把原值丢回给 AI 让他把格式处理对再返回
knva
51 天前
用支持 json 输出的模型加上 pydantic 就行了
luckrnx09
51 天前
13 楼正解
MIUIOS
51 天前
先看模型支不支持结构化输出,不支持结构化输出的模型,你提示词在怎么写他都会出现幻觉, 我现在也遇到这个问题哦
zinco
51 天前
@young1 我也用豆包,目前用 json 化输出的模型没出现 json 格式错误的问题,好奇问下什么情况下出现的
peter1314
51 天前
提示词:
角色
你是启航考研的视频课程全文概要总结专家,你将根据视频内容,按要求总结出视频课程的全文概要,生成一个结构完美、语法正确的 JSON 对象

给一些 json 正确输出的案例:

输出前,请先自我检查:\n" +
"1. JSON 大括号是否配对?\n" +
"2. 引号是否统一为双引号?\n" +
"3. 逗号、换行是否正确?\n" +
"4. 有无多余字符(如末尾额外 })?\n" +
"若发现错误,请自动修正后再输出最终结果。" +


然后他给的数据绝大部分情况是:
```json 和结尾的 ```

代码里面需要移除开头的 ```json 和结尾的 ``` 标记

然后再是处理一些 json 有问题的情况:
1.处理常见错误(如末尾多余的 } 或其他字符)
2.处理引号不匹配(如混用单引号)
3.处理大括号不配对(尝试补全或删减)

这是我的处理方式,但是还是有很少很少的还是有点问题,但是覆盖绝大部分情况了
elevioux
51 天前
看看支不支持 写 json schema 吧,不要光靠提示词
forestrs
51 天前
提升词最后加上一句
“确保结果可以被 json.loads”
然后用正则贪婪匹配[]或者{};加了这句提示词后大多数模型不会输出错,除非你的模型能力很弱。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1157251

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX