Spaces:
Running
Running
File size: 4,236 Bytes
abed4cc 5d38af1 e6227e8 5669f71 abed4cc 5d38af1 2b785ca df04541 9f5172e 587da90 4bbe8d3 49050b3 4bbe8d3 cc424de 4bbe8d3 9f5172e 49050b3 5743387 587da90 e25c36c 0d0b67b f97d87a 5743387 9f5172e a97fdfd 5743387 b93decc 5743387 587da90 5d38af1 57427a3 a6207c1 a41e935 a6207c1 c311b1d f67ae85 c311b1d f67ae85 57427a3 f67ae85 55cfd98 f67ae85 c311b1d a41e935 5743387 c311b1d 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 |
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 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}, {'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 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}. Отвечай кратко, но понятно!`}, {'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}`);
});
|