这里是一个使用 Node.js 做 OpenAI 反代的完整示例代码:
const express = require('express'); const { createProxyMiddleware } = require('http-proxy-middleware'); const app = express(); // OpenAI API Key const OPENAI_API_KEY = 'YOUR_OPENAI_API_KEY'; // OpenAI API URL const OPENAI_API_URL = 'https://api.openai.com/v1/'; // Target URL for proxy const TARGET_URL = OPENAI_API_URL; // Options for proxy middleware const proxyOptions = { target: TARGET_URL, changeOrigin: true, headers: { Authorization: `Bearer ${OPENAI_API_KEY}`, 'Content-Type': 'application/json', }, onProxyReq: (proxyReq, req, res) => { if (req.method === 'POST' && req.body) { const bodyData = JSON.stringify(req.body); proxyReq.setHeader('Content-Type', 'application/json'); proxyReq.setHeader('Content-Length', Buffer.byteLength(bodyData)); proxyReq.write(bodyData); } }, }; // Add the proxy middleware app.use(createProxyMiddleware(proxyOptions)); // Start the server app.listen(3000, () => { console.log('Server listening on port 3000'); });
在这里,我们使用了 http-proxy-middleware 库来创建反代。我们设置了 OpenAI API 的 URL 和 API Key,然后将它们传递给 http-proxy-middleware 的 createProxyMiddleware 函数。我们使用了 onProxyReq 选项来确保请求的 Content-Type 是正确的。最后,我们启动了服务器并监听端口 3000。
使用该代码,您可以通过访问 http://localhost:3000 来访问 OpenAI API。例如,如果您想使用 OpenAI 的 davinci 模型进行文本生成,您可以向 http://localhost:3000/completions 发送 POST 请求,并在请求体中包含您的文本和模型名称。反代服务器将转发该请求到 OpenAI API,OpenAI API 将生成文本并将其返回给您。
需要在package.json中添加 http-proxy-middleware 和 express 作为依赖项。在 dependencies 部分中添加以下代码:
{ "dependencies": { "http-proxy-middleware": "^2.0.1", "express": "^4.17.1" } }
如果您想在生产环境中使用这个代码,请将这个代码添加到您的 dependencies 中。如果您只想在开发环境中使用它,则将其添加到 devDependencies 中:
{ "devDependencies": { "http-proxy-middleware": "^2.0.1", "express": "^4.17.1" } }
在添加完依赖项后,使用 npm install 命令来安装这些依赖项。这将确保您的项目中包含了所需的库。