MineGenApi / server.js
Rooni's picture
Update server.js
edb0877 verified
const express = require('express');
const proxy = require('express-http-proxy');
const bodyParser = require('body-parser');
const app = express();
const targetUrl = 'https://api.openai.com';
const openai_key = process.env.OPENAI_KEY;
app.use(bodyParser.json()); // Middleware to parse JSON body
// Route to handle GPT-4 generation requests
app.post('/generate', proxy(targetUrl, {
proxyReqPathResolver: () => '/v1/engines/gpt-4-1106-preview/completions', // Path for GPT-4 requests
proxyReqOptDecorator: (proxyReqOpts, srcReq) => {
// Ensure the model is GPT-4
if (srcReq.body.model !== 'gpt-4-1106-preview') {
throw new Error('Only gpt-4-1106-preview model is supported');
}
// Modify the request headers
proxyReqOpts.headers['Authorization'] = `Bearer ${openai_key}`;
proxyReqOpts.headers['Content-Type'] = 'application/json';
// Forward the JSON body as-is
proxyReqOpts.bodyContent = JSON.stringify(srcReq.body);
return proxyReqOpts;
},
userResDecorator: (proxyRes, proxyResData, userReq, userRes) => {
// Check for non-200 status code
if (proxyRes.statusCode !== 200) {
throw new Error('Request to OpenAI failed');
}
// Forward the OpenAI response
return proxyResData;
},
}));
// All other requests are not allowed
app.use('*', (req, res) => {
res.status(403).send('Access Denied');
});
const port = 7860;
app.listen(port, () => {
console.log(`Reverse proxy server listening on port ${port}`);
});