我正在开发一个 ChatGPT-App,使用 React 和 Axios 向 OpenAI 的 GPT-3.5 API 发出 API 请求。但是,我在尝试发出请求时遇到 404 错误。我希望有人可以帮助我确定问题并指导我如何解决它。以下是 App.js 和 index.js 代码和错误消息:
前端
App.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);
}
};
后端
index.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}`);
});
错误信息:
AxiosError:请求失败,状态代码 404
我已验证 API key 正确,URL 也应该正确。谁能指出导致此错误的正确方向?任何帮助将不胜感激。谢谢!
最佳答案
Chat Completions API 之间存在三个主要区别(即 GPT-3.5 API)和 Completions API (即 GPT-3 API)。
如果您使用 OpenAI 库( NodeJS 或 Python )
注意:OpenAI NodeJS SDK v4
为 released于2023年8月16日发布,并且是对SDK的完全重写。下面的代码根据您当前拥有的版本而有所不同。请参阅 v3
至 v4
migration guide .
差异如下:
- 功能
- 完成 API:
- OpenAI NodeJS SDK
v3
:openai.createCompletion
- OpenAI NodeJS SDK
v4
:openai.completions.create
- OpenAI NodeJS SDK
- 聊天完成 API:
- OpenAI NodeJS SDK
v3
:openai.createChatCompletion
- OpenAI NodeJS SDK
v4
:openai.chat.completions.create
- OpenAI NodeJS SDK
- 完成 API:
prompt
参数(Completions API)已替换为messages
参数(Chat Completions API)- 响应访问
- 完成 API:
- OpenAI NodeJS SDK
v3
:返回response.data.choices[0].text;
- OpenAI NodeJS SDK
v4
:返回response.choices[0].text;
- OpenAI NodeJS SDK
- 聊天完成 API:
- OpenAI NodeJS SDK
v3
:返回response.data.choices[0].message.content;
- OpenAI NodeJS SDK
v4
:返回response.choices[0].message.content;
- OpenAI NodeJS SDK
- 完成 API:
工作示例(NodeJS)
• 如果您有 OpenAI NodeJS SDK v3
:
const { Configuration, OpenAIApi } = require('openai');
const configuration = new Configuration({
apiKey: 'sk-xxxxxxxxxxxxxxxxxxxx',
});
const openai = new OpenAIApi(configuration);
async function getChatGptResponse(request) {
try {
const response = await openai.createChatCompletion({
model: 'gpt-3.5-turbo',
messages: [{ role: 'user', content: 'Hello!' }],
});
console.log(response.data.choices[0].message.content);
return response.data.choices[0].message.content;
} catch (err) {
console.log('Error: ' + err);
return err;
}
}
getChatGptResponse();
• 如果您有 OpenAI NodeJS SDK v4
:
import OpenAI from 'openai';
const openai = new OpenAI({
apiKey: 'sk-xxxxxxxxxxxxxxxxxxxx',
});
async function getChatGptResponse(request) {
try {
const response = await openai.chat.completions.create({
model: 'gpt-3.5-turbo',
messages: [{ role: 'user', content: 'Hello!' }],
});
console.log(response.choices[0].message.content);
return response.choices[0].message.content;
} catch (err) {
console.log('Error: ' + err);
return err;
}
}
getChatGptResponse();
如果您没有使用 OpenAI 库
差异如下:
- API端点
- Completions API:
https://api.openai.com/v1/completions
- 聊天完成 API:
https://api.openai.com/v1/chat/completions
- Completions API:
prompt
参数(Completions API)已替换为messages
参数(Chat Completions API)- 响应访问
- 完成 API:
- OpenAI NodeJS SDK
v3
:
const chatGptResponse = response.data.choices[0].text;
- OpenAI NodeJS SDK
v4
:
const chatGptResponse = response.choices[0].text;
- OpenAI NodeJS SDK
- 聊天完成 API:
- OpenAI NodeJS SDK
v3
:
const chatGptResponse = response.data.choices[0].message.content;
- OpenAI NodeJS SDK
v4
:
const chatGptResponse = response.choices[0].message.content;
- OpenAI NodeJS SDK
- 完成 API:
工作示例
• 如果您有 OpenAI NodeJS SDK v3
:
const express = require('express');
const axios = require('axios');
const cors = require('cors');
const app = express();
app.use(express.json());
app.use(cors());
const openaiApiKey = 'sk-xxxxxxxxxxxxxxxxxxxx';
const headers = {
'Content-Type': 'application/json',
'Authorization': `Bearer ${openaiApiKey}`,
};
app.post('/api/chat', async (req, res) => {
try {
const input = req.body.text;
const response = await axios.post(
'https://api.openai.com/v1/chat/completions',
{
model: 'gpt-3.5-turbo',
messages: [{role: 'user', content: `${input}`}],
},
{ headers }
);
const chatGptResponse = response.data.choices[0].message.content;
console.log(chatGptResponse);
res.status(200).json({ message: chatGptResponse });
} catch (err) {
console.log('Error: ' + err);
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}`);
});
• 如果您有 OpenAI NodeJS SDK v4
:
const express = require('express');
const axios = require('axios');
const cors = require('cors');
const app = express();
app.use(express.json());
app.use(cors());
const openaiApiKey = 'sk-xxxxxxxxxxxxxxxxxxxx';
const headers = {
'Content-Type': 'application/json',
'Authorization': `Bearer ${openaiApiKey}`,
};
app.post('/api/chat', async (req, res) => {
try {
const input = req.body.text;
const response = await axios.post(
'https://api.openai.com/v1/chat/completions',
{
model: 'gpt-3.5-turbo',
messages: [{role: 'user', content: `${input}`}],
},
{ headers }
);
const chatGptResponse = response.choices[0].message.content;
console.log(chatGptResponse);
res.status(200).json({ message: chatGptResponse });
} catch (err) {
console.log('Error: ' + err);
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}`);
});
关于javascript - OpenAI ChatGPT (GPT-3.5) API 错误 404 : "Request failed with status code 404",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75909209/