如何让大语言模型输出JSON格式?
作者:HowardZhangdqs
链接:https://www.zhihu.com/question/656512469/answer/3515553778
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
回答结果是format好的,看起来格式有问题是因为网页把输出当Markdown解析了,这些是输出的源代码:{
"answer": "零一分布(也称为伯努利分布)的表达式是:P(X = 1) = p 和 P(X = 0) = 1 - p,其中 0 ≤ p ≤ 1。"
}想要加点其他字段也行输入:{
"question": "零一分布的表达式是什么?",
"request": "answer in json like { \"answer\": \"your answer here\", \"detail\": \"detailed explanation\" } without code block"
}输出:{
"answer": "零一分布的表达式是P(X=1)=p,P(X=0)=1-p",
"detail": "零一分布(也称伯努利分布)描述的是一个只有两个可能结果的随机试验,其中一个结果发生的概率是p,另一个结果发生的概率是1-p。这里X是一个随机变量,X=1表示某事件发生,X=0表示某事件不发生。"
}有人可能注意到了我输入的问题用了JSON,具体原因让GPT-4o自己来解释一下:<img src="https://picx.zhimg.com/50/v2-f267fd3c25d13b43f24c3f5dda68b91a_720w.jpg?source=1def8aca" data-caption="" data-size="normal" data-rawwidth="987" data-rawheight="307" data-original-token="v2-e2b816fec7759b615fb182ec362fc2a2" data-default-watermark-src="https://picx.zhimg.com/50/v2-65416c231ff3ed64bc19f8c0f0a6f1bd_720w.jpg?source=1def8aca" class="origin_image zh-lightbox-thumb" width="987" data-original="https://pic1.zhimg.com/v2-f267fd3c25d13b43f24c3f5dda68b91a_r.jpg?source=1def8aca"/>这个和ChatGPT的提示词是Markdown格式的原理类似,模型有很大概率学你的格式输出,所以用纯JSON格式输入需求,输出内容就会有很大概率是纯JSON。加上在request或者restriction字段中加入了对格式的限定,几乎就可以百分百确定输出的是纯JSON格式的内容,不需要正则匹配等操作过滤结果。
直接把输出当json解析,解析失败就带上上下文给一个
{
"data": {
"msg": "Response from GPT is not a JSON. The response should exactly start with '{', not '上一个回复的第一个字符'.",
"success": false
}
}
最多两次就一定是json
使用api,设定responseformat参数规定。但是不是所有大模型都有json finetune版的
posted on 2025-03-11 17:28 ExplorerMan 阅读(207) 评论(0) 收藏 举报