|
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; |
|
|
|
|
|
const limiter = rateLimit({ |
|
windowMs: 30 * 1000, |
|
max: 1, |
|
message: 'Слишком много запросов с этого IP, пожалуйста, попробуйте позже. (Лимит 1 генерация в 30 секунд.', |
|
}); |
|
|
|
app.use(limiter); |
|
|
|
|
|
app.post('/generate-image', async (req, res) => { |
|
const prompt = req.body.prompt; |
|
|
|
if (!prompt) { |
|
return res.status(400).json({ error: 'Требуется параметр "prompt".' }); |
|
} |
|
|
|
try { |
|
|
|
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}`); |
|
}); |