Spaces:
Running
Running
File size: 1,790 Bytes
abed4cc 587da90 5d38af1 587da90 abed4cc 5d38af1 587da90 5d38af1 587da90 5d38af1 3306e94 587da90 80ec20e 587da90 5d38af1 587da90 5d38af1 587da90 5d38af1 587da90 0b62239 587da90 5d38af1 587da90 5d38af1 587da90 5d38af1 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 |
const express = require('express');
const axios = require('axios');
const rateLimit = require('express-rate-limit');
const app = express();
app.use(express.json());
const openai_key = process.env.OPENAI_KEY;
// Ограничение по IP-адресу: не более одной генерации в 30 секунд на один IP
const limiter = rateLimit({
windowMs: 30 * 1000, // 30 секунд
max: 1, // лимит на каждые 30 секунд
message: 'Слишком много запросов с этого IP, пожалуйста, попробуйте позже. (Лимит 1 генерация в 30 секунд.',
});
app.use(limiter);
// Маршрут для генерации изображения с помощью DALL·E 3
app.post('/generate-image', async (req, res) => {
const prompt = req.body.prompt;
if (!prompt) {
return res.status(400).json({ error: 'Требуется параметр "prompt".' });
}
try {
// Запрос на API OpenAI для генерации изображения
const response = await axios.post('https://api.openai.com/v1/images/generations', {
prompt: prompt,
n: 1,
size: "1024x1024",
quality: "hd",
model: "dall-e-3",
}, {
headers: {
'Authorization': `Bearer ${openai_key}`,
'Content-Type': 'application/json',
},
});
// Отправляем ответ клиенту
res.json(response.data);
} catch (error) {
console.error(error);
res.status(500).json({ error: 'Произошла ошибка сервера при генерации изображения.' });
}
});
const port = 7860;
app.listen(port, () => {
console.log(`API сервер запущен на порту ${port}`);
}); |