muryshev commited on
Commit
cb60f6b
·
1 Parent(s): 06c8cb5

added getprojectinfo

Browse files
Files changed (1) hide show
  1. app.py +174 -6
app.py CHANGED
@@ -3,6 +3,7 @@ from huggingface_hub import InferenceClient
3
  from flask_cors import CORS
4
  import json
5
  import requests
 
6
 
7
  client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")
8
 
@@ -37,12 +38,13 @@ def split_text(text):
37
 
38
  def call_api(prompt_text):
39
  url = "https://muryshev-mixtral-api-local.hf.space/completion"
40
- payload = {"prompt": prompt_text}
41
 
42
  try:
43
  response = requests.post(url, json=payload)
44
  response.raise_for_status() # Raise an exception for 4xx or 5xx status codes
45
- result = response.text # Extract the text result from the JSON response
 
46
  return result
47
  except requests.exceptions.RequestException as e:
48
  print("Error:", e)
@@ -111,7 +113,7 @@ def cleantext_route():
111
  data = request.get_json()
112
  text = data.get('text', '')
113
 
114
- summary_prompt = f'''<s>[INST]Ты ассистент. Отвечаешь на русском языке. Сформируй краткое изложение следующего текста: {text}[/INST]'''
115
  response = generate(summary_prompt[:52000])
116
 
117
  return jsonify({'result': response})
@@ -121,7 +123,7 @@ def getfollowup_route():
121
  data = request.get_json()
122
  text = data.get('text', '')
123
 
124
- summary_prompt = f'''<s>[INST]выпиши списком обсуждаемые темы, и у каждой темы сделай подпунктами обсуждаемые вопросы, пиши только на русском языке: {text}[/INST]'''
125
  response = generate(summary_prompt[:52000])
126
 
127
  return jsonify({'result': response})
@@ -131,7 +133,7 @@ def getagenda_route():
131
  data = request.get_json()
132
  text = data.get('text', '')
133
 
134
- summary_prompt = f'''<s>[INST]выпиши из текста в виде списка какие задачи были поставлены в разрезе по исполнителям и с указанием сроков: {text}[/INST]'''
135
  response = generate(summary_prompt[:52000])
136
 
137
  return jsonify({'result': response})
@@ -141,10 +143,176 @@ def gethighlights_route():
141
  data = request.get_json()
142
  text = data.get('text', '')
143
 
144
- summary_prompt = f'''<s>[INST]выпиши из текста в виде двух списков 1. какие проблемы были озвучены 2. какие предложения были сформулированы: {text}[/INST]'''
145
  response = generate(summary_prompt[:52000])
146
 
147
  return jsonify({'result': response})
148
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
149
  if __name__ == '__main__':
150
  app.run(debug=False, host='0.0.0.0', port=7860)
 
3
  from flask_cors import CORS
4
  import json
5
  import requests
6
+ import re
7
 
8
  client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")
9
 
 
38
 
39
  def call_api(prompt_text):
40
  url = "https://muryshev-mixtral-api-local.hf.space/completion"
41
+ payload = {"prompt": prompt_text, "temperature": 0, "seed": 42, "repeat_penalty": 1, "top_p": 0.95, "stream": False, "n_predict": 2000}
42
 
43
  try:
44
  response = requests.post(url, json=payload)
45
  response.raise_for_status() # Raise an exception for 4xx or 5xx status codes
46
+ result = response.json().get('content', '') # Extract the text result from the JSON response
47
+ print(result)
48
  return result
49
  except requests.exceptions.RequestException as e:
50
  print("Error:", e)
 
113
  data = request.get_json()
114
  text = data.get('text', '')
115
 
116
+ summary_prompt = f'''<s>[INST]Ты мой помощник. Ты отвечаешь только на русском языке. Сформируй краткое изложение следующего текста: {text}[/INST]'''
117
  response = generate(summary_prompt[:52000])
118
 
119
  return jsonify({'result': response})
 
123
  data = request.get_json()
124
  text = data.get('text', '')
125
 
126
+ summary_prompt = f'''<s>[INST]Ты мой помощник. Ты отвечаешь только на русском языке. Выпиши из текста нумерованным списком обсуждаемые темы и у каждой темы сделай подпунктами обсуждаемые вопросы. Текст: {text}[/INST]'''
127
  response = generate(summary_prompt[:52000])
128
 
129
  return jsonify({'result': response})
 
133
  data = request.get_json()
134
  text = data.get('text', '')
135
 
