ChatGPT 输出不是有效 JSON:格式要求与验证
对话框吐出来的 JSON 总带多余文字或尾随逗号导致解析崩溃?提示词语法防护、状态机约束与聊天模式格式校准。
一、聊天界面与 API 模式的根本区别
在商业 API 中,开发者可以使用官方的 response_format={ type: "json_object" } 强制锁定。
但在普通的 Web 聊天界面中,模型输出本质依然是开放文本,极易因为中文全角标点、属性末尾多加一个逗号(Trailing Comma)导致解析器崩溃。
二、聊天模式下的防御型提示词设计
在提问末尾追加以下强约束段落:
“输出必须且仅能输出一个合法的 JSON 字符串:
1. 首尾严禁包含任何前言、总结或解释性文字;
2. 严禁使用代码块反引号包裹;
3. 严格遵守 RFC 8259 规范,所有键名和字符串值必须使用英文双引号;
4. 对象的最后一个属性末尾严禁添加多余逗号。”
三、本地解析容错
在编写后端代码消费聊天输出时,使用专门的容错库(如 dirtyjson)进行兜底解析。
基础排查总览见:[ChatGPT 回答变差排查总指南](https://aihuiyuan.club/articles/chatgpt-stealth-downgrade-detection-fix)。