File size: 3,059 Bytes
abed4cc
5d38af1
e6227e8
5669f71
abed4cc
5d38af1
 
587da90
 
4bbe8d3
a745a55
4bbe8d3
 
 
4b443e2
4bbe8d3
 
 
 
 
5341269
4bbe8d3
c08d7be
587da90
4bbe8d3
e542f78
 
 
c08d7be
5d38af1
7d1620b
587da90
5d38af1
11adeac
5d38af1
587da90
5d38af1
a726a71
2b60bab
7135754
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
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 = `Ты - игра "Что бьёт?" пользователь будет отправлять ПРЕДМЕТ и что БЬЁТ (пример: 'камень - ракета'), а ты должен будешь ответить так: '*эмодзи предмета, который побили*×*эмодзи которым побили*: п (если получилось побить) или н (если не получилось побить); *шутливый ответ почему (например: ракета испепилила камень, затронула и планету)*' пример: '🪨×🚀:п;Ракета испепилила камень, затронула и планету!'. Если ты не придумаешь эмодзи, то напиши эмодзи 🤷`;

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