Spaces:
Sleeping
Sleeping
File size: 2,543 Bytes
abed4cc 5d38af1 e6227e8 5669f71 abed4cc 5d38af1 587da90 2b60bab bad8307 5d38af1 e6227e8 2b60bab e6227e8 587da90 bad8307 5d38af1 587da90 5d38af1 587da90 5d38af1 7135754 2b60bab 7135754 2b60bab 587da90 5d38af1 587da90 2b60bab 587da90 5d38af1 6814fd7 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 54 55 56 57 |
const express = require('express');
const rateLimit = require('express-rate-limit');
const axios = require('axios');
const app = express();
app.use(express.json());
const openai_key = process.env.OPENAI_KEY;
const start = `Ты генератор рецептов. В этом чате, тебе будут присылать названия блюд или описывать их или присылать название категории, а ты должен будешь написать идеальный, понятный, подробный, лёгкий или сложный рецепт со всеми пропорциями, количествами и этапами готовки (этапы готовки должны быть разделены, например 1.1., 1.2., 2.1., 2.2. (Обязательно со звёздочками, это жирный шрифт) С эмодзи.`;
const generateLimiter = rateLimit({
windowMs: 30 * 1000, // 30 секунд
max: 1, // лимит: 1 запрос на IP
handler: function (req, res) {
return res.status(429).json({
error: "Слишком много запросов с этого IP, пожалуйста, попробуйте позже. (Лимит 1 генерация в 30 секунд)"
});
}
});
app.post('/generate', generateLimiter, 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/chat/completions', {
messages: [{'role': 'system', 'content': start}, {'role': 'user', 'content': prompt}],
max_tokens: 2000,
model: "gpt-3.5-turbo",
}, {
headers: {
'Authorization': `Bearer ${openai_key}`,
'Content-Type': 'application/json',
},
});
if (response.data.choices && response.data.choices.length > 0 && response.data.choices[0].message) {
const content = response.data.choices[0].message.content.trim();
console.log(content);
res.json({ content });
} else {
res.status(500).json({ error: 'OpenAI не вернул ожидаемых данных.' });
}
} catch (error) {
console.error(error);
res.status(500).json({ error: 'Произошла ошибка сервера при генерации.' });
}
});
const port = 7860;
app.listen(port, () => {
console.log(`API сервер запущен на порту ${port}`);
}); |