Spaces:
Running
Running
File size: 4,348 Bytes
abed4cc 5d38af1 e6227e8 5669f71 abed4cc 5d38af1 2b785ca df04541 9f5172e 587da90 4bbe8d3 49050b3 4bbe8d3 cc424de 4bbe8d3 9f5172e 49050b3 5743387 587da90 e25c36c 0d0b67b f97d87a 5743387 77079b7 9f5172e a97fdfd 5743387 b93decc 5743387 587da90 5d38af1 f32d253 00faab5 a41e935 a6207c1 f32d253 f67ae85 f32d253 f67ae85 62c3318 f67ae85 f32d253 62c3318 55cfd98 f67ae85 f32d253 a41e935 5743387 f32d253 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 |
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: 60 * 1000, // 60 секунд
max: 8, // лимит каждые 60 секунд на IP
handler: function (req, res) {
return res.status(429).json("wait");
},
});
// Применение ограничителя скорости перед обработчиком маршрута /pl и /crebeta
app.use('/pl', limiter);
const start = `${process.env.start}`;
app.post('/update', async (req, res) => {
res.json({ content: `{"error":"", "title":"Требуется обновление", "text":"Текущая версия приложения устарела. Установите новую из нашего телеграм канала: @yufi_ru", "okb":"Обновить", "oklink":"https://t.me/yufi_ru", "cancelable":"false"}` });
});
app.post('/pl', async (req, res) => {
const prompt = req.body.prompt;
const lang = req.body.lang || "ru";
const apiKey = req.body.api || getRandomApiKey();
if (!prompt) {
return res.status(400).json(`Нет запроса! :${prompt}`); // Не удалось принять данные
}
try {
const response = await axios.post('https://text.pollinations.ai/openai', {
messages: [{'role': 'system', 'content': `${start}. Отвечай на языке: ${lang}`}, {'role': 'user', 'content': prompt}],
max_tokens: 4000,
temperature: 0.7,
model: "openai",
presence_penalty: 0.4,
}, {
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('/pls', async (req, res) => {
const prompt = req.body.prompt;
const lang = req.body.lang || "ru";
const apiKey = req.body.api || getRandomApiKey();
if (!prompt) {
return res.status(400).json(`Нет запроса! :${prompt}`); // Не удалось принять данные
}
try {
const response = await axios.post('https://text.pollinations.ai/openai', {
messages: [{'role': 'system', 'content': `${start}. Отвечай на языке: ${lang}`}, {'role': 'user', 'content': prompt}],
max_tokens: 2000,
temperature: 0.7,
model: "openai",
presence_penalty: 0.4,
}, {
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"}` });
}
});
const port = 7860;
app.listen(port, () => {
console.log(`API сервер запущен на порту ${port}`);
});
|