请问哪个大模型 api 能支持输出标准严谨的 json 格式

122 天前
 RaftingPoint

最近有个任务需要从前端抓取一些数据转换为 json ,由于格式多变,所以打算让大模型来自动化转换成 json 。试了下文心一言的 api 发现无论如何都会有输出格式不严谨的情况,导致不能从字符串转为 json. 请问有哪个大模型版本在这方面表现是比较稳定的吗

3138 次点击
所在节点    程序员
30 条回复
unco020511
122 天前
一个非常简单的办法,那就是出错自动重试,不要把问题想复杂了
nomagick
122 天前
模型输出错误,有几种模式,只要针对这几个模式处理其实就可以

1 . 字符串中出现未转义的换行\n
2. 输出 JSON 之前废话
3. ```json 前缀和```尾缀

更加复杂可以流式解析 json, 根据有限状态选择性抛弃 token , 但对大多数人来讲没必要
elron
122 天前
kimi 可以 response_format 参数
mercurylanded
122 天前
gpt 系列用 json schema 指定格式效果挺好的
Foralrec
122 天前
Theigrams
122 天前
GPT4-o 或 4o-mini 都行,启用 json-mode

https://platform.openai.com/docs/guides/json-mode
easing
122 天前
指定 response_format 啊
charslee013
122 天前
Cohere 的 c4ai-command-r 模型系列,可以直接输出 JSON 没有任何其他废话
sunnysab
121 天前
我处理过小文本,也遇到这样的情况:从歌曲文件名和元信息中提取歌手和歌曲名称,转换成 json 格式。在线模型比本地 7B 模型效果要好,另外可以在回答中找 json 信息,把回答中不相干的内容去掉。
RaftingPoint
121 天前
谢谢大家的建议, 昨天分析了下,导致转换失败的原因大致有几个:
1. 输出的 json 里有注释语句之类的废话,里面的内容可能会导致歧义
2. value 是列表时,里面的符号也会产生歧义,比如 冒号逗号分号 的中英混用,
3. 还有转义符的问题

整理了下大家的一些解决方案:
1. 明确 json 格式的情况,可以用 function call , 这是最严谨稳定的方式,但是如果爬的内容不确定,灵活度就不够;
2. 用可以声明 response_format 的模型,贴中提到的有 openai 系列,Gemini 1.5 flash/pro,c4ai-command-r 模型系列。
3. langchain 等第三方工具
4. 重试与 finetune

我为了方便尝试了第三个方法,设置了 3 次重试,并且在对话中记录上一次成功的最长 json 串,在重试时加入 prompt 中作为参考 finetune ,这样下来一万条数据出错次数降低到了 3 条。这是我的解决方案,仅供参考

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

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

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

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

© 2021 V2EX