Rooni commited on
Commit
289e552
·
verified ·
1 Parent(s): 90a7941

Update server.js

Browse files
Files changed (1) hide show
  1. server.js +35 -75
server.js CHANGED
@@ -1,86 +1,46 @@
1
  const express = require('express');
2
- const rateLimit = require('express-rate-limit');
3
- const axios = require('axios');
4
 
5
  const app = express();
6
- app.use(express.json());
7
 
8
- const openai_key = process.env.OPENAI_KEY;
 
9
 
10
- const limiter = rateLimit({
11
- windowMs: 45 * 1000, // 30 секунд
12
- max: 1, // лимит каждые 30 секунд на IP
13
- handler: function (req, res) {
14
- return res.status(429).json({
15
- content: '+ошибка+Генерировать рецепт можно 1 раз в 45 секунд!-ошибка-'
16
- });
17
- },
18
- });
19
-
20
- // Применение ограничителя скорости перед обработчиком маршрута /generate
21
- app.use('/gn', limiter);
22
-
23
- const start = `Ты генератор рецептов. В этом чате, тебе будут присылать названия блюд или описывать их или присылать название категории, а ты должен будешь написать идеальный, понятный, подробный, лёгкий или сложный рецепт со всеми пропорциями, количествами и этапами готовки (этапы готовки должны быть разделены, например *1.1.*, *1.2.*, *2.1.*, *2.2.* (Обязательно со звёздочками, это жирный шрифт) С эмодзи.
24
-
25
- ! Не в коем случае не пиши опасные (например рыба фугу), требующие лицнзии и т.д. рецепты! Только нормальные, правильные и хорошие!
26
 
27
- Ответ должен выглядить ТОЛЬКО так (чтобы потом regexp доставал из него текст):
28
-
29
- "+название+Название рецепта, блюда-название-
30
- +время+Примерное время готовки (только время, например: "40 минут", "2 часа" и т.д.)-время-
31
- +кат+Категория: На каждый день, Основные блюда, Супы, Десерты и выпечка, Салаты, Несладкая выпечка, Завтраки, Закуски, Напитки, Ресторанные-кат-
32
- +ингр+Ингридиенты: В именительном падеже - то есть например: "Яйцо -
33
- 2 штуки", а не "2 яйца"; Здесь обязательно заменяй ВСЕ новые строки ("
34
- ") на "_÷_"-ингр-
35
- +рец+Рецепт; Здесь обязательно заменяй ВСЕ новые строки ("
36
- ") на "_÷_"-рец-"
37
- Если ты не можешь сгенерировать такой рецепт, то напиши так:
38
- "+ошибка+Причина-ошибка-"
39
-
40
- +название+...-название- и другие, это почти как html теги (<div>...</div>)`;
41
-
42
- app.post('/generate', async (req, res) => {
43
- res.status(500).json({ content: '+ошибка+❗ Вы используете устаревшую версию АромаАрт. Установите версию 1.3.1 и более.-ошибка-' });
44
- });
45
-
46
- app.post('/gen', async (req, res) => {
47
- res.status(500).json({ content: '+ошибка+❗ Пока что данный инструмент не работает! И на этой версии он работать больше не будет. Ждите обновление! 😊-ошибка-' });
48
- });
49
-
50
- app.post('/gn', async (req, res) => {
51
- const prompt = req.body.prompt;
52
- const apiKey = req.body.api || openai_key;
53
-
54
- if (!prompt) {
55
- return res.status(400).json({ error: '❌ Ошибка данных, повторите попытку.' });
56
- }
57
-
58
- try {
59
- const response = await axios.post('https://geminiyufi.vercel.app/v1/chat/completions', {
60
- messages: [{'role': 'system', 'content': start}, {'role': 'user', 'content': prompt}],
61
- max_tokens: 2000,
62
- model: "gemini-1.5-pro-latest",
63
- }, {
64
- headers: {
65
- 'Authorization': `Bearer ${apiKey}`,
66
- 'Content-Type': 'application/json',
67
- },
68
- });
69
 
70
- if (response.data.choices && response.data.choices.length > 0 && response.data.choices[0].message) {
71
- const content = response.data.choices[0].message.content.trim();
72
- console.log(content);
73
- res.json({ content });
74
- } else {
75
- res.status(500).json({ content: '❌ Не удалось прочитать рецепт.' });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  }
77
- } catch (error) {
78
- console.error(error);
79
- res.status(500).json({ content: '❌ Произошла ошибка сервера при генерации.' });
80
- }
81
  });
82
 
83
- const port = 7860;
84
  app.listen(port, () => {
85
- console.log(`API сервер запущен на порту ${port}`);
86
- });
 
1
  const express = require('express');
2
+ const fetch = require('node-fetch');
3
+ const bodyParser = require('body-parser');
4
 
5
  const app = express();
6
+ const port = 3000;
7
 
8
+ // Используем body-parser для обработки JSON данных
9
+ app.use(bodyParser.json());
10
 
11
+ app.post('/generate-image', async (req, res) => {
12
+ const { prompt } = req.body;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
+ if (!prompt) {
15
+ return res.status(400).send('Missing "prompt" in request body');
16
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
 
18
+ try {
19
+ const response = await fetch('https://api-inference.huggingface.co/models/your-model-name', {
20
+ method: 'POST',
21
+ headers: {
22
+ 'Authorization': `Bearer ${process.env.KEY}`,
23
+ 'Content-Type': 'application/json'
24
+ },
25
+ body: JSON.stringify({
26
+ inputs: prompt
27
+ })
28
+ });
29
+
30
+ if (!response.ok) {
31
+ throw new Error(`Error from Hugging Face API: ${response.statusText}`);
32
+ }
33
+
34
+ const imageBuffer = await response.buffer();
35
+ const base64Image = imageBuffer.toString('base64');
36
+
37
+ res.json({ image: base64Image });
38
+ } catch (error) {
39
+ console.error('Error generating image:', error);
40
+ res.status(500).send('Error generating image');
41
  }
 
 
 
 
42
  });
43
 
 
44
  app.listen(port, () => {
45
+ console.log(`Server is running on http://localhost:${port}`);
46
+ });