| 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', { |
| model="dall-e-3", |
| prompt=prompt, |
| size="1024x1024", |
| quality="hd", |
| 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}`); |
| }); |