fruitpicker01 commited on
Commit
c9881c0
·
verified ·
1 Parent(s): 0ba64c1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -271
app.py CHANGED
@@ -14,10 +14,22 @@ openai_api_key = os.getenv('GPT_KEY')
14
  gc_key = os.getenv('GC_KEY')
15
  token = os.getenv('GITHUB_TOKEN')
16
 
17
- # Авторизация в сервисе GigaChat
18
- chat_pro = GigaChat(credentials=gc_key, model='GigaChat-Pro', max_tokens=68, verify_ssl_certs=False)
19
- chat_lite = GigaChat(credentials=gc_key, model='GigaChat', max_tokens=68, verify_ssl_certs=False)
20
- chat_plus = GigaChat(credentials=gc_key, model='GigaChat-Plus', max_tokens=68, verify_ssl_certs=False)
 
 
 
 
 
 
 
 
 
 
 
 
21
 
22
  # Загрузка данных из Excel-файла
23
  try:
@@ -75,98 +87,56 @@ def generate_standard_prompt(description, advantages, *selected_values):
75
  )
76
  return prompt
77
 
78
- # Функции для генерации сообщений
79
- def generate_message_gpt4o(prompt, temperature=1):
80
  try:
81
- headers = {
82
- "Content-Type": "application/json",
83
- "Authorization": f"Bearer {openai_api_key}"
84
- }
85
  data = {
86
- "model": "chatgpt-4o-latest",
87
  "messages": [{"role": "system", "content": prompt}],
88
- "max_tokens": 101,
89
- "temperature": temperature # Передача температуры
90
  }
91
- response = requests.post("https://api.openai.com/v1/chat/completions", json=data, headers=headers)
92
  response_data = response.json()
93
- return clean_message(response_data["choices"][0]["message"]["content"].strip()) + f" {temperature}"
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(('.', '!', '?')):
101
  last_period = message.rfind('.')
102
- if last_period != -1:
103
  message = message[:last_period + 1]
104
  return message
105
 
106
- # Обновленные функции генерации сообщений с учетом обрезки незаконченных предложений
107
- def generate_message_gigachat_pro(prompt, temperature=0.87):
108
- try:
109
- messages = [SystemMessage(content=prompt)]
110
- chat_pro = GigaChat(credentials=gc_key, model='GigaChat-Pro', max_tokens=68, temperature=temperature, verify_ssl_certs=False)
111
- res = chat_pro(messages)
112
- cleaned_message = clean_message(res.content.strip())
113
- return cleaned_message
114
- except Exception as e:
115
- return f"Ошибка при обращении к GigaChat-Pro: {e}"
116
-
117
- def generate_message_gigachat_lite(prompt, temperature=0.87):
118
- try:
119
- time.sleep(2)
120
- messages = [SystemMessage(content=prompt)]
121
- chat_lite = GigaChat(credentials=gc_key, model='GigaChat', max_tokens=68, temperature=temperature, verify_ssl_certs=False)
122
- res = chat_lite(messages)
123
- cleaned_message = clean_message(res.content.strip())
124
- return cleaned_message
125
- except Exception as e:
126
- return f"Ошибка при обращении к GigaChat-Lite: {e}"
127
-
128
- def generate_message_gigachat_plus(prompt, temperature=0.87):
129
- try:
130
- time.sleep(2)
131
- messages = [SystemMessage(content=prompt)]
132
- chat_plus = GigaChat(credentials=gc_key, model='GigaChat-Plus', max_tokens=68, temperature=temperature, verify_ssl_certs=False)
133
- res = chat_plus(messages)
134
- cleaned_message = clean_message(res.content.strip())
135
- return cleaned_message
136
- except Exception as e:
137
- return f"Ошибка при обращении к GigaChat-Plus: {e}"
138
-
139
- def generate_message_gpt4o_with_retry(prompt):
140
  for _ in range(10): # Максимум 10 попыток
141
- message = generate_message_gpt4o(prompt)
142
  if len(message) <= 250:
143
  return message
144
  return message # Возвращаем последнее сгенерированное сообщение, если все попытки не удались
145
 
