You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 15:44:52