GPT-4 API调用如何输出无换行的标准JSON格式?
解决GPT-4 API返回标准JSON格式的问题
核心优化方向
- 明确格式要求:在Prompt中直接要求返回无换行、无额外内容的标准JSON,避免用带换行的示例误导模型,示例应采用紧凑的JSON结构
- 修正语法错误:原Prompt存在多处JSON语法问题(如
"code_snippet:缺闭合引号、选项对象键值对格式错误),这些错误会导致模型输出无效JSON,必须提前修正 - 强制输出规则:在Prompt末尾明确要求「仅返回符合格式的JSON,不得添加任何解释、注释或多余字符」
API参数调整
- 对于GPT-4 Turbo及以上模型,使用
response_format参数强制JSON输出,配置如下:const params = { model: "gpt-4-turbo", response_format: { type: "json_object" }, // 其他参数:messages, temperature等 }; - 不要设置
stop: ['\n'],该参数会截断正常JSON结构,导致输出不完整 - 将
temperature设为0.1-0.3,降低输出随机性,提升格式严谨性
修正后的示例Prompt
const prompt = `请创建一个关于${x}的问题,仅返回以下格式的标准JSON(无换行、无额外内容): {"title": "符合要求的标题", "description": "详细描述内容", "code_snippet": "代码片段内容", "tags": ["标签1", "标签2", "标签3", "标签4"], "options": [{"text": "选项A", "correct": true}, {"text": "选项B", "correct": false}, {"text": "选项C", "correct": false}, {"text": "选项D", "correct": false}], "feedback_title": "反馈标题", "feedback_text": "反馈内容"}`;
兜底处理方案
如果模型仍输出带换行的JSON,可在解析前做预处理:
// 去除所有换行和多余空格,保留必要的JSON结构空格 const cleanedResponse = rawResponse.replace(/\n/g, '').replace(/\s+(?=(?:[^"]*"[^"]*")*[^"]*$)/g, ' '); try { const result = JSON.parse(cleanedResponse); // 处理结果 } catch (e) { // 解析失败时,可调用模型二次修正,传入错误内容要求重新输出标准JSON }
内容的提问来源于stack exchange,提问作者Camila Nepomuceno
相关产品推荐
相关产品推荐