146
- def generate_message_gigachat_pro_with_retry(prompt):
147
- for _ in range(10):
148
- message = generate_message_gigachat_pro(prompt)
149
- if len(message) <= 250:
150
- return message
151
- return message
152
-
153
- def generate_message_gigachat_lite_with_retry(prompt):
154
- for _ in range(10):
155
- message = generate_message_gigachat_lite(prompt)
156
- if len(message) <= 250:
157
- return message
158
- return message
159
-
160
- def generate_message_gigachat_plus_with_retry(prompt):
161
  for _ in range(10):
162
- message = generate_message_gigachat_plus(prompt)
163
  if len(message) <= 250:
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,224 +149,32 @@ def generate_messages(description, advantages, *selected_values):
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"
213
- for i, feature in enumerate(features.keys()):
214
- if selected_values[i]:
215
- try:
216
- prompt += f"{features[feature][selected_values[i]]}\n"
217
- except KeyError:
218
- return f"Ошибка: выбранное значение {selected_values[i]} не найдено в данных."
219
-
220
- prompt += "Убедись, что в готовом тексте до 250 знаков с пробелами."
221
-
222
- return prompt.strip()
223
-
224
- # Функция для выполнения персонализации на основе сгенерированного промпта и сообщения
225
- def perform_personalization(standard_message, personalization_prompt):
226
- full_prompt = f"{personalization_prompt}\n\nТекст для адаптации:\n{standard_message}"
227
- return generate_message_gpt4o(full_prompt)
228
-
229
- # Также обновляем функции персонализации
230
- def perform_personalization_gigachat(standard_message, personalization_prompt, model):
231
- full_prompt = f"{personalization_prompt}\n\nТекст для адаптации:\n{standard_message}"
232
- if model == "gigachat_pro":
233
- result = generate_message_gigachat_pro(full_prompt)
234
- elif model == "gigachat_lite":
235
- result = generate_message_gigachat_lite(full_prompt)
236
- elif model == "gigachat_plus":
237
- result = generate_message_gigachat_plus(full_prompt)
238
- return clean_message(result)
239
-
240
- def perform_personalization_with_retry(standard_message, personalization_prompt):
241
- for _ in range(10): # Максимум 10 попыток
242
- message = perform_personalization(standard_message, personalization_prompt)
243
- if len(message) <= 250:
244
- return message
245
- return message # Возвращаем последнее сгенерированное сообщение, если все попытки не удались
246
-
247
- def perform_personalization_gigachat_with_retry(standard_message, personalization_prompt, model):
248
- for _ in range(10):
249
- message = perform_personalization_gigachat(standard_message, personalization_prompt, model)
250
- if len(message) <= 250:
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)
258
- yield personalization_prompt, "", "", "", "", "Промпт для персонализации сгенерирован"
259
-
260
- personalized_message_gpt4o = perform_personalization_with_retry(gpt4o_message, personalization_prompt)
261
- gpt4o_length = len(personalized_message_gpt4o)
262
- gpt4o_display = f"{personalized_message_gpt4o}\n\n------\nКоличество знаков: {gpt4o_length}"
263
- yield personalization_prompt, gpt4o_display, "", "", "", "Персонализированное сообщение GPT-4o сгенерировано"
264
-
265
- personalized_message_gigachat_pro = perform_personalization_gigachat_with_retry(gigachat_pro_message, personalization_prompt, "gigachat_pro")
266
- gigachat_pro_length = len(personalized_message_gigachat_pro)
267
- gigachat_pro_display = f"{personalized_message_gigachat_pro}\n\n------\nКоличество знаков: {gigachat_pro_length}"
268
- yield personalization_prompt, gpt4o_display, gigachat_pro_display, "", "", "Персонализированное сообщение GigaChat-Pro сгенерировано"
269
-
270
- personalized_message_gigachat_lite = perform_personalization_gigachat_with_retry(gigachat_lite_message, personalization_prompt, "gigachat_lite")
271
- gigachat_lite_length = len(personalized_message_gigachat_lite)
272
- gigachat_lite_display = f"{personalized_message_gigachat_lite}\n\n------\nКоличество знаков: {gigachat_lite_length}"
273
- yield personalization_prompt, gpt4o_display, gigachat_pro_display, gigachat_lite_display, "", "Персонализированное сообщение GigaChat-Lite сгенерировано"
274
-
275
- personalized_message_gigachat_plus = perform_personalization_gigachat_with_retry(gigachat_plus_message, personalization_prompt, "gigachat_plus")
276
- gigachat_plus_length = len(personalized_message_gigachat_plus)
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 = (
284
- "Проверь текст SMS-сообщения на соответствие установленным правилам и ограничениям, касающимся его формирования. На основе выявленных несоответствий предоставь рекомендации по исправлению текста. "
285
- "Особое внимание удели проверке: количества символов в тексте SMS-сообщения, орфографическим и пунктуационным ошибкам, определению частей речи (причастия, деепричастия, причастный оборот, деепричастный оборот). "
286
- "Анализируй только текст SMS-сообщения, ничего не придумывай и не добавляй лишнего. "
287
- "Правила и ограничения, которым должен соответствовать текст SMS-сообщения:\n"
288
- "1. Количество символов в SMS-сообщении должно быть до 250 знаков с учетом пробелов.\n"
289
- "2. В тексте должен быть призыв к действию с использованием глагола в повелительном наклонении (например: оформите, получите, разместите, размещайте, откройте, подключите, подайте заявку).\n"
290
- "3. Должно соблюдаться соответствие фактов о продукте.\n"
291
- "4. В генерациях смс запрещено использовать обещания и гарантии.\n"
292
- "5. В генерациях смс запрещено использовать составные конструкции из двух глаголов.\n"
293
- "6. В генерациях смс запрещено использовать причастия и причастные обороты.\n"
294
- "7. В генерациях смс запрещено использовать деепричастия и деепричастные обороты.\n"
295
- "8. В генерациях смс запрещено использовать превосходную степень прилагательных.\n"
296
- "9. В генерациях смс запрещено использовать страдательный залог.\n"
297
- "10. В генерациях смс запрещено использовать порядковые числительные от 10 прописью.\n"
298
- "11. В генерациях смс запрещено использовать цепочки с придаточными предложениями.\n"
299
- "12. В генерациях смс запрещено использовать разделительные повторяющиеся союзы.\n"
300
- "13. В генерациях смс запрещено использовать вводные конструкции.\n"
301
- "14. В генерациях смс запрещено использовать усилители.\n"
302
- "15. В генерациях смс запрещено использовать паразиты времени.\n"
303
- "16. В генерациях смс запрещено использовать несколько существительных подряд, в том числе отглагольных.\n"
304
- "17. В генерациях смс запрещено использовать производные предлоги.\n"
305
- "18. В генерациях смс запрещено использовать сложные предложения, в которых нет связи между частями.\n"
306
- "19. В генерациях смс запрещено использовать сложноподчинённые предложения.\n"
307
- "20. В генерациях смс запрещено использовать даты прописью.\n"
308
- "21. В генерациях смс запрещено использовать близкие по смыслу однородные члены.\n"
309
- "22. В генерациях смс запрещено использовать шокирующие, экстравагантные, кликбейтные фразы.\n"
310
- "23. В генерациях смс запрещено использовать абстрактные заявления без поддержки фактами и отсутствие доказательства пользы для клиента.\n"
311
- "24. В генерациях смс запрещено использовать гарантирующие фразы.\n"
312
- "25. В генерациях смс запрещено использовать узкоспециализированные термины.\n"
313
- "26. В генерациях смс запрещено использовать фразы, способные создать двойственное ощущение, обидеть.\n"
314
- "27. В генерациях смс запрещено использовать речевые клише, рекламные штампы, канцеляризмы.\n"
315
- "28. В генерациях смс запрещено использовать запрещенные слова: № один, номер один, № 1, вкусный, дешёвый, продукт, спам, банкротство, долги, займ, срочно, лучший, главный, номер 1, успех, лидер.\n"
316
- "29. Сообщение должно быть написано без орфографических и грамматических ошибок.\n"
317
- "30. Запрещены повторы слов.\n"
318
- "31. В тексте должны использоваться правильные знаки препинания.\n"
319
- "32. Если в тексте используются кавычки, они должны быть в форме «кавычки-ёлочки».\n"
320
- "33. В тексте SMS сообщения должны обязательно присутствовать: название продукта, условия использования продукта / Преимущества продукта / Шаги для подключения или начала использования / Условия акции (если предложение по продукту акционное).\n"
321
- "Форма ответа: [Ответ должен быть кратким, должен содержать только рекомендации по устранению найденных несоответствий, соответствия каждому пункту правил описывать категорически запрещено]."
322
- )
323
- return prompt
324
-
325
-
326
- # Функция для выполнения проверки текста с использованием yield
327
- def check_errors_with_yield(*personalized_messages):
328
- if len(personalized_messages) < 4:
329
- yield "", "", "", "", "", "Ошибка: недостаточно сообщений для проверки"
330
- return
331
-
332
- error_check_prompt = generate_error_check_prompt()
333
- yield error_check_prompt, "", "", "", "", "Промпт для проверки текста сгенерирован"
334
-
335
- error_message_gpt4o = perform_personalization(f"{error_check_prompt}\n\n{personalized_messages[0]}", "")
336
- yield error_check_prompt, error_message_gpt4o, "", "", "", "Результат проверки GPT-4o сгенерирован"
337
-
338
- error_message_gigachat_pro = perform_personalization_gigachat(f"{error_check_prompt}\n\n{personalized_messages[1]}", "", "gigachat_pro")
339
- yield error_check_prompt, error_message_gpt4o, error_message_gigachat_pro, "", "", "Результат проверки GigaChat-Pro сгенерирован"
340
-
341
- time.sleep(3)
342
- error_message_gigachat_lite = perform_personalization_gigachat(f"{error_check_prompt}\n\n{personalized_messages[2]}", "", "gigachat_lite")
343
- yield error_check_prompt, error_message_gpt4o, error_message_gigachat_pro, error_message_gigachat_lite, "", "Результат проверки GigaChat-Lite сгенерирован"
344
-
345
- try:
346
- time.sleep(3)
347
- error_message_gigachat_plus = perform_personalization_gigachat(f"{error_check_prompt}\n\n{personalized_messages[3]}", "", "gigachat_plus")
348
- except Exception as e:
349
- error_message_gigachat_plus = f"Ошибка при обработке GigaChat-Plus: {e}"
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 = {
357
- "Модель": model_name,
358
- "Температура": temperature, # Добавляем температуру
359
- "Персонализированное сообщение": personalized_message,
360
- "Комментарий": comment,
361
- "Откорректированное сообщение": corrected_message,
362
- "Описание предложения": description,
363
- "Преимущества": advantages,
364
- "Неперсонализированный промпт": non_personalized_prompt,
365
- "Неперсонализированное сообщение": non_personalized_message,
366
- "Пол": gender,
367
- "Поколение": generation,
368
- "Психотип": psychotype,
369
- "Стадия бизнеса": business_stage,
370
- "Отрасль": industry,
371
- "ОПФ": legal_form
372
- }
373
-
374
- # Преобразуем контент в JSON-строку и кодируем в base64
375
- file_content_encoded = base64.b64encode(json.dumps(data_to_save).encode()).decode()
376
-
377
- # Параметры для GitHub API
378
- repo = "fruitpicker01/Storage_1"
379
- path = f"file_{int(time.time())}.json"
380
- url = f"https://api.github.com/repos/{repo}/contents/{path}"
381
- headers = {
382
- "Authorization": f"token {token}",
383
- "Content-Type": "application/json"
384
- }
385
- data = {
386
- "message": f"Добавлен новый файл {path}",
387
- "content": file_content_encoded
388
- }
389
-
390
- # Отправка POST-запроса на GitHub API для создания файла в репозитории
391
- response = requests.put(url, headers=headers, data=json.dumps(data))
392
-
393
- if response.status_code == 201:
394
- print("Файл успешно загружен на GitHub.")
395
- else:
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-сообщений по заданным признакам")
@@ -444,18 +222,18 @@ with gr.Blocks() as demo:
444
  output_text_gpt4o = gr.Textbox(label="Неперсонализированное сообщение GPT-4o", lines=3, interactive=False)
