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

使用Node.js官方OpenAI库调用ChatGPT API时持续出现400空错误

使用OpenAI Node.js库持续出现400错误排查

我在后端使用官方OpenAI Node.js库时,持续出现400空错误,已检查API密钥但问题仍未解决。

代码实现

export class ChatGPTServiceImplemnt implements ChatGPTService {
  async sendMessage(message:string): Promise<string|undefined> {
    try {
      const respons = await openai.createChatCompletion({
        model: "gpt-3.5-turbo",
        messages: [{ role: "user", content: message }],
        temperature: 0,
        top_p: 1.0,
        n: 1,
        frequency_penalty: 0.0,
        presence_penalty: 0.0,
        stop: ["#", ";"],
      });
      return respons.data.choices[0].message?.content;
    } catch (error) {
      console.log(`this is the error from this ${error}`);
      throw error;
    }
  }
}

请求接口代码

export async function chatGPT(req: Request, res: Response,) {
  try {
    const {message} = req.body;
    if (message == null) {
      return res.status(400).send({message: "Missing fields"});
    }
    const chatGPTService = myContainer
        .get<ChatGPTService>(TYPES.ChatGPTservice);
    const dataAuthService = await chatGPTService.sendMessage(message);
    if (dataAuthService != undefined) {
      const data = dataAuthService;
      return res.status(200).send({message: "Succesfull", data});
    } else {
      return res.status(200).send({message: "faild", dataAuthService});
    }
  } catch (error) {
    return res.status(400).send({error, message: "error"});
  }
}

错误截图

错误截图

排查及解决建议

  • 检查请求内容合法性:
    • 当前接口仅判断message == null,空字符串""会绕过这个校验,导致OpenAI API收到空的content参数触发400错误。建议将判断改为if (!message),拦截空字符串、null、undefined等无效值。
    • 暂时注释stop: ["#", ";"]参数测试,部分情况下特殊字符组成的stop序列可能触发API参数校验失败。
  • 修正代码拼写错误:
    • 变量名respons应为response,避免后续调试时因变量名错误导致的问题。
    • 类名ChatGPTServiceImplemnt存在拼写错误(应为ChatGPTServiceImpl),可能影响依赖注入或类引用逻辑。
  • 完善错误日志:
    • 在catch块中打印更详细的错误信息,OpenAI的错误详情通常在error.response.data中,修改日志代码为:
      console.error('OpenAI API Error:', error.response?.data || error.message);
      
  • 确认OpenAI实例初始化:
    • 确保初始化时正确配置API密钥,示例如下:
      import { OpenAI } from "openai";
      const openai = new OpenAI({
        apiKey: process.env.OPENAI_API_KEY, // 确认环境变量已正确配置
      });
      
  • 发送最小化测试请求:
    • 简化参数发送测试请求,验证基础功能是否正常:
      const response = await openai.createChatCompletion({
        model: "gpt-3.5-turbo",
        messages: [{ role: "user", content: "Hello" }],
      });
      

内容的提问来源于stack exchange,提问作者Gbenga B Ayannuga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 06:47:45