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

如何修复调用OpenAI Chat Completions API时的400错误?

解决OpenAI API 400 Bad Request错误(获取德语新闻)

你的代码出现400错误的核心原因:用了gpt-3.5-turbo模型,但用了错误的请求参数格式——这个模型属于Chat接口,不能用prompt字段传递指令,必须用messages数组。

直接用下面修正后的代码替换你原来的JS代码,就能解决问题:

const apiKey = "你的API密钥"; // 替换成你自己的真实密钥
const getNewsButton = document.getElementById("getNewsButton");
const newsText = document.getElementById("newsText");

getNewsButton.addEventListener("click", async () => {
  const userPrompt = "Give me the latest news in German";
  const temperature = 0.7; // 数值越低结果越客观,越高越有创造性
  const max_tokens = 300; // 调大一点能获取更完整的新闻内容

  try {
    const response = await fetch("https://api.openai.com/v1/chat/completions", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "Authorization": `Bearer ${apiKey}`,
      },
      body: JSON.stringify({
        model: "gpt-3.5-turbo",
        // 关键修改:用messages数组传递用户指令
        messages: [{"role": "user", "content": userPrompt}],
        max_tokens: max_tokens,
        temperature: temperature,
      }),
    });
    const data = await response.json();
    // 关键修改:Chat接口的返回结果路径是message.content
    const news = data.choices[0].message.content;

    newsText.textContent = news;
  } catch (error) {
    console.error("获取新闻出错:", error);
    newsText.textContent = "获取新闻时出错,请稍后重试。";
  }
});

关键修改说明

  • 请求参数格式:把原来的prompt: prompt改成messages: [{"role": "user", "content": "你的指令"}],这是Chat模型要求的标准格式
  • 结果提取路径:原来的data.choices[0].text改成data.choices[0].message.content,因为Chat接口返回的结构和旧模型不同
  • 顺手把max_tokens调到300,避免原来100的长度限制导致新闻内容不完整

额外注意事项

  1. 确保你已经把"你的API密钥"替换成自己的真实OpenAI密钥,密钥不能有空格或多余字符
  2. 不要把API密钥直接放在公开的前端代码里(如果你的网页会发布到网上),否则密钥会被别人盗用,最好用后端服务器中转请求
  3. 如果还是报错,打开浏览器的开发者工具(按F12),查看控制台里的详细错误信息,能帮你进一步排查问题

内容的提问来源于stack exchange,提问作者sid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 14:40:58