445
  output_text_gigachat_pro = gr.Textbox(label="Неперсонализированное сообщение GigaChat-Pro", lines=3, interactive=False)
446
  output_text_gigachat_lite = gr.Textbox(label="Неперсонализированное сообщение GigaChat-Lite", lines=3, interactive=False)
447
- output_text_gigachat_plus = gr.Textbox(label="Неперсонализированное сообщение GigaChat-Lite+", lines=3, interactive=False)
448
 
449
  submit_btn.click(
450
  generate_messages,
451
  inputs=[
452
  description_input,
453
  advantages_input,
454
- *selections,
455
- gpt4o_temperature,
456
- gigachat_pro_temperature,
457
- gigachat_lite_temperature,
458
- gigachat_plus_temperature
459
  ],
460
  outputs=[prompt_display, output_text_gpt4o, output_text_gigachat_pro, output_text_gigachat_lite, output_text_gigachat_plus]
461
  )
 
14
  gc_key = os.getenv('GC_KEY')
15
  token = os.getenv('GITHUB_TOKEN')
16
 
17
+ # Функция аутентификации в сервисе GigaChat с заданной температурой
18
+ def authenticate_gigachat(model, max_tokens, temperature):
19
+ return GigaChat(credentials=gc_key, model=model, max_tokens=max_tokens, temperature=temperature, verify_ssl_certs=False)
20
+
21
+ # Функция аутентификации для GPT-4o
22
+ def authenticate_gpt4o(max_tokens, temperature):
23
+ headers = {
24
+ "Content-Type": "application/json",
25
+ "Authorization": f"Bearer {openai_api_key}"
26
+ }
27
+ return {
28
+ "model": "chatgpt-4o-latest",
29
+ "max_tokens": max_tokens,
30
+ "temperature": temperature,
31
+ "headers": headers
32
+ }
33
 
