OpenAI ChatGPT (GPT-3.5) API 错误 404:“请求失败,状态代码 404”

bab*_*ins 2 javascript node.js reactjs openai-api chatgpt-api

我正在开发一个 ChatGPT-App,使用 React 和 Axios 向 OpenAI 的 GPT-3.5 API 发出 API 请求。但是,我在尝试发出请求时遇到 404 错误。我希望有人可以帮助我确定问题并指导我如何解决它。以下是 App.js 和 index.js 代码和错误消息:

前端

应用程序.js

function App() {
  const [messages, setMessages] = useState([]);
  const [input, setInput] = useState("");

  const sendMessage = async () => {
    if (input.trim() === "") return;
  
    const userInput = input; // Store user input in a temporary variable
    setMessages([...messages, { type: "user", text: userInput }]);
    setInput("");
  
    try {
      const response = await axios.post("http://localhost:5000/api/chat", { text: userInput });
      const gptResponse = response.data.message;
      setMessages((prevMessages) => [
        ...prevMessages,
        { type: "chatgpt", text: gptResponse },
      ]);
    } catch (error) {
      console.error("Error:", error);
    }
  };

Run Code Online (Sandbox Code Playgroud)

后端

索引.js

const express = require("express");
const axios = require("axios");
const cors = require("cors");

const app = express();
app.use(express.json());
app.use(cors());

const openai_api_key = "MYOPENAI-APIKEY";
const headers = {
  "Content-Type": "application/json",
  "Authorization": `Bearer ${openai_api_key}`,
};

app.post("/api/chat", async (req, res) => {
  try {
    const input = req.body.text;
    const response = await axios.post(
      "https://api.openai.com/v1/engines/davinci-codex/completions",
      {
        prompt: `User: ${input}\nChatGPT: `,
        max_tokens: 150,
        temperature: 0.7,
        n: 1,
      },
      { headers }
    );

    const gptResponse = response.data.choices[0].text.trim();
    res.json({ message: gptResponse });
  } catch (error) {
    console.error("Error:", error);
    res.status(500).json({ error: "An error occurred while processing your request." });
  }
});

const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
  console.log(`Server started on port ${PORT}`);
});
Run Code Online (Sandbox Code Playgroud)

错误信息: AxiosError: Request failed with status code 404

我已经验证 API 密钥是正确的,URL 也应该是正确的。谁能指出导致此错误的正确方向?任何帮助将不胜感激。谢谢你!

Rok*_*nko 5

聊天完成 API(即 GPT-3.5 API)和完成 API(即 GPT-3 API)之间存在三个主要区别。

\n

