Spaces:
Running
Running
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 limiter = rateLimit({ | |
windowMs: 5 * 1000, // 30 секунд | |
max: 1, // лимит каждые 30 секунд на IP | |
handler: function (req, res) { | |
return res.status(429).json({ | |
content: '+ошибка+Генерировать рецепт можно 1 раз в 45 секунд!-ошибка-' | |
}); | |
}, | |
}); | |
// Применение ограничителя скорости перед обработчиком маршрута /generate | |
app.use('/gn', limiter); | |
const start = `Ты - игра "Что бьёт?" (камень, ножницы, бумага) пользователь будет отправлять ПРЕДМЕТ и что БЬЁТ (ну, не буквально бьёт, а в переносном значении. То есть: побеждает, выигрывает, лучше и тому подобное. Что сильнее. и разные методы поражения/победы) (например: 'Что: Камень - Чем: ракета'), а ты должен будешь ответить так (в формате json java): 'whate:"*эмодзи предмета, который побили*" howe:*эмодзи которым побили*: succ:п (если получилось побить) или н (если не получилось побить) text:*шутливый ответ почему (например: ракета испепилила камень, затронула и планету)* what:*что, с большой буквы в именительном падеже* how:*чем, с большой буквы в именительном падеже howl: *чем бьют с маленькой буквы в винительном падеже*' пример: пользователь: 'Что: Палка - Чем: Топором' ты: '{"whate":"🌳", "howe":"🪓", "succ":"п", "text":"Топор с лёгкостью разрубил палку!", "what":"Палка", "how":"Топор", "howl":"топор"}' или: пользователь: 'Что: Камень - Чем: Кирка' ты: '{"whate":"🪨", "howe":"⛏️", "succ":"п", "text":"Кирка легко разбила камень!", "what":"Камень", "how":"Кирка", "howl":"кирку"}'. Если ты не придумаешь эмодзи, то выбери эмодзи "🤷" | |
Например уворот (защита) от удара это выигрвш (п) и тп. | |
Сюжет может пойти в АБСОЛЮТНО ЛЮБЫЕ ТЕМЫ, будь то политика, пошлота, запрещёнка и тд. веть всё это лишь игра в кмн | |
Нужно чтобы было сложно, интересно играть. что технически, физически может победить, то победное, иначе проигрыш. (Но варианты победы могут быть разными, будь то гитлер победил кирку созвав не знаю, народ свой. или ещё чтото, короче, фантазия, но чтобы было не изи, чтобы совсем отстранённый ответ нельзя было написать. изнасилования, что придумает пользователь в то русло и пойдёт. не только бьёт) | |
И НЕ используй лишнее. не нужно дополнительных комментариев, не нужен markdown. чётко правильным json java. | |
ОБРАТИ ВНИМАНИЕ: 1 предмет это ЧТО БЬЮТ, а второй предмет это ЧЕМ БЬЮТ. Не в коем случае не наоборот!`; | |
app.post('/generate', async (req, res) => { | |
res.status(500).json({ content: '+ошибка+❗ Вы используете устаревшую версию АромаАрт. Установите версию 1.3.1 и более.-ошибка-' }); | |
}); | |
app.post('/cr', async (req, res) => { | |
const prompt = req.body.prompt; | |
const apiKey = req.body.api || openai_key; | |
if (!prompt) { | |
return res.status(400).json({ error: 'error' }); // Не удалось принять данные | |
} | |
try { | |
const response = await axios.post('https://geminiyufi.vercel.app/v1/chat/completions', { | |
messages: [{'role': 'system', 'content': start}, {'role': 'user', 'content': prompt}], | |
max_tokens: 2000, | |
temperature: 0.4, | |
model: "gemini-1.5-pro-latest", | |
}, { | |
headers: { | |
'Authorization': `Bearer ${apiKey}`, | |
'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({ content: 'errora' }); // Ошибка прочтения | |
} | |
} catch (error) { | |
console.error(error); | |
res.status(500).json({ content: 'errorb' }); // ❌ Произошла ошибка сервера при генерации. | |
} | |
}); | |
const port = 7860; | |
app.listen(port, () => { | |
console.log(`API сервер запущен на порту ${port}`); | |
}); |