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

2024-07-22 11:14:54 +08:00
 RaftingPoint

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

3962 次点击
所在节点    程序员
30 条回复
unco020511
2024-07-22 14:12:09 +08:00
一个非常简单的办法,那就是出错自动重试,不要把问题想复杂了
nomagick
2024-07-22 14:24:39 +08:00
模型输出错误,有几种模式,只要针对这几个模式处理其实就可以

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

更加复杂可以流式解析 json, 根据有限状态选择性抛弃 token , 但对大多数人来讲没必要
elron
2024-07-22 14:29:15 +08:00
kimi 可以 response_format 参数
mercurylanded
2024-07-22 14:30:39 +08:00
gpt 系列用 json schema 指定格式效果挺好的
Foralrec
2024-07-22 14:31:16 +08:00
Theigrams
2024-07-22 15:12:17 +08:00
GPT4-o 或 4o-mini 都行,启用 json-mode

https://platform.openai.com/docs/guides/json-mode
easing
2024-07-22 15:49:20 +08:00
指定 response_format 啊
charslee013
2024-07-23 07:24:34 +08:00
Cohere 的 c4ai-command-r 模型系列,可以直接输出 JSON 没有任何其他废话
sunnysab
2024-07-23 09:28:39 +08:00
我处理过小文本,也遇到这样的情况:从歌曲文件名和元信息中提取歌手和歌曲名称,转换成 json 格式。在线模型比本地 7B 模型效果要好,另外可以在回答中找 json 信息,把回答中不相干的内容去掉。
RaftingPoint
2024-07-23 11:01:10 +08:00
谢谢大家的建议, 昨天分析了下,导致转换失败的原因大致有几个:
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://ex.noerr.eu.org/t/1059074

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

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

© 2021 V2EX