fruitpicker01 commited on
Commit
b8f348d
·
verified ·
1 Parent(s): 49283a1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -39
app.py CHANGED
@@ -94,6 +94,7 @@ def generate_message_gpt4o(prompt, temperature=1):
94
  except Exception as e:
95
  return f"Ошибка при обращении к ChatGPT-4o-Latest: {e}"
96
 
 
97
  def clean_message(message):
98
  # Если сообщение не заканчивается на точку или восклицательный знак, обрезаем его до последней точки
99
  if not message.endswith(('.', '!', '?')):
@@ -163,43 +164,9 @@ def generate_message_gigachat_plus_with_retry(prompt):
163
  return message
164
  return message
165
 
166
- # Создание классов для каждой модели
167
- class GPT4oModel:
168
- def __init__(self, temperature=1):
169
- self.temperature = temperature
170
-
171
- def generate_message(self, prompt):
172
- return generate_message_gpt4o(prompt, temperature=self.temperature)
173
-
174
- class GigaChatProModel:
175
- def __init__(self, temperature=0.87):
176
- self.temperature = temperature
177
-
178
- def generate_message(self, prompt):
179
- return generate_message_gigachat_pro(prompt, temperature=self.temperature)
180
-
181
- class GigaChatLiteModel:
182
- def __init__(self, temperature=0.87):
183
- self.temperature = temperature
184
-
185
- def generate_message(self, prompt):
186
- return generate_message_gigachat_lite(prompt, temperature=self.temperature)
187
-
188
- class GigaChatPlusModel:
189
- def __init__(self, temperature=0.87):
190
- self.temperature = temperature
191
-
192
- def generate_message(self, prompt):
193
- return generate_message_gigachat_plus(prompt, temperature=self.temperature)
194
 
195
  # Обновляем генерацию сообщений для отображения в интерфейсе
196
- def generate_messages(description, advantages, *selected_values, gpt4o_temp, gigachat_pro_temp, gigachat_lite_temp, gigachat_plus_temp):
197
- # Создаем экземпляры классов с переданными значениями температур
198
- gpt4o_model = GPT4oModel(temperature=gpt4o_temp)
199
- gigachat_pro_model = GigaChatProModel(temperature=gigachat_pro_temp)
200
- gigachat_lite_model = GigaChatLiteModel(temperature=gigachat_lite_temp)
201
- gigachat_plus_model = GigaChatPlusModel(temperature=gigachat_plus_temp)
202
-
203
  standard_prompt = generate_standard_prompt(description, advantages, *selected_values)
204
 
