Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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
|
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"] =
|
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"] =
|
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"] =
|
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"] =
|
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()
|