大模型吐 JSON

9 天前
 young1
各位大佬,我现在遇到一个问题,就是提示词规定了模型要吐的 JSON 格式,然后也让模型处理转义字符。但是还是会出现模型吐的 JSON 字符串不对,缺或者多括号,然后双引号没有转义等问题,导致 Java 转 JSON 的时候报错。有什么好的办法吗
6050 次点击
所在节点    程序员
55 条回复
luoyou1014
9 天前
Vegetable
9 天前
建议选择官方支持 json schema output 的模型
young1
9 天前
@Vegetable 现在用的豆包 1.6
chenluo0429
9 天前
很多语言都有一些 json 修复库,对于存在少量异常的 json 修正为合法格式。
nolan1864
9 天前
从推理的角度看,即使加上 guided decoding 也不能完全保证输出就一定是 json 的。一方面你可以选择 #2 说的训练过程中有 json 相关训练的模型,另一方面你可以在客户端进行 json 的检查,检查不过就重发请求,几次不行就报错好了。
zsc8917zsc
9 天前
给一个建议哈,行不行自己试一试,你让模型把 json 吐在代码块里面,你从代码块里面取内容,忽略非代码块的部分
Vegetable
9 天前
@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
9 天前
换个好点的模型,大部分的问题其实都是模型能力不足,除非没的选,不建议从工程上想办法解决。
fzdwx
9 天前
搜 AI 结构化输出吧,现在模型基本都支持
metadata
9 天前
最靠谱的就是找豆包有没有相关的官方 api ,简单的就做个重试机制,报错就把 json 再发给大模型让他修复,如果不行就是大模型能力问题。
cheng6563
9 天前
用另一个提示词检查 JSON 格式输出验证信息,以及你自己程序的 JSON 转格式时的报错信息。
若检查到格式不对,补充错误信息让他重出 JSON 。
zjyl1994
9 天前
https://github.com/HAibiiin/json-repair

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

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

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


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

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

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

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

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

https://ex.noerr.eu.org/t/1157251

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

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

© 2021 V2EX