205
  results = {
@@ -212,32 +179,34 @@ def generate_messages(description, advantages, *selected_values, gpt4o_temp, gig
212
 
213
  yield results["prompt"], "", "", "", "", "Генерация стандартного промпта завершена"
214
 
215
- results["gpt4o"] = gpt4o_model.generate_message(standard_prompt)
216
  gpt4o_length = len(results["gpt4o"])
217
  gpt4o_display = f"{results['gpt4o']}\n\n------\nКоличество знаков: {gpt4o_length}"
218
  yield results["prompt"], gpt4o_display, "", "", "", "Сообщение GPT-4o сгенерировано"
219
 
220
- results["gigachat_pro"] = gigachat_pro_model.generate_message(standard_prompt)
221
  gigachat_pro_length = len(results["gigachat_pro"])
222
  gigachat_pro_display = f"{results['gigachat_pro']}\n\n------\nКоличество знаков: {gigachat_pro_length}"
223
  yield results["prompt"], gpt4o_display, gigachat_pro_display, "", "", "Сообщение GigaChat-Pro сгенерировано"
224
 
225
  time.sleep(2)
226
 
227
- results["gigachat_lite"] = gigachat_lite_model.generate_message(standard_prompt)
228
  gigachat_lite_length = len(results["gigachat_lite"])
229
  gigachat_lite_display = f"{results['gigachat_lite']}\n\n------\nКоличество знаков: {gigachat_lite_length}"
230
  yield results["prompt"], gpt4o_display, gigachat_pro_display, gigachat_lite_display, "", "Сообщение GigaChat-Lite сгенерировано"
231
 
232
  time.sleep(2)
233
 
234
- results["gigachat_plus"] = gigachat_plus_model.generate_message(standard_prompt)
235
  gigachat_plus_length = len(results["gigachat_plus"])
236
  gigachat_plus_display = f"{results['gigachat_plus']}\n\n------\nКоличество знаков: {gigachat_plus_length}"
237
  yield results["prompt"], gpt4o_display, gigachat_pro_display, gigachat_lite_display, gigachat_plus_display, "Все сообщения сгенерированы"
238
 
239
  return results
240
 
 
 
241
  # Функция для генерации персонализированного промпта
242
  def generate_personalization_prompt(*selected_values):
243
  prompt = "Адаптируй, не превышая длину сообщения в 250 знаков с пробелами, текст с учетом следующих особенностей:\n"
@@ -282,6 +251,7 @@ def perform_personalization_gigachat_with_retry(standard_message, personalizatio
282
  return message
283
  return message
284
 
 
285
  # Обновляем блок персонализации
286
  def personalize_messages_with_yield(gpt4o_message, gigachat_pro_message, gigachat_lite_message, gigachat_plus_message, *selected_values):
287
  personalization_prompt = generate_personalization_prompt(*selected_values)
@@ -307,6 +277,7 @@ def personalize_messages_with_yield(gpt4o_message, gigachat_pro_message, gigacha
307
  gigachat_plus_display = f"{personalized_message_gigachat_plus}\n\n------\nКоличество знаков: {gigachat_plus_length}"
308
  yield personalization_prompt, gpt4o_display, gigachat_pro_display, gigachat_lite_display, gigachat_plus_display, "Все персонализированные сообщения сгенерированы"
309
 
 
310
  # Функция для генерации промпта проверки текста
311
  def generate_error_check_prompt():
312
  prompt = (
@@ -351,6 +322,7 @@ def generate_error_check_prompt():
351
  )
352
  return prompt
353
 
 
354
  # Функция для выполнения проверки текста с использованием yield
355
  def check_errors_with_yield(*personalized_messages):
356
  if len(personalized_messages) < 4:
@@ -378,6 +350,7 @@ def check_errors_with_yield(*personalized_messages):
378
 
379
  yield error_check_prompt, error_message_gpt4o, error_message_gigachat_pro, error_message_gigachat_lite, error_message_gigachat_plus, "Все результаты проверки сгенерированы"
380
 
 
381
  def save_to_github(personalized_message, model_name, comment, corrected_message, description, advantages, non_personalized_prompt, non_personalized_message, gender, generation, psychotype, business_stage, industry, legal_form, temperature):
382
  # Собираем все данные в один словарь
383
  data_to_save = {
@@ -423,6 +396,7 @@ def save_to_github(personalized_message, model_name, comment, corrected_message,
423
  print(f"Ошибка при загрузке файла на GitHub: {response.status_code}")
424
  print(f"Ответ сервера: {response.json()}")
425
 
 
426
  # Создание интерфейса Gradio
427
  with gr.Blocks() as demo:
428
  gr.Markdown("# Генерация SMS-сообщений по заданным признакам")
@@ -486,6 +460,7 @@ with gr.Blocks() as demo:
486
  outputs=[prompt_display, output_text_gpt4o, output_text_gigachat_pro, output_text_gigachat_lite, output_text_gigachat_plus]
487
  )
488
 
 
489
  with gr.Row():
490
  personalize_btn = gr.Button("2. Выполнить персонализацию (нажимать только после кнопки 1)", elem_id="personalize_button")
491
 
@@ -516,6 +491,7 @@ with gr.Blocks() as demo:
516
  corrected_gigachat_lite = gr.Textbox(label="", lines=3)
517
  corrected_gigachat_plus = gr.Textbox(label="", lines=3)
518
 
 
519
  # Отдельная строка для кнопок с использованием пустой колонки
520
  with gr.Row():
521
  gr.Button("Жми 👍 для сохранения удачного SMS в базу =>")
@@ -613,6 +589,7 @@ with gr.Blocks() as demo:
613
  outputs=None
614
  )
615
 
 
616
  # Использование сохраненных переменных в следующем блоке
617
  with gr.Row():
618
  check_errors_btn = gr.Button("3. Проверить текст (нажимать только после кнопки 2) - экспериментальная фича, качество пока крайне низкое", elem_id="check_errors_button")
@@ -630,4 +607,5 @@ with gr.Blocks() as demo:
630
  ]
631
  )
632
 
 
633
  demo.launch()
 
94
  except Exception as e:
95
  return f"Ошибка при обращении к ChatGPT-4o-Latest: {e}"
96
 
97
+
98
  def clean_message(message):
99
  # Если сообщение не заканчивается на точку или восклицательный знак, обрезаем его до последней точки
100
  if not message.endswith(('.', '!', '?')):
 
164
  return message
165
  return message
166
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
167
 
168
  # Обновляем генерацию сообщений для отображения в интерфейсе
169
+ def generate_messages(description, advantages, *selected_values):
 
 
 
 
 
 
170
  standard_prompt = generate_standard_prompt(description, advantages, *selected_values)
171
 
172
  results = {
 
179
 
180
  yield results["prompt"], "", "", "", "", "Генерация стандартного промпта завершена"
181
 
182
+ results["gpt4o"] = generate_message_gpt4o_with_retry(standard_prompt)
183
  gpt4o_length = len(results["gpt4o"])
184
  gpt4o_display = f"{results['gpt4o']}\n\n------\nКоличество знаков: {gpt4o_length}"
185
  yield results["prompt"], gpt4o_display, "", "", "", "Сообщение GPT-4o сгенерировано"
186
 
187
+ results["gigachat_pro"] = generate_message_gigachat_pro_with_retry(standard_prompt)
188
  gigachat_pro_length = len(results["gigachat_pro"])
189
  gigachat_pro_display = f"{results['gigachat_pro']}\n\n------\nКоличество знаков: {gigachat_pro_length}"
190
  yield results["prompt"], gpt4o_display, gigachat_pro_display, "", "", "Сообщение GigaChat-Pro сгенерировано"
191
 
192
  time.sleep(2)
193
 
194
+ results["gigachat_lite"] = generate_message_gigachat_lite_with_retry(standard_prompt)
195
  gigachat_lite_length = len(results["gigachat_lite"])
196
  gigachat_lite_display = f"{results['gigachat_lite']}\n\n------\nКоличество знаков: {gigachat_lite_length}"
197
  yield results["prompt"], gpt4o_display, gigachat_pro_display, gigachat_lite_display, "", "Сообщение GigaChat-Lite сгенерировано"
198
 
199
  time.sleep(2)
200
 
201
+ results["gigachat_plus"] = generate_message_gigachat_plus_with_retry(standard_prompt)
202
  gigachat_plus_length = len(results["gigachat_plus"])
203
  gigachat_plus_display = f"{results['gigachat_plus']}\n\n------\nКоличество знаков: {gigachat_plus_length}"
204
  yield results["prompt"], gpt4o_display, gigachat_pro_display, gigachat_lite_display, gigachat_plus_display, "Все сообщения сгенерированы"
205
 
206
  return results
207
 
208
+
209
+
210
  # Функция для генерации персонализированного промпта
211
  def generate_personalization_prompt(*selected_values):
212
  prompt = "Адаптируй, не превышая длину сообщения в 250 знаков с пробелами, текст с учетом следующих особенностей:\n"
 
251
  return message
252
  return message
253
 
254
+
255
  # Обновляем блок персонализации
256
  def personalize_messages_with_yield(gpt4o_message, gigachat_pro_message, gigachat_lite_message, gigachat_plus_message, *selected_values):
257
  personalization_prompt = generate_personalization_prompt(*selected_values)
 
277
  gigachat_plus_display = f"{personalized_message_gigachat_plus}\n\n------\nКоличество знаков: {gigachat_plus_length}"
278
  yield personalization_prompt, gpt4o_display, gigachat_pro_display, gigachat_lite_display, gigachat_plus_display, "Все персонализированные сообщения сгенерированы"
279
 
280
+
281
  # Функция для генерации промпта проверки текста
282
  def generate_error_check_prompt():
283
  prompt = (
 
322
  )
323
  return prompt
324
 
325
+
326
  # Функция для выполнения проверки текста с использованием yield
327
  def check_errors_with_yield(*personalized_messages):
328
  if len(personalized_messages) < 4:
 
350
 
351
  yield error_check_prompt, error_message_gpt4o, error_message_gigachat_pro, error_message_gigachat_lite, error_message_gigachat_plus, "Все результаты проверки сгенерированы"
352
 
353
+
354
  def save_to_github(personalized_message, model_name, comment, corrected_message, description, advantages, non_personalized_prompt, non_personalized_message, gender, generation, psychotype, business_stage, industry, legal_form, temperature):
355
  # Собираем все данные в один словарь
356
  data_to_save = {
 
396
  print(f"Ошибка при загрузке файла на GitHub: {response.status_code}")
397
  print(f"Ответ сервера: {response.json()}")
398
 
399
+
400
  # Создание интерфейса Gradio
401
  with gr.Blocks() as demo:
402
  gr.Markdown("# Генерация SMS-сообщений по заданным признакам")
 
460
  outputs=[prompt_display, output_text_gpt4o, output_text_gigachat_pro, output_text_gigachat_lite, output_text_gigachat_plus]
461
  )
462
 
463
+
464
  with gr.Row():
465
  personalize_btn = gr.Button("2. Выполнить персонализацию (нажимать только после кнопки 1)", elem_id="personalize_button")
466
 
 
491
  corrected_gigachat_lite = gr.Textbox(label="", lines=3)
492
  corrected_gigachat_plus = gr.Textbox(label="", lines=3)
493
 
494
+
495
  # Отдельная строка для кнопок с использованием пустой колонки
496
  with gr.Row():
497
  gr.Button("Жми 👍 для сохранения удачного SMS в базу =>")
 
589
  outputs=None
590
  )
591
 
592
+
593
  # Использование сохраненных переменных в следующем блоке
594
  with gr.Row():
595
  check_errors_btn = gr.Button("3. Проверить текст (нажимать только после кнопки 2) - экспериментальная фича, качество пока крайне низкое", elem_id="check_errors_button")
 
607
  ]
608
  )
609
 
610
+
611
  demo.launch()