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}`);
});