34
  # Загрузка данных из Excel-файла
35
  try:
 
87
  )
88
  return prompt
89
 
90
+ # Функция для генерации сообщений GPT-4o
91
+ def generate_message_gpt4o(auth_params, prompt):
92
  try:
 
 
 
 
93
  data = {
94
+ "model": auth_params["model"],
95
  "messages": [{"role": "system", "content": prompt}],
96
+ "max_tokens": auth_params["max_tokens"],
97
+ "temperature": auth_params["temperature"]
98
  }
99
+ response = requests.post("https://api.openai.com/v1/chat/completions", json=data, headers=auth_params["headers"])
100
  response_data = response.json()
101
+ return clean_message(response_data["choices"][0]["message"]["content"].strip())
102
  except Exception as e:
103
  return f"Ошибка при обращении к ChatGPT-4o-Latest: {e}"
104
 
105
+ # Функции для генерации сообщений GigaChat
106
+ def generate_message_gigachat(chat_instance, prompt):
107
+ try:
108
+ messages = [SystemMessage(content=prompt)]
109
+ res = chat_instance(messages)
110
+ cleaned_message = clean_message(res.content.strip())
111
+ return cleaned_message
112
+ except Exception as e:
113
+ return f"Ошибка при обращении к GigaChat: {e}"
114
 
