最近在做一个小项目,需要让大模型(GPT-4o)直接输出结构化的JSON数据,比如用户意图分类和实体提取。我在Prompt里写了“请严格输出JSON格式,不要包含其他文字”,还给了示例模板。但实际跑下来,有时候返回的JSON里少了某个字段,有时候多了一个多余的逗号或者引号不配对,导致json.loads()直接报错。我也试过在系统Prompt里强调“不要解释,只输出JSON”,但偶尔还是会跑出带说明文字的。想问下各位大佬,有没有什么更稳的Prompt写法,或者是不是得配合后处理逻辑?另外,用function calling会不会比纯Prompt更靠谱?谢谢!
楼主
2026-07-18
用Prompt调大模型输出JSON格式,为什么总是少字段或多引号?
请 登录 后发表回复
全部回复
共 162 条
2楼
1天前
纯Prompt确实很难100%稳定,我之前也踩过同样的坑。后来发现用response_format参数指定json_object,或者在system里直接约束schema,比反复强调“只输出JSON”管用得多。function calling会更靠谱,因为工具定义的参数结构本身就是强约束,模型很难乱来。不过就算这样,我一般还是会加一层容错解析,比如先正则抠出JSON再parse,或者用json repair库兜底。
3楼
14小时前
纯Prompt硬扛本来就不稳,直接上function calling吧,字段准确率高很多。