![]() | 1 luoyou1014 34 天前 |
![]() | 2 Vegetable 34 天前 建议选择官方支持 json schema output 的模型 |
4 chenluo0429 34 天前 via Android 很多语言都有一些 json 修复库,对于存在少量异常的 json 修正为合法格式。 |
![]() | 5 nolan1864 34 天前 via iPhone 从推理的角度看,即使加上 guided decoding 也不能完全保证输出就一定是 json 的。一方面你可以选择 #2 说的训练过程中有 json 相关训练的模型,另一方面你可以在客户端进行 json 的检查,检查不过就重发请求,几次不行就报错好了。 |
6 zsc8917zsc 34 天前 给一个建议哈,行不行自己试一试,你让模型把 json 吐在代码块里面,你从代码块里面取内容,忽略非代码块的部分 |
![]() | 7 Vegetable 34 天前 ![]() @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 的形式。 |
![]() | 8 zfjdif 34 天前 换个好点的模型,大部分的问题其实都是模型能力不足,除非没的选,不建议从工程上想办法解决。 |
9 lllllliiii 34 天前 搜 AI 结构化输出吧,现在模型基本都支持 |
10 metadata 34 天前 最靠谱的就是找豆包有没有相关的官方 api ,简单的就做个重试机制,报错就把 json 再发给大模型让他修复,如果不行就是大模型能力问题。 |
![]() | 11 cheng6563 34 天前 用另一个提示词检查 JSON 格式输出验证信息,以及你自己程序的 JSON 转格式时的报错信息。 若检查到格式不对,补充错误信息让他重出 JSON 。 |
![]() | 12 zjyl1994 34 天前 |
13 dddd1919 34 天前 解析 try catch ,异常处理把原值丢回给 AI 让他把格式处理对再返回 |
![]() | 14 knva 34 天前 用支持 json 输出的模型加上 pydantic 就行了 |
15 luckrnx09 34 天前 via iPhone 13 楼正解 |
![]() | 16 MIUIOS 34 天前 先看模型支不支持结构化输出,不支持结构化输出的模型,你提示词在怎么写他都会出现幻觉, 我现在也遇到这个问题哦 |
18 peter1314 34 天前 提示词: 角色 你是启航考研的视频课程全文概要总结专家,你将根据视频内容,按要求总结出视频课程的全文概要,生成一个结构完美、语法正确的 JSON 对象 给一些 json 正确输出的案例: 输出前,请先自我检查:\n" + "1. JSON 大括号是否配对?\n" + "2. 引号是否统一为双引号?\n" + "3. 逗号、换行是否正确?\n" + "4. 有无多余字符(如末尾额外 })?\n" + "若发现错误,请自动修正后再输出最终结果。" + 然后他给的数据绝大部分情况是: ```json 和结尾的 ``` 代码里面需要移除开头的 ```json 和结尾的 ``` 标记 然后再是处理一些 json 有问题的情况: 1.处理常见错误(如末尾多余的 } 或其他字符) 2.处理引号不匹配(如混用单引号) 3.处理大括号不配对(尝试补全或删减) 这是我的处理方式,但是还是有很少很少的还是有点问题,但是覆盖绝大部分情况了 |
![]() | 19 elevioux 34 天前 看看支不支持 写 json schema 吧,不要光靠提示词 |
![]() | 20 forestrs 34 天前 提升词最后加上一句 “确保结果可以被 json.loads” 然后用正则贪婪匹配[]或者{};加了这句提示词后大多数模型不会输出错,除非你的模型能力很弱。 |
21 guaguaguaxia1 34 天前 大模型能力不,你用 grok3 之类的不会有这个问题 |
22 gewuzhizhi 34 天前 遇到过同样的问题,给 fewshot 就行 |
23 yadam 34 天前 可以试试 k2, 有 token enforcer 保证可以吐对 |
![]() | 24 beloved70020 34 天前 输出 tool_calls 呗 |
![]() | 25 icyalala 34 天前 如果你用普通的大模型,那肯定有概率生成不标准的 JSON 你得找支持 json mode 的大模型 API ,那个在生成 token 阶段就会进行语法约束,把无效 token 概率调到 0 ,才能 100%保证 JSON 合法 |
![]() | 26 Liftman 34 天前 不可能出错。除非你模型很拉跨。。。比如你用的豆包。。 我这边 gpt5 日常生成固定报告的 json 。然后渲染。毫无压力。失败率 0 。。。 而且目前 gpt5 是对 json 指令遵循最好的感觉。 |
![]() | 27 annilq 34 天前 13 楼处理方式基本能满足,我之前写了个生成书记目录的应用,也是会出现 json 解析问题,然后 catch 错误再扔回 llm 修复基本都可以的 |
30 young1 OP @734694671 还有就是引号问题,模型给的长文本里面包含了召回内容里面带有的引号,有的时候会无法转换,还有就是经纬度,已经限定了条件,但是模型后面输出的时候就会吧经纬度的'转成" |
![]() | 32 glitter1105 34 天前 我的处理方法是手动使用正则匹配提取。 |
![]() | 33 matrix1010 34 天前 |
34 zxr615 34 天前 用 tools,限制返回的 Json 结构,在请求中指定定义结构: ``` json { "tools": [ { "type": "function", "function": { "name": "generateContent", "parameters": { "type": "object", "properties": { "filed_1": { "type": "string", "description": "这是要返回的字段 1" }, "filed_2": { "type": "string", "description": "这是要返回的字段 2" } } }, "required": [ "filed_1", "filed_2" ] } } ], "tool_choice": { "type": "function", "function": { "name": "generateContent" } } } ``` |
35 quicksandznzn 34 天前 json-repair 或者 json_schema 的方式 |
![]() | 36 pathetique 33 天前 structured output or function calling (openai)? |
![]() | 37 StillNotYet 33 天前 我这边换了 claude 模型后就解决了,或者 openai o 系列推理模型,总结就是换厉害的模型 |
![]() | 38 donaldturinglee 33 天前 我解析 json 用的 json_schema 格式,或者你 call 一个 tool ,让 tool 帮你完成 json 格式的转换 |
39 IceBay 33 天前 |
40 hopeoffer 33 天前 我也遇到类似问题,用 claude 4 sonnet 都可能出现,有些转义符号导致 json 错误的情况。 我后面在这个 workflow 框架,发现作者提到用 yaml 代替 json ,目前觉得比 json 好使。 https://the-pocket.github.io/PocketFlow/design_pattern/structure.html#prompt-engineering |
![]() | 41 xiaowangge 33 天前 via iPhone 关键字搜索「结构化输出」。需要定义 json schema |
42 igeeky 33 天前 就是模型能力问题. 我最近也是大量这种长文本的生成. 豆包 1.6 错误率非常高. qwen, ds3.1, gemini 要好一些. 但是要多样化, 几个模型都要使用. json_schema 也依赖模型能力, 使用了 json_schema,返回非 json 也是很常见的. 后面直接改成返回非 json 了(适用于返回的字段比较少的情况) |
![]() | 43 akira 33 天前 1. 换更强大的模型 能极大的降低 json 幻觉的概率。 之前 qwen 2.5 几乎每天都有,切到 qwen3 就基本上很少见到了。 2. 重试。一般都是偶发的,出现问题的时候 重试一下就可以了。 3. 代码兜底处理。 |
![]() | 44 ClericPy 33 天前 @luoyou1014 遇到了楼主说的 JSON 多半个花括号的问题,用了 langchain 的那个 output schema 什么的好多了 最近几天刷到 pydantic AI ,这东西好用么 刚才随手试了下,光切换成百炼模型就折腾了好一会(直接看源码还是太菜) |
45 dongcxcx 33 天前 确实。有时候还给我在 json 里加上``` ```这种 markdown 语法,想骂人。 |
![]() | 46 infreboot 33 天前 via iPhone 没事,gemini 2.5 pro 都会有这种问题。 |
47 andrew2558 33 天前 这个似乎无解,多了总会有一些出错 |
48 TongLiaoKing 33 天前 用 json_repair |
50 TongLiaoKing 33 天前 更复杂的情况可以用 LLM 进行二次修正 |
51 changz 33 天前 写个启发式的 json parser ,不难的 |
52 yulon 33 天前 大模型就是会出错,所以工具侧要有纠错机制。 上次 v2 有个人说什么掌握了 Claude Code 核心机制,然后说别人纠错代码那么多根本没用,真是惹我发笑。 |
53 shihira 32 天前 via Android 就我自己测试来看,结构化输出比起什么限制都不加容易降智,不如解析 markdown 代码块 |
54 xxs55 31 天前 function call 然后重试 |
55 WithoutSugarMiao 31 天前 模型能力问题。 1. 如果现在 Zero-shot ,就换成 Few-shot ,看看效果; 2. 如果只是很少的情况会这样,那就重试一下就可以了。或者直接把 json 部分丢到 小模型里,让他纠错。 3. 实在不行就换模型呗。 |