大模型吐 JSON

9 天前
 young1
各位大佬,我现在遇到一个问题,就是提示词规定了模型要吐的 JSON 格式,然后也让模型处理转义字符。但是还是会出现模型吐的 JSON 字符串不对,缺或者多括号,然后双引号没有转义等问题,导致 Java 转 JSON 的时候报错。有什么好的办法吗
6055 次点击
所在节点    程序员
55 条回复
guaguaguaxia1
9 天前
大模型能力不夠,你用 grok3 之类的不会有这个问题
gewuzhizhi
9 天前
遇到过同样的问题,给 fewshot 就行
yadam
9 天前
可以试试 k2, 有 token enforcer 保证可以吐对
beloved70020
9 天前
输出 tool_calls 呗
icyalala
9 天前
如果你用普通的大模型,那肯定有概率生成不标准的 JSON
你得找支持 json mode 的大模型 API ,那个在生成 token 阶段就会进行语法约束,把无效 token 概率调到 0 ,才能 100%保证 JSON 合法
Liftman
9 天前
不可能出错。除非你模型很拉跨。。。比如你用的豆包。。

我这边 gpt5 日常生成固定报告的 json 。然后渲染。毫无压力。失败率 0 。。。

而且目前 gpt5 是对 json 指令遵循最好的感觉。
annilq
9 天前
13 楼处理方式基本能满足,我之前写了个生成书记目录的应用,也是会出现 json 解析问题,然后 catch 错误再扔回 llm 修复基本都可以的
young1
9 天前
@dddd1919 目前是这样做的,但是这样耗时,因为在做内容召回,文本很长,然后模型吐的时间也比较长。所以还是期望一次就解决 json
young1
9 天前
@734694671 长文本的时候
young1
9 天前
@734694671 还有就是引号问题,模型给的长文本里面包含了召回内容里面带有的引号,有的时候会无法转换,还有就是经纬度,已经限定了条件,但是模型后面输出的时候就会吧经纬度的'转成"
dddd1919
9 天前
@young1 #28 如果是支持多轮会话的 AI ,可以在 catch 这一步启用新的会话只做 json 修正,减少大模型理解上下文的时间
glitter1105
9 天前
我的处理方法是手动使用正则匹配提取。
matrix1010
9 天前
zxr615
9 天前
用 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"
}
}
}
```
quicksandznzn
9 天前
json-repair 或者 json_schema 的方式
pathetique
9 天前
structured output or function calling (openai)?
kabob
9 天前
我这边换了 claude 模型后就解决了,或者 openai o 系列推理模型,总结就是换厉害的模型
donaldturinglee
9 天前
我解析 json 用的 json_schema 格式,或者你 call 一个 tool ,让 tool 帮你完成 json 格式的转换
IceBay
9 天前
hopeoffer
9 天前
我也遇到类似问题,用 claude 4 sonnet 都可能出现,有些转义符号导致 json 错误的情况。
我后面在这个 workflow 框架,发现作者提到用 yaml 代替 json ,目前觉得比 json 好使。
https://the-pocket.github.io/PocketFlow/design_pattern/structure.html#prompt-engineering

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

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

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

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

© 2021 V2EX