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

在Discord.js中集成ChatGPT API斜杠命令遇404错误求助

Discord.js调用ChatGPT API出现404错误的解决方法

问题描述

我编写了一段Discord.js的斜杠命令代码,用于调用ChatGPT API,已确认API密钥正确、API服务可用,但运行时持续触发404错误。以下是我的代码及完整错误栈:

代码

const { SlashCommandBuilder } = require('@discordjs/builders');
const { Configuration, OpenAIApi } = require("openai");

const configuration = new Configuration({
  apiKey: "MY API KEY HERE",
});
const openai = new OpenAIApi(configuration);

module.exports = {
  data: new SlashCommandBuilder()
    .setName('chat')
    .setDescription('Get an AI-generated response based on your message')
    .addStringOption(option =>
      option.setName('message')
        .setDescription('The message to generate a response from')
        .setRequired(true)),
  async execute(interaction) {
    const message = interaction.options.getString('message');

    try {
      const completion = await openai.createChatCompletion({
        model: "gpt-3.5-turbo",
        messages: [{ role: "user", content: message }],
      });

      const response = completion.data.choices[0].text.trim();

      await interaction.reply(response);
    } catch (error) {
      console.error(error);
      await interaction.reply({ content: 'Sorry, there was an error processing your request!', ephemeral: true });
    }
  },
};

错误栈

Error: Request failed with status code 404
    at createError (C:\Users\user\OneDrive\Desktop\rzn bot\node_modules\openai\node_modules\axios\lib\core\createError.js:16:15)
    at settle (C:\Users\user\OneDrive\Desktop\rzn bot\node_modules\openai\node_modules\axios\lib\core\settle.js:17:12)
    at IncomingMessage.handleStreamEnd (C:\Users\user\OneDrive\Desktop\rzn bot\node_modules\openai\node_modules\axios\lib\adapters\http.js:322:11)        
    at IncomingMessage.emit (node:events:525:35)
    at endReadableNT (node:internal/streams/readable:1359:12)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  config: {
    transitional: {
      silentJSONParsing: true,
      forcedJSONParsing: true,
      clarifyTimeoutError: false
    },
    adapter: [Function: httpAdapter],
    transformRequest: [ [Function: transformRequest] ],
    transformResponse: [ [Function: transformResponse] ],
    timeout: 0,
    xsrfCookieName: 'XSRF-TOKEN',
    xsrfHeaderName: 'X-XSRF-TOKEN',
    maxContentLength: -1,
    maxBodyLength: -1,
    validateStatus: [Function: validateStatus],
    headers: {
      Accept: 'application/json, text/plain, */*',
      'Content-Type': 'application/json',
      'User-Agent': 'OpenAI/NodeJS/3.2.1',
      Authorization: 'Bearer THE API KEY HERE',
      'Content-Length': 74
    },
    method: 'post',
    data: '{"model":"gpt-3.5-turbo","messages":[{"role":"user","content":"hey"}]}',
    url: 'https://api.openai.com/v1/chat/completions'
  },
  response: {
    status: 404,
    statusText: 'Not Found',
    headers: {
      date: 'Thu, 02 Mar 2023 22:37:48 GMT',
      'content-type': 'application/json; charset=utf-8',
      'content-length': '158',
      connection: 'keep-alive',
      vary: 'Origin',
      'x-request-id': '40456c1da0117d70199e713b83ddc6f8',
      'strict-transport-security': 'max-age=15724800; includeSubDomains'
    },
    data: { error: [Object] }
  },
  isAxiosError: true,
  toJSON: [Function: toJSON]
}

错误原因及解决方法

1. 核心原因:OpenAI SDK版本不兼容

你使用的OpenAI Node.js版本是3.2.1,该版本的createChatCompletion方法对应的API路径在当时未对gpt-3.5-turbo模型完全开放,且版本架构与当前API标准不匹配,导致请求路径无效触发404。

2. 修复步骤

  • 升级OpenAI SDK:执行命令将包升级到最新稳定版(至少v4.x以上):
npm install openai@latest
  • 适配新版本代码:新版本SDK调用方式有调整,修改后的代码如下:
const { SlashCommandBuilder } = require('@discordjs/builders');
const OpenAI = require("openai");

const openai = new OpenAI({
  apiKey: "MY API KEY HERE",
});

module.exports = {
  data: new SlashCommandBuilder()
    .setName('chat')
    .setDescription('基于你的消息生成AI回复')
    .addStringOption(option =>
      option.setName('message')
        .setDescription('生成回复的输入消息')
        .setRequired(true)),
  async execute(interaction) {
    const message = interaction.options.getString('message');

    try {
      const completion = await openai.chat.completions.create({
        model: "gpt-3.5-turbo",
        messages: [{ role: "user", content: message }],
      });

      // 注意:新版本返回内容路径为message.content,而非旧版的text
      const response = completion.choices[0].message.content.trim();

      await interaction.reply(response);
    } catch (error) {
      console.error(error);
      await interaction.reply({ content: '抱歉,处理你的请求时出错了!', ephemeral: true });
    }
  },
};

3. 旧版本兼容方案(不推荐)

如果暂时无法升级SDK,可改用createCompletion方法调用,但该方式存在功能限制,官方已逐步淘汰:

// 旧版本临时兼容写法
const completion = await openai.createCompletion({
  model: "gpt-3.5-turbo",
  prompt: message,
});
const response = completion.data.choices[0].text.trim();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:35:13