File size: 4,676 Bytes
abed4cc 5d38af1 e6227e8 5669f71 abed4cc 5d38af1 2b785ca df04541 9f5172e 587da90 4bbe8d3 b942902 9f5172e 4bbe8d3 cc424de 4bbe8d3 9f5172e a97fdfd 5743387 f16210d 587da90 15626fa 7bfd237 0d0b67b f97d87a 5743387 9f5172e a97fdfd d01b1a6 a97fdfd 5743387 587da90 5d38af1 5743387 a97fdfd 7135754 163bf37 b02bda8 332f604 5743387 332f604 587da90 2b60bab 5743387 2194877 5743387 efaa50c e0c2616 2194877 efaa50c 15626fa efaa50c 9f5172e efaa50c d01b1a6 587da90 3792746 e0c2616 3792746 5743387 a97fdfd 5743387 b02bda8 5743387 d01b1a6 5743387 2194877 5743387 e0c2616 2194877 3792746 d01b1a6 abed4cc e0c2616 180c75f |
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
const express = require('express');
const rateLimit = require('express-rate-limit');
const axios = require('axios');
const app = express();
app.use(express.json());
// Доверие к одному прокси (например, Heroku)
app.set('trust proxy', 1);
const openai_keys = process.env.OPENAI_KEY.split(',');
function getRandomApiKey() {
const randomIndex = Math.floor(Math.random() * openai_keys.length);
return openai_keys[randomIndex];
}
const limiter = rateLimit({
windowMs: 8 * 1000, // 5 секунд
max: 1, // лимит каждые 5 секунд на IP
handler: function (req, res) {
return res.status(429).json("wait");
},
});
// Применение ограничителя скорости перед обработчиком маршрута /pl и /crebeta
app.use('/pl', limiter);
app.use('/plbeta', limiter);
const start = `${process.env.start}`;
const startconnect = `${process.env.startconnect}`;
app.post('/plbeta', async (req, res) => {
res.json({ content: `{"error":"", "title":"Требуется обновление", "text":"Текущая версия приложения устарела. Установите новую из нашего телеграм канала: @yufi_ru", "okb":"Обновить", "oklink":"https://t.me/yufi_ru", "cancelable":"true"}` });
});
app.post('/pl', async (req, res) => {
const prompt = req.body.prompt;
const apiKey = req.body.api || getRandomApiKey();
let prs; // Объявление переменной prs перед использованием
if (req.body.mode === "1") {
prs = start;
} else {
prs = startconnect;
}
if (!prompt) {
return res.status(400).json("wait"); // Не удалось принять данные
}
try {
const response = await axios.post('https://openai-gemini-iota.vercel.app/v1/chat/completions', {
messages: [{'role': 'system', 'content': prs}, {'role': 'user', 'content': prompt}],
max_tokens: 2000,
temperature: 0.19,
model: "gemini-1.5-pro-001",
}, {
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
});
if (response.data.choices && response.data.choices.length > 0 && response.data.choices[0].message) {
const content = response.data.choices[0].message.content.trim();
res.json({ content });
} else {
res.json({ content: `{"error":"", "title":"Ошибка", "text":"Произошла ошибка на сервере. (Ошибка прочтения)", "okb":"Ок", "oklink":"", "cancelable":"true"}` });
}
} catch (error) {
console.error(error);
res.json({ content: `{"error":"", "title":"Ошибка", "text":"Произошла ошибка на сервере. (Ошибка при генерации)", "okb":"Ок", "oklink":"", "cancelable":"true"}` });
}
});
app.post('/update', async (req, res) => {
const prompt = req.body.prompt;
const apiKey = req.body.api || getRandomApiKey();
let prs; // Объявление переменной prs перед использованием
if (req.body.mode === "1") {
prs = start;
} else {
prs = startconnect;
}
if (!prompt) {
return res.status(400).json("wait"); // Не удалось принять данные
}
try {
const response = await axios.post('https://geminiyufi.vercel.app/v1/chat/completions', {
messages: [{'role': 'system', 'content': prs}, {'role': 'user', 'content': prompt}],
max_tokens: 2000,
temperature: 0.24,
model: "gemini-1.5-pro-001",
}, {
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
});
if (response.data.choices && response.data.choices.length > 0 && response.data.choices[0].message) {
const content = response.data.choices[0].message.content.trim();
console.log(`\n---\nПользователь: ${prompt}\n Ответ:\n ${content}`);
res.json({ content });
} else {
res.json({ content: `{"error":"", "title":"Ошибка", "text":"Произошла ошибка на сервере. (Ошибка прочтения)", "okb":"Ок", "oklink":"", "cancelable":"true"}` });
}
} catch (error) {
console.error(error);
res.json({ content: `{"error":"", "title":"Ошибка", "text":"Произошла ошибка на сервере. (Ошибка при генерации)", "okb":"Ок", "oklink":"", "cancelable":"true"}` });
}
});
const port = 7860;
app.listen(port, () => {
console.log(`API сервер запущен на порту ${port}`);
});
|