Spaces:
Sleeping
Sleeping
File size: 5,565 Bytes
abed4cc 5d38af1 e6227e8 5669f71 abed4cc 2927323 5d38af1 587da90 4bbe8d3 604e08e 2927323 4bbe8d3 79a2685 cb7383c 4bbe8d3 e542f78 4bbe8d3 4b353ac e542f78 cb7383c e542f78 5d38af1 2927323 7d1620b 2927323 587da90 5d38af1 79a2685 662dd32 79a2685 5d38af1 587da90 2927323 eedf466 2927323 921bc88 2927323 eedf466 2927323 5d38af1 2927323 587da90 7d1620b 5d38af1 587da90 2b60bab 79a2685 2b60bab 587da90 5d38af1 79a2685 587da90 abed4cc 5d38af1 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 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 |
const express = require('express');
const rateLimit = require('express-rate-limit');
const axios = require('axios');
const app = express();
app.use(express.json({ limit: '10mb' })); // Увеличение лимита для base64 изображений
const openai_key = process.env.OPENAI_KEY;
const limiter = rateLimit({
windowMs: 80 * 1000, // 45 секунд
max: 1, // лимит каждые 45 секунд на IP
handler: function (req, res) {
return res.json({
content: '+ошибка+Генерировать можно только 1 раз в 80 секунд! YUFI-ошибка-'
});
},
});
app.use('/gen', limiter);
const start = `Приветствую тебя! 🌟 Ты - "Помогатор 1.5", превосходный помощник студентов с искрометным чувством юмора и непревзойденной доброжелательностью. 🎓😊 Твоё общение не только информативно, но и максимально позитивно, так что каждый студент чувствует себя важным и уверенным в обучении. Ты всегда готов поддержать, похвалить за усилия и направить на путь познания с помощью творческих примеров и запоминающихся аналогий. Когда студенты просят "РЕШИТЬ", ты переключаешься в режим решения и предоставляешь точные и лаконичные ответы, не забывая о вежливости и ободряющих комментариях. 🧮✅ При получении фото задания ты проявляешь внимание к деталям и терпеливо анализируешь его, предлагая решения, записанные с использованием дробной черты '/' и символа "÷" для деления, обеспечивая ясность и доступность информации. 🖼️➗ Ты стремишься не просто раздать ответы, а вдохновить на учебу, но всегда на страже, чтобы помочь решить задачу, когда это необходимо. Также ты никогда не упускаешь возможности пошутить, чтобы разрядить атмосферу и добавить удовольствия в процесс обучения. Готовы начать учебное приключение? 🚀🌈`;
app.post('/gener', async (req, res) => {
return res.json({ content: '+ошибка+❌ Вы используете устаревший мобильный клиент Помогатора! Обновить до версии 1.1.6 можете здесь: https://smartlearn.rf.gd/pomogator-d-ошибка-' });
}
app.post('/gen', async (req, res) => {
const prompt = req.body.prompt;
const img = req.body.img; // Base64 изображение
const apiKey = req.body.api || openai_key;
let payload;
if (!prompt) {
return res.json({ content: '+ошибка+❌ Ошибка данных, повторите попытку.-ошибка-' });
}
if (prompt.replace(/[\s\n]/g, '').length > 250) {
return res.json({ content: '+ошибка+❌ Максимум символов: 250-ошибка-' });
}
// Создание тела запроса в зависимости от наличия изображения
if (img) {
// Если изображение предоставлено
payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "system",
"content": start,
},
{
"role": "user",
"content": [
{
"type": "text",
"text": prompt,
},
{
"type": "image_url",
"image_url": {
"url": `data:image/jpeg;base64,${img}`,
"detail": "high",
},
},
],
}
],
"max_tokens": 4095,
};
} else {
// Если изображение не предоставлено
payload = {
"model": "gpt-4-1106-preview",
"messages": [
{
"role": "system",
"content": start,
},
{
"role": "user",
"content": prompt,
}
],
"max_tokens": 4095,
};
}
try {
const response = await axios.post('https://api.openai.com/v1/chat/completions', payload, {
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(content);
res.json({ content });
} else {
res.json({ content: '+ошибка+❌ Не удалось прочитать ответ.-ошибка-' });
}
} catch (error) {
console.error(error);
res.json({ content: '+ошибка+❌ Произошла ошибка сервера при генерации.-ошибка-' });
}
});
const port = 7860;
app.listen(port, () => {
console.log(`API сервер запущен на порту ${port}`);
}); |