Spaces:
Runtime error
Runtime error
File size: 1,815 Bytes
abed4cc 587da90 5d38af1 587da90 abed4cc 5d38af1 587da90 5d38af1 587da90 5d38af1 587da90 5d38af1 587da90 5d38af1 587da90 5d38af1 587da90 5d38af1 587da90 5d38af1 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 |
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, пожалуйста, попробуйте позже.',
});
// Применяем ограничение ко всем запросам
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, // Количество изображений для генерации
}, {
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}`);
}); |