115
  def clean_message(message):
116
  # Если сообщение не заканчивается на точку или восклицательный знак, обрезаем его до последней точки
117
  if not message.endswith(('.', '!', '?')):
118
  last_period = message.rfind('.')
119
+ if (last_period != -1):
120
  message = message[:last_period + 1]
121
  return message
122
 
123
+ # Функции для генерации сообщений с повторными попытками
124
+ def generate_message_gpt4o_with_retry(auth_params, prompt):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
  for _ in range(10): # Максимум 10 попыток
126
+ message = generate_message_gpt4o(auth_params, prompt)
127
  if len(message) <= 250:
128
  return message
129
  return message # Возвращаем последнее сгенерированное сообщение, если все попытки не удались
130
 
131
+ def generate_message_gigachat_with_retry(chat_instance, prompt):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  for _ in range(10):
133
+ message = generate_message_gigachat(chat_instance, prompt)
134
  if len(message) <= 250:
135
  return message
136
  return message
137
 
 
138
  # Обновляем генерацию сообщений для отображения в интерфейсе
139
+ def generate_messages(description, advantages, *selected_values, gpt4o_auth_params, chat_pro, chat_lite, chat_plus):
140
  standard_prompt = generate_standard_prompt(description, advantages, *selected_values)
141
 
