ber / server.js
Rooni's picture
Update server.js
180c75f verified
raw
history blame
3.87 kB
const express = require('express');
const rateLimit = require('express-rate-limit');
const axios = require('axios');
const app = express();
app.use(express.json());
const apiKeys = process.env.OPENAI_KEYS.split(',');
const start = process.env.start;
const limiter = rateLimit({
windowMs: 5 * 1000, // 5 секунд
max: 1, // лимит на 1 запрос каждые 5 секунд на IP
handler: function (req, res) {
return res.status(429).json("wait");
},
});
// Применение ограничителя скорости перед обработчиком маршрута /pl
app.use('/pl', limiter);
app.post('/cr', (req, res) => {
res.json({
content: '{"whate":"🪨","howe":"ОБНОВИТЕСЬ","text":"Текущая версия приложения устарела. Установите новую из нашего телеграм канала: @yufi_ru","succ":"победа","what":"Версию","how":"Обновите","howl":"@yufi_ru"}'
});
});
// Функция для получения случайного API ключа
const getRandomApiKey = () => apiKeys[Math.floor(Math.random() * apiKeys.length)];
const generateResponse = async (url, prompt, additionalMessages, temperature) => {
try {
const response = await axios.post(url, {
messages: [
{ role: 'system', content: start },
...additionalMessages,
{ role: 'user', content: prompt }
],
max_tokens: 2000,
temperature: temperature,
model: additionalMessages.length > 0 ? "gemini-1.5-pro-002" : "deepseek-chat",
}, {
headers: {
'Authorization': `Bearer ${getRandomApiKey()}`,
'Content-Type': 'application/json',
},
});
return response.data.choices && response.data.choices.length > 0 && response.data.choices[0].message
? response.data.choices[0].message.content.trim()
: null;
} catch (error) {
console.error(error);
throw new Error('Error during generation');
}
};
app.post('/pl', async (req, res) => {
const prompt = req.body.prompt;
if (!prompt) {
return res.status(400).json("wait"); // Не удалось принять данные
}
try {
const content = await generateResponse('https://openai-gemini-iota.vercel.app/v1/chat/completions', prompt, [], 0.8);
content ? res.json({ content }) : res.status(500).json({ content: 'errora' });
} catch {
res.status(500).json({ content: 'errorb' });
}
});
app.post('/cre', async (req, res) => {
const prompt = req.body.prompt;
if (!prompt) {
return res.status(400).json("wait"); // Не удалось принять данные
}
try {
const additionalMessages = [
{ role: 'system', content: 'И ОБЯЗАТЕЛЬНО, всегда в конце "text" проси обновить приложение, уведомляя о том, что скоро в жтой версии перестанешь отвечать!' }
];
const content = await generateResponse('https://vercel.com/roonis-projects/openai-gemini/v1/chat/completions', prompt, additionalMessages, 0.6);
content ? res.json({ content }) : res.status(500).json({ content: 'errora' });
} catch {
res.status(500).json({ content: 'errorb' });
}
});
app.post('/crebeta', async (req, res) => {
const prompt = req.body.prompt;
if (!prompt) {
return res.status(400).json("wait"); // Не удалось принять данные
}
try {
const content = await generateResponse('https://geminiyufi.vercel.app/v1/chat/completions', prompt, [], 0.24);
content ? res.json({ content }) : res.status(500).json({ content: 'errora' });
} catch {
res.status(500).json({ content: 'errorb' });
}
});
const port = 7860;
app.listen(port, () => {
console.log(`API сервер запущен на порту ${port}`);
});