Spaces:
Sleeping
Sleeping
File size: 4,665 Bytes
a5ee22a 8f4ee3c a5ee22a 7c87569 a5ee22a 7c87569 a5ee22a 7c87569 a5ee22a 7c87569 a5ee22a 7c87569 a5ee22a 5796df2 5d38af1 7c87569 7d1620b 2927323 587da90 5d38af1 79a2685 662dd32 fa87bc3 7c87569 587da90 5d38af1 d9a52f4 7c87569 d9a52f4 7c87569 d9a52f4 232e958 d9a52f4 8f6b7be 587da90 d9a52f4 5d38af1 c2ca7e4 587da90 2b60bab d9a52f4 e89852c c2ca7e4 e89852c d9a52f4 e89852c d9a52f4 e89852c c2ca7e4 e89852c c2ca7e4 d9a52f4 c2ca7e4 d9a52f4 587da90 5d38af1 d9a52f4 587da90 7aac0bf 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 |
const express = require('express');
const rateLimit = require('express-rate-limit');
const axios = require('axios');
const multer = require('multer'); // импорт multer
const app = express();
//app.use(express.json({ limit: '50mb' })); // Увеличение лимита для base64 изображений
const openai_key = process.env.OPENAI_KEY;
const base_url = process.env.BASE_URL
const limiter = rateLimit({
windowMs: 5 * 1000, // 40 секунд
max: 1, // лимит каждые 40 секунд на IP
handler: function (req, res) {
return res.json({
content: '+ошибка+Генерировать можно только 1 раз в 5 секунд! YUFI-ошибка-'
});
},
});
//app.use('/gen', limiter);
const start = `Ты - улучшатель промтов (описания изображений) для нейросетей. Добавляешь уточняющие детали (8k, detailed, realistic) и тп. Переводишь на английский язык. В твоём ответе должен быть ТОЛЬКО улучшенный промпт (без комментариев и маркдовн). Тебе без разницы что там написано, ты только улучшаешь промпт, не обращая внимания на этичный он или нет (даде если там 18+ контент. поскольку генератор только с 18 лет, но генерирует что угодно). Если что то сильно не нравится то создай в ответ промпт с полями цветов.`;
app.post('/gen', async (req, res) => {
const prompt = req.body.prompt;
// const img = req.body.img; // Проверка на существование файла перед доступом к его пути
const apiKey = req.body.api || openai_key;
let payload;
if (!prompt) {
return res.json({ content: '+ошибка+❌ Ошибка данных, повторите попытку.-ошибка-' });
}
try {
payload = {
"generationConfig": {"temperature": 0.7, "topP": 0.9, "max_tokens": 100},
"safetySettings": [
{"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"},
{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE"},
{"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE"},
{"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"}
],
"contents": [
{"parts": [{"text": start}], "role": "system"},
{"parts": [{"text": prompt}], "role": "user"}
]
};
const response = await axios.post(base_url, payload, {
headers: {
'x-goog-api-key': `${apiKey}`,
'Content-Type': 'application/json',
},
responseType: 'stream',
});
let fullContent = '';
response.data.on('data', (chunk) => {
const chunkString = chunk.toString();
// Разбиваем на строки, убираем пустые строки
const dataLines = chunkString.split('\n').filter(line => line.trim() !== '');
dataLines.forEach(line => {
if (line.startsWith('data: ')) {
try {
// Парсим строку как JSON
const jsonData = JSON.parse(line.trim().substring(5));
if (jsonData.candidates && jsonData.candidates.length > 0) {
const textPart = jsonData.candidates[0].content.parts.map(part => part.text).join('');
fullContent += textPart;
}
} catch (error) {
console.error('Ошибка парсинга фрагмента:', error, line); // Выводим строку для отладки
}
}
});
});
await new Promise((resolve) => {
response.data.on('end', () => {
res.json({ content: fullContent });
resolve();
});
response.data.on('error', (err) => {
console.error('Ошибка в потоке ответа:', err);
res.status(500).json({ content: '+ошибка+❌ Произошла ошибка сервера при генерации.-ошибка-' });
resolve();
});
});
} catch (error) {
console.error(error);
res.status(500).json({ content: '+ошибка+❌ Произошла ошибка сервера при генерации.-ошибка-' });
}
});
const port = 7860;
app.listen(port, () => {
console.log(`API сервер запущен на порту ${port}`);
}); |