142
  results = {
 
149
 
150
  yield results["prompt"], "", "", "", "", "Генерация стандартного промпта завершена"
151
 
152
+ results["gpt4o"] = generate_message_gpt4o_with_retry(gpt4o_auth_params, standard_prompt)
153
  gpt4o_length = len(results["gpt4o"])
154
  gpt4o_display = f"{results['gpt4o']}\n\n------\nКоличество знаков: {gpt4o_length}"
155
  yield results["prompt"], gpt4o_display, "", "", "", "Сообщение GPT-4o сгенерировано"
156
 
157
+ results["gigachat_pro"] = generate_message_gigachat_with_retry(chat_pro, standard_prompt)
158
  gigachat_pro_length = len(results["gigachat_pro"])
159
  gigachat_pro_display = f"{results['gigachat_pro']}\n\n------\nКоличество знаков: {gigachat_pro_length}"
160
  yield results["prompt"], gpt4o_display, gigachat_pro_display, "", "", "Сообщение GigaChat-Pro сгенерировано"
161
 
162
  time.sleep(2)
163
 
164
+ results["gigachat_lite"] = generate_message_gigachat_with_retry(chat_lite, standard_prompt)
165
  gigachat_lite_length = len(results["gigachat_lite"])
166
  gigachat_lite_display = f"{results['gigachat_lite']}\n\n------\nКоличество знаков: {gigachat_lite_length}"
167
  yield results["prompt"], gpt4o_display, gigachat_pro_display, gigachat_lite_display, "", "Сообщение GigaChat-Lite сгенерировано"
168
 
169
  time.sleep(2)
170
 
171
+ results["gigachat_plus"] = generate_message_gigachat_with_retry(chat_plus, standard_prompt)
172
  gigachat_plus_length = len(results["gigachat_plus"])
173
  gigachat_plus_display = f"{results['gigachat_plus']}\n\n------\nКоличество знаков: {gigachat_plus_length}"
174
  yield results["prompt"], gpt4o_display, gigachat_pro_display, gigachat_lite_display, gigachat_plus_display, "Все сообщения сгенерированы"
175
 
176
  return results
177
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
178
  # Создание интерфейса Gradio
179
  with gr.Blocks() as demo:
180
  gr.Markdown("# Генерация SMS-сообщений по заданным признакам")
 
222
  output_text_gpt4o = gr.Textbox(label="Неперсонализированное сообщение GPT-4o", lines=3, interactive=False)
223
  output_text_gigachat_pro = gr.Textbox(label="Неперсонализированное сообщение GigaChat-Pro", lines=3, interactive=False)
224
  output_text_gigachat_lite = gr.Textbox(label="Неперсонализированное сообщение GigaChat-Lite", lines=3, interactive=False)
225
+ output_text_gigachat_plus = gr.Textbox(label="Неперсонализированное сообщение GigaChat-Plus", lines=3, interactive=False)
226
 
227
  submit_btn.click(
228
  generate_messages,
229
  inputs=[
230
  description_input,
231
  advantages_input,
232
+ *selections,
233
+ authenticate_gpt4o(101, gpt4o_temperature),
234
+ authenticate_gigachat('GigaChat-Pro', 68, gigachat_pro_temperature),
235
+ authenticate_gigachat('GigaChat', 68, gigachat_lite_temperature),
236
+ authenticate_gigachat('GigaChat-Plus', 68, gigachat_plus_temperature)
237
  ],
238
  outputs=[prompt_display, output_text_gpt4o, output_text_gigachat_pro, output_text_gigachat_lite, output_text_gigachat_plus]
239
  )