如果您使用 OpenAI 库(NodeJSPython

\n

注意:OpenAI NodeJS SDK于2023年8月16日发布v4,是对SDK的完全重写。下面的代码根据您当前拥有的版本而有所不同。请参阅迁移指南v3v4

\n

差异如下:

\n
    \n
  1. 功能\n
      \n
    • 完成 API:\n
        \n
      • OpenAI NodeJS SDK v3openai.createCompletion
      • \n
      • OpenAI NodeJS SDK v4openai.completions.create
      • \n
      \n
    • \n
    • 聊天完成 API:\n
        \n
      • OpenAI NodeJS SDK v3openai.createChatCompletion
      • \n
      • OpenAI NodeJS SDK v4openai.chat.completions.create
      • \n
      \n
    • \n
    \n
  2. \n
  3. 参数prompt(Completions API) 替换为messages参数 (Chat Completions API)
  4. \n
  5. 响应访问\n
      \n
    • 完成 API:\n
        \n
      • OpenAI NodeJS SDK v3return response.data.choices[0].text;
      • \n
      • OpenAI NodeJS SDK v4return response.choices[0].text;
      • \n
      \n
    • \n
    • 聊天完成 API:\n
        \n
      • OpenAI NodeJS SDK v3return response.data.choices[0].message.content;
      • \n
      • OpenAI NodeJS SDK v4return response.choices[0].message.content;
      • \n
      \n
    • \n
    \n
  6. \n
\n

工作示例(NodeJS)

\n

\xe2\x80\xa2 如果您有 OpenAI NodeJS SDK v3

\n
const { Configuration, OpenAIApi } = require(\'openai\');\n\nconst configuration = new Configuration({\n  apiKey: \'sk-xxxxxxxxxxxxxxxxxxxx\',\n});\n\nconst openai = new OpenAIApi(configuration);\n\nasync function getChatGptResponse(request) {\n  try {\n    const response = await openai.createChatCompletion({\n      model: \'gpt-3.5-turbo\',\n      messages: [{ role: \'user\', content: \'Hello!\' }],\n    });\n\n    console.log(response.data.choices[0].message.content);\n    return response.data.choices[0].message.content;\n  } catch (err) {\n    console.log(\'Error: \' + err);\n    return err;\n  }\n}\n\ngetChatGptResponse();\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\xa2 如果您有 OpenAI NodeJS SDK v4

\n
import OpenAI from \'openai\';\n\nconst openai = new OpenAI({\n  apiKey: \'sk-xxxxxxxxxxxxxxxxxxxx\',\n});\n\nasync function getChatGptResponse(request) {\n  try {\n    const response = await openai.chat.completions.create({\n      model: \'gpt-3.5-turbo\',\n      messages: [{ role: \'user\', content: \'Hello!\' }],\n    });\n\n    console.log(response.choices[0].message.content);\n    return response.choices[0].message.content;\n  } catch (err) {\n    console.log(\'Error: \' + err);\n    return err;\n  }\n}\n\ngetChatGptResponse();\n
Run Code Online (Sandbox Code Playgroud)\n
\n

如果您没有使用 OpenAI 库

\n

差异如下:

\n
    \n
  1. API 终结点\n
      \n
    • 完成 API:https://api.openai.com/v1/completions
    • \n
    • 聊天完成 API:https://api.openai.com/v1/chat/completions
    • \n
    \n
  2. \n
  3. 参数prompt(Completions API) 替换为messages参数 (Chat Completions API)
  4. \n
  5. 响应访问\n
      \n
    • 完成 API:\n
        \n
      • OpenAI NodeJS SDK v3
        const chatGptResponse = response.data.choices[0].text;
      • \n
      • OpenAI NodeJS SDK v4
        const chatGptResponse = response.choices[0].text;
      • \n
      \n
    • \n
    • 聊天完成 API:\n
        \n
      • OpenAI NodeJS SDK v3
        const chatGptResponse = response.data.choices[0].message.content;
      • \n
      • OpenAI NodeJS SDK v4
        const chatGptResponse = response.choices[0].message.content;
      • \n
      \n
    • \n
    \n
  6. \n
\n

工作示例

\n

\xe2\x80\xa2 如果您有 OpenAI NodeJS SDK v3

\n
const express = require(\'express\');\nconst axios = require(\'axios\');\nconst cors = require(\'cors\');\n\nconst app = express();\napp.use(express.json());\napp.use(cors());\n\nconst openaiApiKey = \'sk-xxxxxxxxxxxxxxxxxxxx\';\n\nconst headers = {\n  \'Content-Type\': \'application/json\',\n  \'Authorization\': `Bearer ${openaiApiKey}`,\n};\n\napp.post(\'/api/chat\', async (req, res) => {\n  try {\n    const input = req.body.text;\n\n    const response = await axios.post(\n      \'https://api.openai.com/v1/chat/completions\',\n      {\n        model: \'gpt-3.5-turbo\',\n        messages: [{role: \'user\', content: `${input}`}],\n      },\n      { headers }\n    );\n\n    const chatGptResponse = response.data.choices[0].message.content;\n\n    console.log(chatGptResponse);\n    res.status(200).json({ message: chatGptResponse });\n  } catch (err) {\n    console.log(\'Error: \' + err);\n    res.status(500).json({ error: \'An error occurred while processing your request\' });\n  }\n});\n\nconst PORT = process.env.PORT || 5000;\napp.listen(PORT, () => {\n  console.log(`Server started on port ${PORT}`);\n});\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\xa2 如果您有 OpenAI NodeJS SDK v4

\n
const express = require(\'express\');\nconst axios = require(\'axios\');\nconst cors = require(\'cors\');\n\nconst app = express();\napp.use(express.json());\napp.use(cors());\n\nconst openaiApiKey = \'sk-xxxxxxxxxxxxxxxxxxxx\';\n\nconst headers = {\n  \'Content-Type\': \'application/json\',\n  \'Authorization\': `Bearer ${openaiApiKey}`,\n};\n\napp.post(\'/api/chat\', async (req, res) => {\n  try {\n    const input = req.body.text;\n\n    const response = await axios.post(\n      \'https://api.openai.com/v1/chat/completions\',\n      {\n        model: \'gpt-3.5-turbo\',\n        messages: [{role: \'user\', content: `${input}`}],\n      },\n      { headers }\n    );\n\n    const chatGptResponse = response.choices[0].message.content;\n\n    console.log(chatGptResponse);\n    res.status(200).json({ message: chatGptResponse });\n  } catch (err) {\n    console.log(\'Error: \' + err);\n    res.status(500).json({ error: \'An error occurred while processing your request\' });\n  }\n});\n\nconst PORT = process.env.PORT || 5000;\napp.listen(PORT, () => {\n  console.log(`Server started on port ${PORT}`);\n});\n
Run Code Online (Sandbox Code Playgroud)\n