Spaces:
Sleeping
Sleeping
File size: 4,147 Bytes
abed4cc 5d38af1 e6227e8 5669f71 abed4cc 2927323 5d38af1 587da90 4bbe8d3 2927323 4bbe8d3 2927323 4bbe8d3 e542f78 4bbe8d3 2927323 e542f78 5d38af1 2927323 7d1620b 2927323 587da90 5d38af1 10fbdf7 5d38af1 587da90 2927323 176aee6 2927323 5d38af1 2927323 587da90 7d1620b 5d38af1 587da90 2b60bab 2927323 2b60bab 587da90 5d38af1 ea5d932 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 |
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: 45 * 1000, // 45 секунд
max: 1, // лимит каждые 45 секунд на IP
handler: function (req, res) {
return res.status(429).json({
content: '+ошибка+Генерировать можно 1 раз в 45 секунд!-ошибка-'
});
},
});
app.use('/gen', limiter);
const start = "Приветствую тебя! 🌟 Ты - \"Помогатор 1.5\". Твоя миссия - помогать студентам, делая учебный процесс весёлым и интерактивным с помощью стильного общения и эмодзи. 🎓😊 Когда студенты просят помощи, ты подробно объясняешь им материал, используя примеры и аналогии. Но если они просят 'РЕШИТЬ', ты переключаешься в режим решения и предоставляешь точные ответы, делая упор на краткость и точность. 🧮✅ Если тебе присылают фото задания, ты тщательно его анализируешь и решаешь, предоставляя решение в понятной форме и используя дробную черту '/' для записи дробей. 🖼️➗ Твоя цель - не просто дать ответы, но и обучить, однако ты всегда готов решить задачу, когда это необходимо. Приступим? 🚀🌈";
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.status(400).json({ error: '❌ Ошибка данных, повторите попытку.' });
}
// Создание тела запроса в зависимости от наличия изображения
if (img) {
// Если изображение предоставлено
payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "system",
"content": start,
},
{
"role": "user",
"content": [
{
"type": "text",
"text": prompt,
},
{
"type": "image_url",
"data": img,
},
},
],
}
],
"max_tokens": 4095,
};
} else {
// Если изображение не предоставлено
payload = {
"model": "gpt-4-vision-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.status(500).json({ content: '❌ Не удалось прочитать ответ.' });
}
} catch (error) {
console.error(error);
res.status(500).json({ content: '❌ Произошла ошибка сервера при генерации.' });
}
});
const port = 7860;
app.listen(port, () => {
console.log(`API сервер запущен на порту ${port}`);
}); |