Spaces:
Sleeping
Sleeping
File size: 1,491 Bytes
abed4cc edb0877 abed4cc edb0877 abed4cc edb0877 abed4cc edb0877 abed4cc edb0877 abed4cc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
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}`);
}); |