File size: 6,874 Bytes
abed4cc 5d38af1 e6227e8 5669f71 abed4cc 5d38af1 587da90 4bbe8d3 a745a55 4bbe8d3 6f58278 4bbe8d3 5341269 4bbe8d3 93eb76e ebe5f43 3acf4ab dcc5f27 93eb76e 399eab9 d12a961 488536d 93eb76e 6f58278 3acf4ab 587da90 4bbe8d3 e542f78 c08d7be 5d38af1 7d1620b 587da90 5d38af1 11adeac 5d38af1 587da90 5d38af1 a726a71 2b60bab 7135754 d81d2ed a726a71 587da90 7d1620b 5d38af1 587da90 2b60bab c08d7be 2b60bab 587da90 5d38af1 c08d7be 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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
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 раз в 5 секунд!-ошибка-'
});
},
});
// Применение ограничителя скорости перед обработчиком маршрута /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.8,
presence_penalty: 0.0,
frequency_penalty: -0.5,
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}`);
}); |