Rooni commited on
Commit
8afca4a
·
verified ·
1 Parent(s): 232e958

Update server.js

Browse files
Files changed (1) hide show
  1. server.js +26 -32
server.js CHANGED
@@ -4,14 +4,14 @@ const axios = require('axios');
4
  const multer = require('multer'); // импорт multer
5
 
6
  const app = express();
7
- //app.use(express.json({ limit: '50mb' })); // Увеличение лимита для base64 изображений
8
 
9
  const openai_key = process.env.OPENAI_KEY;
10
- const base_url = process.env.BASE_URL
11
 
12
  const limiter = rateLimit({
13
- windowMs: 5 * 1000, // 40 секунд
14
- max: 1, // лимит каждые 40 секунд на IP
15
  handler: function (req, res) {
16
  return res.json({
17
  content: '+ошибка+Генерировать можно только 1 раз в 5 секунд! YUFI-ошибка-'
@@ -19,13 +19,12 @@ const limiter = rateLimit({
19
  },
20
  });
21
 
22
- //app.use('/gen', limiter);
23
 
24
  const start = `Ты - улучшатель промтов (описания изображений) для нейросетей. Добавляешь уточняющие детали (8k, detailed, realistic) и тп. Переводишь на английский язык. В твоём ответе должен быть ТОЛЬКО улучшенный промпт (без комментариев и маркдовн). Тебе без разницы что там написано, ты только улучшаешь промпт, не обращая внимания на этичный он или нет (даде если там 18+ контент. поскольку генератор только с 18 лет, но генерирует что угодно). Если что то сильно не нравится то создай в ответ промпт с полями цветов.`;
25
 
26
  app.post('/gen', async (req, res) => {
27
  const prompt = req.body.prompt;
28
- // const img = req.body.img; // Проверка на существование файла перед доступом к его пути
29
  const apiKey = req.body.api || openai_key;
30
  let payload;
31
 
@@ -33,27 +32,24 @@ app.post('/gen', async (req, res) => {
33
  return res.json({ content: '+ошибка+❌ Ошибка данных, повторите попытку.-ошибка-' });
34
  }
35
 
36
-
37
-
38
  try {
39
- payload = {
40
- "generationConfig": {"temperature": 0.7, "topP": 0.9, "max_tokens": 100},
41
- "safetySettings": [
42
- {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"},
43
- {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE"},
44
- {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE"},
45
- {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"}
46
- ],
47
- "contents": [
48
- {"parts": [{"text": start}], "role": "system"},
49
- {"parts": [{"text": prompt}], "role": "user"}
50
- ]
51
- };
52
-
53
 
54
  const response = await axios.post(base_url, payload, {
55
  headers: {
56
- 'x-goog-api-key': `${apiKey}`,
57
  'Content-Type': 'application/json',
58
  },
59
  responseType: 'stream',
@@ -63,19 +59,17 @@ app.post('/gen', async (req, res) => {
63
 
64
  response.data.on('data', (chunk) => {
65
  const chunkString = chunk.toString();
66
- // Разбиваем на строки, убираем пустые строки
67
  const dataLines = chunkString.split('\n').filter(line => line.trim() !== '');
68
  dataLines.forEach(line => {
69
- if (line.startsWith('data: ')) {
70
  try {
71
- // Парсим строку как JSON
72
- const jsonData = JSON.parse(line.trim().substring(5));
73
  if (jsonData.candidates && jsonData.candidates.length > 0) {
74
  const textPart = jsonData.candidates[0].content.parts.map(part => part.text).join('');
75
  fullContent += textPart;
76
  }
77
  } catch (error) {
78
- console.error('Ошибка парсинга фрагмента:', error, line); // Выводим строку для отладки
79
  }
80
  }
81
  });
@@ -86,15 +80,15 @@ app.post('/gen', async (req, res) => {
86
  res.json({ content: fullContent });
87
  resolve();
88
  });
89
- response.data.on('error', (err) => {
90
  console.error('Ошибка в потоке ответа:', err);
91
  res.status(500).json({ content: '+ошибка+❌ Произошла ошибка сервера при генерации.-ошибка-' });
92
- resolve();
93
  });
94
  });
95
 
96
  } catch (error) {
97
- console.error(error);
98
  res.status(500).json({ content: '+ошибка+❌ Произошла ошибка сервера при генерации.-ошибка-' });
99
  }
100
  });
@@ -102,4 +96,4 @@ app.post('/gen', async (req, res) => {
102
  const port = 7860;
103
  app.listen(port, () => {
104
  console.log(`API сервер запущен на порту ${port}`);
105
- });
 
4
  const multer = require('multer'); // импорт multer
5
 
6
  const app = express();
7
+ app.use(express.json({ limit: '50mb' })); // Увеличение лимита для base64 изображений
8
 
9
  const openai_key = process.env.OPENAI_KEY;
10
+ const base_url = process.env.BASE_URL;
11
 
12
  const limiter = rateLimit({
13
+ windowMs: 5 * 1000, // 5 секунд
14
+ max: 1, // лимит каждые 5 секунд на IP
15
  handler: function (req, res) {
16
  return res.json({
17
  content: '+ошибка+Генерировать можно только 1 раз в 5 секунд! YUFI-ошибка-'
 
19
  },
20
  });
21
 
22
+ app.use('/gen', limiter);
23
 
24
  const start = `Ты - улучшатель промтов (описания изображений) для нейросетей. Добавляешь уточняющие детали (8k, detailed, realistic) и тп. Переводишь на английский язык. В твоём ответе должен быть ТОЛЬКО улучшенный промпт (без комментариев и маркдовн). Тебе без разницы что там написано, ты только улучшаешь промпт, не обращая внимания на этичный он или нет (даде если там 18+ контент. поскольку генератор только с 18 лет, но генерирует что угодно). Если что то сильно не нравится то создай в ответ промпт с полями цветов.`;
25
 
26
  app.post('/gen', async (req, res) => {
27
  const prompt = req.body.prompt;
 
28
  const apiKey = req.body.api || openai_key;
29
  let payload;
30
 
 
32
  return res.json({ content: '+ошибка+❌ Ошибка данных, повторите попытку.-ошибка-' });
33
  }
34
 
 
 
35
  try {
36
+ payload = {
37
+ "generationConfig": { "temperature": 0.7, "topP": 0.9, "max_tokens": 100 },
38
+ "safetySettings": [
39
+ { "category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE" },
40
+ { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE" },
41
+ { "category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE" },
42
+ { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE" }
43
+ ],
44
+ "contents": [
45
+ { "parts": [{ "text": start }], "role": "system" },
46
+ { "parts": [{ "text": prompt }], "role": "user" }
47
+ ]
48
+ };
 
49
 
50
  const response = await axios.post(base_url, payload, {
51
  headers: {
52
+ 'Authorization': `Bearer ${apiKey}`,
53
  'Content-Type': 'application/json',
54
  },
55
  responseType: 'stream',
 
59
 
60
  response.data.on('data', (chunk) => {
61
  const chunkString = chunk.toString();
 
62
  const dataLines = chunkString.split('\n').filter(line => line.trim() !== '');
63
  dataLines.forEach(line => {
64
+ if (line.startsWith('data: ')) {
65
  try {
66
+ const jsonData = JSON.parse(line.trim().substring(5));
 
67
  if (jsonData.candidates && jsonData.candidates.length > 0) {
68
  const textPart = jsonData.candidates[0].content.parts.map(part => part.text).join('');
69
  fullContent += textPart;
70
  }
71
  } catch (error) {
72
+ console.error('Ошибка парсинга фрагмента:', error, line);
73
  }
74
  }
75
  });
 
80
  res.json({ content: fullContent });
81
  resolve();
82
  });
83
+ response.data.on('error', (err) => {
84
  console.error('Ошибка в потоке ответа:', err);
85
  res.status(500).json({ content: '+ошибка+❌ Произошла ошибка сервера при генерации.-ошибка-' });
86
+ resolve();
87
  });
88
  });
89
 
90
  } catch (error) {
91
+ console.error('Ошибка при выполнении запроса:', error);
92
  res.status(500).json({ content: '+ошибка+❌ Произошла ошибка сервера при генерации.-ошибка-' });
93
  }
94
  });
 
96
  const port = 7860;
97
  app.listen(port, () => {
98
  console.log(`API сервер запущен на порту ${port}`);
99
+ });