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

MERN栈切换OpenAI Chat Completions API后出现404错误求助

排查MERN栈中OpenAI Chat Completions API的404错误

问题背景

原代码使用OpenAI的text-davinci-003模型与createCompletion接口时运行正常,但改用gpt-3.5-turbo模型与createChatCompletion接口后,出现以下错误:

POST http://localhost:3000/api/openai/chatbot 404 (Not Found)

排查与解决步骤

1. 核对后端路由配置

  • 确认路由文件中是否正确注册了chatbot的POST接口,比如:
    // 示例:openai路由文件
    const router = require('express').Router();
    const chatbotController = require('../controllers/chatbot');
    router.post('/chatbot', chatbotController.chatbot); // 确保这行存在
    module.exports = router;
    
  • 检查主App文件是否正确挂载了/api/openai前缀的路由:
    const openaiRouter = require('./routes/api/openai');
    app.use('/api/openai', openaiRouter); // 确保路由前缀匹配请求URL
    

2. 检查OpenAI SDK版本兼容性

  • createChatCompletion接口要求OpenAI Node.js SDK版本至少为v3.2.0,版本过低会导致调用失败,进而触发后端错误处理返回404。
  • 查看当前SDK版本:在项目根目录执行npm list openai
  • 版本过低则更新:npm install openai@latest

3. 修正错误处理的误导性

  • 当前代码的catch块直接返回404状态码,会掩盖真实错误(如SDK调用失败、API密钥无效等),修改为:
    catch (err) {
      console.error('OpenAI API调用详情:', err); // 打印完整错误到控制台
      return res.status(500).json({ message: err.message }); // 用500标识服务器内部错误
    }
    
  • 运行后查看控制台输出,可获取真实错误原因(如密钥错误、网络问题等)。

4. 验证请求体解析与前端请求格式

  • 确认后端已配置express.json()中间件,否则无法解析JSON格式的请求体,导致req.body.textInput为undefined:
    app.use(express.json()); // 确保在挂载路由前配置
    
  • 检查前端请求的URL拼写、请求方法(必须是POST)、Content-Type是否为application/json,避免因请求格式不匹配导致路由无法命中。

5. 核对OpenAI API调用参数

  • 确认createChatCompletion的参数格式正确,当前代码的messages数组格式符合要求,但可补充系统角色消息明确机器人设定:
    const completion = await openai.createChatCompletion({
      model: "gpt-3.5-turbo",
      messages: [
        { role: "system", content: "你叫Chatbot,今年900岁" },
        { role: "user", content: textInput }
      ],
      max_tokens: 100,
      temperature: 0
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:47:06