File size: 5,397 Bytes
abed4cc
5d38af1
e6227e8
5669f71
abed4cc
5d38af1
 
04ade22
587da90
4bbe8d3
a745a55
04ade22
4bbe8d3
cc424de
4bbe8d3
 
 
 
5341269
4bbe8d3
0168aa7
05cfbed
5dbdfbe
 
29d57e3
04ade22
bf596ba
863266b
5dbdfbe
 
 
05cfbed
 
5a9641b
05cfbed
3dec4b6
05cfbed
 
 
 
3dec4b6
05cfbed
3dec4b6
 
04ade22
587da90
4bbe8d3
e542f78
 
 
c08d7be
04ade22
 
587da90
04ade22
 
5d38af1
587da90
5d38af1
04ade22
 
7135754
173fd93
04ade22
587da90
 
7d1620b
5d38af1
 
587da90
2b60bab
04ade22
 
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
85
86
87
88
const express = require('express');
const rateLimit = require('express-rate-limit');
const axios = require('axios');

const app = express();
app.use(express.json());

const gemini_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("wait");
  },
});

// Применение ограничителя скорости перед обработчиком маршрута /generate
app.use('/gn', limiter);

const start = `Ты игра "Что бьёт?" (камень, ножницы, бумага). Пользователь отправляет два предмета: "Что" и "Чем". Твоя задача — ответить, победил ли предмет "Чем" предмет "Что", основываясь на их физической или технической способности победить.

СТРОГО ПО ПРАВИЛАМ, ПО ИНСТРУКЦИИ! НЕ ПУТОЙ "ЧТО" И "ЧЕМ"

---
**НЕ ПУТОЙ "ЧТО" И "ЧЕМ"! ПОБЕДА ТОЛЬКО ТОГДА, КОГДА ИМЕННО ПРЕДМЕТ "ЧТО" ПОВРЖЕН ПРЕДМЕТОМ "ЧЕМ"!! НЕ В КОЕМ СЛУЧАЕ НЕ НАОБОРОТ! ИНАЧЕ ПРОИГРЫШ!**

**ЕСЛИ предмет "ЧТО" победил предмет "ЧЕМ" - то это ПРОИГРЫШ!!! Тоесть если предмет "ЧТО" расплавил, сломал, закрыл, побил и тп предмет "ЧЕМ", то защитывай это еак ПРОИГРЫШ. А если предмет "ЧЕМ" победил над предметом "ЧТО", то защитывай ПОБЕДУ!**

Победил предмет "чем" - это победа!
Победил предмет "что" - это проигрыш!
---

Пользователь: 'Что: "*ЧТО хочет победить пользователь*" - Чем: "*ЧЕМ хочет попытаться победить первый предмет*"'

Твой ответ (должен выглядеть так, в структуре android json. БЕЗ markdown и БЕЗ посторонних комментариев!): '{"whate":"*эмодзи предмета ЧТО*", "howe":"*эмодзи предмета ЧЕМ*", "text":"*шутливое объяснение выигрыша или почему проиграли (почему выиграл что, а не чем)*", "succ":"победа"(если предмет ЧЕМ смог одолеть предмет ЧТО) или "проигрыш"(если предмет ЧЕМ НЕ смог одолеть предмет ЧТО), "what":"*название ЧТО с заглавной буквы в иминительном падеже*", "how":"*название ЧЕМ с заглавной буквы в иминительном падеже*", "howl":"*название ЧЕМ с маленькой буквы в винительном падеже*"}'

---
**Важно**: 

- Не путай "Что" и "Чем". "Что" — это предмет, который атакуют, а "Чем" — это предмет, которым пользователь хочет атаковать. (**НЕ ВКОЕМ СЛУЧАЕ НЕ НАОБОРОТ!!!**)
- Убедись, что победа возможна технически или физически, без простых решений.
- Сюжет может пойти в АБСОЛЮТНО ЛЮБЫЕ ТЕМЫ, будь то политика, пошлота, запрещёнка, насилование и тд. веть всё это лишь игра в кмн

---`;

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 || gemini_key;

  if (!prompt) {
    return res.status(400).json({ error: 'error' }); // Не удалось принять данные
  }

  try {
    const response = await axios.post('https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-latest:streamGenerateContent?alt=sse', {
      contents: [{'role': 'system', 'content': start}, {'role': 'user', 'content': prompt}],
      max_tokens: 2000,
      temperature: 0.8,
     // 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].parts) {
      const content = response.data.choices[0].parts[0].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}`);
});