136
+ summary_prompt = f'''<s>[INST]Ты мой помощник. Ты отвечаешь только на русском языке. Выпиши из текста в виде списка какие задачи были поставлены для конкретных исполнителей с указанием сроков, если это возможно определить. Если задача есть в списке, то не добавляй идентичную. Текст: {text}[/INST]'''
137
  response = generate(summary_prompt[:52000])
138
 
139
  return jsonify({'result': response})
 
143
  data = request.get_json()
144
  text = data.get('text', '')
145
 
146
+ summary_prompt = f'''<s>[INST]Ты мой помощник. Ты отвечаешь только на русском языке. Сформируй на основе текста два нумерованных списка: 1. какие проблемы были озвучены в тексте 2. какие предложения были сформулированы. Текст: {text}[/INST]'''
147
  response = generate(summary_prompt[:52000])
148
 
149
  return jsonify({'result': response})
150
 
151
+
152
+ @app.route('/getprojectinfo', methods=['POST'])
153
+ def getprojectinfo_route():
154
+ data = request.get_json()
155
+ text = data.get('text', '')
156
+
157
+ main_prompts = []
158
+ prompt1 = (f'Ты всегда отвечаешь на РУССКОМ языке.+\
159
+ Представь, что ты лучший в мире смысловик и копирайтер. +\
160
+ Сделай глубокий вдох и, думая шаг за шагом, выполни задание:+\
161
+ Идентифицируй участников в этом скрипте. Кто говорил во время совещания? +\
162
+ Формат ответа: "Участники: *здесь ФИО говорящих из текста*". Если имя говорящего не ��казано, то ты тоже его НЕ указываешь. +\
163
+ Ты больше ничего не говоришь, не комментируешь, не выражаешь свои мысли, вообще ничего больше не говоришь. Отвечай на русском языке. +\
164
+ Скрипт: {text}')
165
+
166
+ prompt2 = (f'Ты всегда отвечаешь на РУССКОМ языке.+\
167
+ Представь, что ты лучший в мире смысловик и копирайтер. +\
168
+ Сделай глубокий вдох и, думая шаг за шагом, выполни задание:+\
169
+ Каков ход совещания в этом тексте?+\
170
+ Формат ответа: "Повестка встречи: *здесь текст*".+\
171
+ Ты больше ничего не говоришь, не комментируешь, не выражаешь свои мысли, вообще ничего больше не говоришь. Отвечай на русском языке. +\
172
+ Скрипт: {text}')
173
+ main_prompts.append(prompt1)
174
+ main_prompts.append(prompt2)
175
+
176
+ main_info =''
177
+ for i in main_prompts:
178
+ result = generate(i[:52000])
179
+ main_info += result
180
+
181
+ proj_prompt = []
182
+ prompt = (f'Вы отвечаете только на РУССКОМ языке.+\
183
+ 1. Найти все упоминания слов "проект" или "проекты" в тексте.+\
184
+ 2. Прочитать контекст вокруг упоминаний слова "проект" или "проекты" и определить, какие проекты упоминаются.+\
185
+ 3. Составить список названий проектов, которые были найдены в тексте.+\
186
+ Используй только такой формат ответа: "Проект №: *суть кратко*". Конец ответа.+\
187
+ Ты больше ничего не говоришь, не комментируешь, не добавляешь.+\
188
+ Текст: {text}')
189
+ proj_prompt.append(prompt)
190
+
191
+ list_of_projects =''
192
+ for i in proj_prompt:
193
+ result = generate(i[:52000])
194
+ list_of_projects += result
195
+
196
+ delimiter = 'Проект '
197
+ proj = [delimiter+x for x in list_of_projects.split(delimiter) if x]
198
+ proj = proj[1:]
199
+
200
+ proj_ = []
201
+ for i in proj:
202
+ a = i.replace("Проект №", "")
203
+ a = a.replace("Конец ответа", "")
204
+ a = a.replace("данный проект", "") ###убираю слово "проект", чтобы модель не опиралась на него,
205
+ a = a.replace("проект ", "") # при ответе на вопрос, проект это или нет
206
+ a = a.replace('\n', ' ')
207
+ a = a.replace('</s>', ' ')
208
+ a = a.strip()
209
+ proj_.append(a)
210
+
211
+ check_prompts = []
212
+
213
+ checking = (f'Ты всегда отвечаешь на РУССКОМ языке. Сделай глубокий вдох и, думая шаг за шагом, выполни задание:+\
214
+ У меня есть список проектов. Такие проекты имеются в тексте и являются основными? Список проектов: {proj_}. +\
215
+ Ты обязательно используешь ТОЛЬКО такой формат ответа:+\
216
+ "Да: Проект № *название проекта*." ИЛИ "Нет, такого проекта нет". +\
217
+ Ты больше ничего не говоришь, не комментируешь, не добавляешь.+\
218
+ Текст: {text}')
219
+ check_prompts.append(checking)
220
+
221
+ real_projects = ''
222
+ for i in check_prompts:
223
+ result = generate(i[:52000])
224
+ real_projects += result
225
+
226
+ real_projects_list = re.findall(r'Да:\s*(.*?)\s*(?:\n\n|$)', real_projects)
227
+ prepared_prompts = []
228
+ if real_projects_list:
229
+ for i in real_projects_list:
230
+ prompt_aim = (f'Ты всегда отвечаешь на РУССКОМ языке. Представь, что ты лучший в мире смысловик и копирайтер. +\
231
+ Сделай глубокий вдох и, думая шаг за шагом, выполни задание:+\
232
+ Опираясь на данный текст, определи цель ЭТОГО проекта: {i}. Выбирай и анализируй информацию только об ЭТОМ проекте. +\
233
+ Формат ответа: "Проект: *название проекта*. Цель этого проекта: *здесь текст*".+\
234
+ Ты больше ничего не говоришь, не комментируешь, не выражаешь свои мысли, вообще ничего больше не говоришь. Отвечай на русском языке. +\
235
+ Текст: {text}')
236
+ gk = (f'Ты всегда отвечаешь на РУССКОМ языке. Представь, что ты лучший в мире смысловик и копирайтер. +\
237
+ Сделай глубокий вдох и, думая шаг за шагом, ответь на вопрос: Какие преимущества (выгоду) получит группа компаний по итогам этого проекта: {i}.+\
238
+ Формат ответа: "По факту реализации проекта Группа Компаний Получит: *здесь текст*".+\
239
+ Ты больше ничего не говоришь, не комментируешь, не выражаешь свои мысли, вообще ничего больше не говоришь. Отвечай на русском языке. +\
240
+ Скрипт: {text}')
241
+ budget = (f'Ты всегда отвечаешь на РУССКОМ языке. +\
242
+ Найди в тексте информацию о бюджете этого проекта: {i} . +\
243
+ Формат ответа: "Бюджет проекта: *здесь цифра*". Если бюджет проекта не указан, то отвечай так: "Такой информации нет."+\
244
+ Ты больше ничего не говоришь, не комментируешь, не выражаешь свои мысли, вообще ничего больше не говоришь. Отвечай на русском языке. +\
245
+ Скрипт: {text}')
246
+ ec_ef = (f'Ты всегда отвечаешь на РУССКОМ языке. +\
247
+ Поразмышляй об этом тексте. Как ты думаешь, в чем заключается экономический эффект (экономические преимущества) для компании от этого проекта: {i}. Выбирай и анализируй информацию только об ЭТОМ проекте. +\
248
+ Формат ответа: "Экономический эффект от проекта: *здесь ответ на вопрос*".+\
249
+ Ты больше ничего не говоришь, не комментируешь, не выражаешь свои мысли, вообще ничего больше не говоришь. Отвечай на русском языке. +\
250
+ Скрипт: {text}')
251
+ deadline = (f'Ты всегда отвечаешь на РУССКОМ языке. +\
252
+ Найди в тексте дату, когда должен быть реализован ЭТОТ проект: {i}. Выбирай и анализируй информацию только об ЭТОМ проекте: {i}.+\
253
+ Формат ответа: "Срок реализации: *здесь текст*".+\
254
+ Ты больше ничего не говоришь, не комментируешь, не выражаешь свои мысли, вообще ничего больше не говоришь. Отвечай на русском языке. +\
255
+ Скрипт: {text}')
256
+ new_plan = (f'Ты всегда отвечаешь на РУССКОМ языке! Только на русском языке. Выбирай и анализируй информацию на русском языке только об ЭТОМ проекте: {i} .+\
257
+ Представь, что ты лучший в мире смысловик и копирайтер. +\
258
+ Сделай глубокий вдох и, думая шаг за шагом, ответь на русском языке на вопрос: Какие действия участники решили предпринять, чтобы отлично выполнить проект?+\
259
+ Используй такой формат ответа: "Решения: *тест*". Ищи ответ в тексте: {text}. Отвечай на русском языке!!! ')
260
+ conclusion = (f'Ты всегда отвечаешь на РУССКОМ языке. Поразмышляй о тексте.+\
261
+ Какой вывод заключили участники относительно ЭТОГО проекта: {i}.+\
262
+ Используй такой формат ответа: "Вывод: *Тут описывается принятое решение.*." Конец ответа.+\
263
+ Текст: {text}')
264
+ p = [prompt_aim, gk, budget, ec_ef, deadline, new_plan, conclusion]
265
+ prepared_prompts.extend(p)
266
+ elif not real_projects_list or len(real_projects_list) == 1:
267
+ prompt_aim = (f'Ты всегда отвечаешь на РУССКОМ языке. Поразмышляй об этом тексте.+\
268
+ Определи основную цель проекта из текста.+\
269
+ Формат ответа: "Цель проекта: *здесь текст*".+\
270
+ Ты больше ничего не говоришь, не комментируешь, не выражаешь свои мысли, вообще ничего больше не говоришь. Отвечай на русском языке. +\
271
+ Текст: {text}')
272
+
273
+ gk = (f'Ты всегда отвечаешь на РУССКОМ языке.+\
274
+ Формат ответа: "По факту реализации проекта Группа Компаний Получит: *здесь текст*".+\
275
+ Ты больше ничего не говоришь, не комментируешь, не выражаешь свои мысли, вообще ничего больше не говоришь. Отвечай на русском языке. +\
276
+ Скрипт: {text}')
277
+
278
+ budget = (f'Ты всегда отвечаешь на РУССКОМ языке. +\
279
+ Найди в тексте информацию о бюджете проекта.+\
280
+ Формат ответа: "Бюджет проекта: *здесь цифра*". Если бюджет проекта не указан, то отвечай так: "Такой информации нет."+\
281
+ Ты больше ничего не говоришь, не комментируешь, не выражаешь свои мысли, вообще ничего больше не говоришь. Отвечай на русском языке. +\
282
+ Скрипт: {text}')
283
+
284
+ ec_ef = (f'Ты всегда отвечаешь на РУССКОМ языке. +\
285
+ Поразмышляй об этом тексте. Как ты думаешь, в чем заключается экономический эффект для компании от проектов, которые обсуждают в тексте?+\
286
+ Формат ответа: "Экономический эффект от проекта: *здесь ответ на вопрос*".+\
287
+ Ты больше ничего не говоришь, не комментируешь, не выражаешь свои мысли, вообще ничего больше не говоришь. Отвечай на русском языке. +\
288
+ Скрипт: {text}')
289
+
290
+ deadline = (f'Ты всегда отвечаешь на РУССКОМ языке. +\
291
+ Найди в тексте дату, когда должен быть реализован проект. +\
292
+ Формат ответа: "Срок реализации: *здесь текст*".+\
293
+ Ты больше ничего не говоришь, не комментируешь, не выражаешь свои мысли, вообще ничего больше не говоришь. Отвечай на русском языке. +\
294
+ Скрипт: {text}')
295
+ new_plan = (f'Ты всегда отвечаешь на РУССКОМ языке! Только на русском языке.+\
296
+ Представь, что ты лучший в мире смысловик и копирайтер. +\
297
+ Сделай глубокий вдох и, думая шаг за шагом, ответь на русском языке на вопрос: Какие действия участники решили предпринять, чтобы отлично выполнить проект?+\
298
+ Используй такой формат ответа: "Решения: *тест*". Ищи ответ в тексте: {text}. Отвечай на русском языке!!! ')
299
+ conclusion = (f'Ты всегда отвечаешь на РУССКОМ языке. Поразмышляй о тексте.+\
300
+ Какой вывод заключили участники относительно ЭТОГО проекта: {i}.+\
301
+ Используй такой формат ответа: "Вывод: *Тут описывается принятое решение.*." Конец ответа.+\
302
+ Текст: {text}')
303
+ p = [prompt_aim, gk, budget, ec_ef, deadline, new_plan, conclusion]
304
+ prepared_prompts.extend(p)
305
+
306
+ final = ''
307
+ for i in prepared_prompts:
308
+ result = generate(i[:52000])
309
+ final += result
310
+ final = main_info + final
311
+ final = final.replace("Конец ответа", "")
312
+ final = final.replace('\n', ' ')
313
+ final = final.replace('</s>', ' ')
314
+ final = final.strip()
315
+ return jsonify({'result': final})
316
+
317
  if __name__ == '__main__':
318
  app.run(debug=False, host='0.0.0.0', port=7860)