Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -76,7 +76,7 @@ def generate_standard_prompt(description, advantages, *selected_values):
|
|
76 |
return prompt
|
77 |
|
78 |
# Функции для генерации сообщений
|
79 |
-
def generate_message_gpt4o(prompt
|
80 |
try:
|
81 |
headers = {
|
82 |
"Content-Type": "application/json",
|
@@ -85,16 +85,14 @@ def generate_message_gpt4o(prompt, temperature=1):
|
|
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
|
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(('.', '!', '?')):
|
@@ -104,7 +102,7 @@ def clean_message(message):
|
|
104 |
return message
|
105 |
|
106 |
# Обновленные функции генерации сообщений с учетом обрезки незаконченных предложений
|
107 |
-
def generate_message_gigachat_pro(prompt, temperature):
|
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)
|
@@ -114,7 +112,7 @@ def generate_message_gigachat_pro(prompt, temperature):
|
|
114 |
except Exception as e:
|
115 |
return f"Ошибка при обращении к GigaChat-Pro: {e}"
|
116 |
|
117 |
-
def generate_message_gigachat_lite(prompt, temperature):
|
118 |
try:
|
119 |
time.sleep(2)
|
120 |
messages = [SystemMessage(content=prompt)]
|
@@ -125,7 +123,7 @@ def generate_message_gigachat_lite(prompt, temperature):
|
|
125 |
except Exception as e:
|
126 |
return f"Ошибка при обращении к GigaChat-Lite: {e}"
|
127 |
|
128 |
-
def generate_message_gigachat_plus(prompt, temperature):
|
129 |
try:
|
130 |
time.sleep(2)
|
131 |
messages = [SystemMessage(content=prompt)]
|
@@ -136,37 +134,37 @@ def generate_message_gigachat_plus(prompt, temperature):
|
|
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,33 +177,34 @@ def generate_messages(description, advantages, *selected_values, gpt4o_temperatu
|
|
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 |
def generate_personalization_prompt(*selected_values):
|
211 |
prompt = "Адаптируй, не превышая длину сообщения в 250 знаков с пробелами, текст с учетом следующих особенностей:\n"
|
@@ -389,17 +388,16 @@ def save_to_github(personalized_message, model_name, comment, corrected_message,
|
|
389 |
# Отправка POST-запроса на GitHub API для создания файла в репозитории
|
390 |
response = requests.put(url, headers=headers, data=json.dumps(data))
|
391 |
|
|
|
|
|
|
|
|
|
|
|
|
|
392 |
|
393 |
# Создание интерфейса Gradio
|
394 |
with gr.Blocks() as demo:
|
395 |
gr.Markdown("# Генерация SMS-сообщений по заданным признакам")
|
396 |
-
|
397 |
-
# Добавление элементов управления температурой для каждой модели
|
398 |
-
gpt4o_temperature = gr.Slider(label="GPT-4o: temperature", minimum=0, maximum=1.7, step=0.01, value=1)
|
399 |
-
gigachat_pro_temperature = gr.Slider(label="GigaChat-Pro: temperature", minimum=0, maximum=1.7, step=0.01, value=0.87)
|
400 |
-
gigachat_lite_temperature = gr.Slider(label="GigaChat-Lite: temperature", minimum=0, maximum=1.7, step=0.01, value=0.87)
|
401 |
-
gigachat_plus_temperature = gr.Slider(label="GigaChat-Plus: temperature", minimum=0, maximum=1.7, step=0.01, value=0.87)
|
402 |
-
|
403 |
|
404 |
with gr.Row():
|
405 |
with gr.Column(scale=1):
|
@@ -440,19 +438,20 @@ with gr.Blocks() as demo:
|
|
440 |
output_text_gigachat_lite = gr.Textbox(label="Неперсонализированное сообщение GigaChat-Lite", lines=3, interactive=False)
|
441 |
output_text_gigachat_plus = gr.Textbox(label="Неперсонализированное сообщение GigaChat-Lite+", lines=3, interactive=False)
|
442 |
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
|
|
456 |
|
457 |
with gr.Row():
|
458 |
personalize_btn = gr.Button("2. Выполнить персонализацию (нажимать только после кнопки 1)", elem_id="personalize_button")
|
@@ -601,4 +600,179 @@ with gr.Blocks() as demo:
|
|
601 |
)
|
602 |
|
603 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
604 |
demo.launch()
|
|
|
76 |
return prompt
|
77 |
|
78 |
# Функции для генерации сообщений
|
79 |
+
def generate_message_gpt4o(prompt):
|
80 |
try:
|
81 |
headers = {
|
82 |
"Content-Type": "application/json",
|
|
|
85 |
data = {
|
86 |
"model": "chatgpt-4o-latest",
|
87 |
"messages": [{"role": "system", "content": prompt}],
|
88 |
+
"max_tokens": 101
|
|
|
89 |
}
|
90 |
response = requests.post("https://api.openai.com/v1/chat/completions", json=data, headers=headers)
|
91 |
response_data = response.json()
|
92 |
+
return response_data["choices"][0]["message"]["content"].strip()
|
93 |
except Exception as e:
|
94 |
return f"Ошибка при обращении к ChatGPT-4o-Latest: {e}"
|
95 |
|
|
|
96 |
def clean_message(message):
|
97 |
# Если сообщение не заканчивается на точку или восклицательный знак, обрезаем его до последней точки
|
98 |
if not message.endswith(('.', '!', '?')):
|
|
|
102 |
return message
|
103 |
|
104 |
# Обновленные функции генерации сообщений с учетом обрезки незаконченных предложений
|
105 |
+
def generate_message_gigachat_pro(prompt, temperature=0.87):
|
106 |
try:
|
107 |
messages = [SystemMessage(content=prompt)]
|
108 |
chat_pro = GigaChat(credentials=gc_key, model='GigaChat-Pro', max_tokens=68, temperature=temperature, verify_ssl_certs=False)
|
|
|
112 |
except Exception as e:
|
113 |
return f"Ошибка при обращении к GigaChat-Pro: {e}"
|
114 |
|
115 |
+
def generate_message_gigachat_lite(prompt, temperature=0.87):
|
116 |
try:
|
117 |
time.sleep(2)
|
118 |
messages = [SystemMessage(content=prompt)]
|
|
|
123 |
except Exception as e:
|
124 |
return f"Ошибка при обращении к GigaChat-Lite: {e}"
|
125 |
|
126 |
+
def generate_message_gigachat_plus(prompt, temperature=0.87):
|
127 |
try:
|
128 |
time.sleep(2)
|
129 |
messages = [SystemMessage(content=prompt)]
|
|
|
134 |
except Exception as e:
|
135 |
return f"Ошибка при обращении к GigaChat-Plus: {e}"
|
136 |
|
137 |
+
def generate_message_gpt4o_with_retry(prompt):
|
138 |
for _ in range(10): # Максимум 10 попыток
|
139 |
+
message = generate_message_gpt4o(prompt)
|
140 |
if len(message) <= 250:
|
141 |
return message
|
142 |
return message # Возвращаем последнее сгенерированное сообщение, если все попытки не удались
|
143 |
|
144 |
+
def generate_message_gigachat_pro_with_retry(prompt):
|
145 |
for _ in range(10):
|
146 |
+
message = generate_message_gigachat_pro(prompt)
|
147 |
if len(message) <= 250:
|
148 |
return message
|
149 |
return message
|
150 |
|
151 |
+
def generate_message_gigachat_lite_with_retry(prompt):
|
152 |
for _ in range(10):
|
153 |
+
message = generate_message_gigachat_lite(prompt)
|
154 |
if len(message) <= 250:
|
155 |
return message
|
156 |
return message
|
157 |
|
158 |
+
def generate_message_gigachat_plus_with_retry(prompt):
|
159 |
for _ in range(10):
|
160 |
+
message = generate_message_gigachat_plus(prompt)
|
161 |
if len(message) <= 250:
|
162 |
return message
|
163 |
return message
|
164 |
|
165 |
|
166 |
# Обновляем генерацию сообщений для отображения в интерфейсе
|
167 |
+
def generate_messages(description, advantages, *selected_values):
|
168 |
standard_prompt = generate_standard_prompt(description, advantages, *selected_values)
|
169 |
|
170 |
results = {
|
|
|
177 |
|
178 |
yield results["prompt"], "", "", "", "", "Генерация стандартного промпта завершена"
|
179 |
|
180 |
+
results["gpt4o"] = generate_message_gpt4o_with_retry(standard_prompt)
|
181 |
gpt4o_length = len(results["gpt4o"])
|
182 |
+
gpt4o_display = f"{results['gpt4o']}\n\n------\nКоличество знаков: {gpt4o_length}"
|
183 |
yield results["prompt"], gpt4o_display, "", "", "", "Сообщение GPT-4o сгенерировано"
|
184 |
|
185 |
+
results["gigachat_pro"] = generate_message_gigachat_pro_with_retry(standard_prompt)
|
186 |
gigachat_pro_length = len(results["gigachat_pro"])
|
187 |
+
gigachat_pro_display = f"{results['gigachat_pro']}\n\n------\nКоличество знаков: {gigachat_pro_length}"
|
188 |
yield results["prompt"], gpt4o_display, gigachat_pro_display, "", "", "Сообщение GigaChat-Pro сгенерировано"
|
189 |
|
190 |
time.sleep(2)
|
191 |
|
192 |
+
results["gigachat_lite"] = generate_message_gigachat_lite_with_retry(standard_prompt)
|
193 |
gigachat_lite_length = len(results["gigachat_lite"])
|
194 |
+
gigachat_lite_display = f"{results['gigachat_lite']}\n\n------\nКоличество знаков: {gigachat_lite_length}"
|
195 |
yield results["prompt"], gpt4o_display, gigachat_pro_display, gigachat_lite_display, "", "Сообщение GigaChat-Lite сгенерировано"
|
196 |
|
197 |
time.sleep(2)
|
198 |
|
199 |
+
results["gigachat_plus"] = generate_message_gigachat_plus_with_retry(standard_prompt)
|
200 |
gigachat_plus_length = len(results["gigachat_plus"])
|
201 |
+
gigachat_plus_display = f"{results['gigachat_plus']}\n\n------\nКоличество знаков: {gigachat_plus_length}"
|
202 |
yield results["prompt"], gpt4o_display, gigachat_pro_display, gigachat_lite_display, gigachat_plus_display, "Все сообщения сгенерированы"
|
203 |
|
204 |
return results
|
205 |
|
206 |
|
207 |
+
|
208 |
# Функция для генерации персонализированного промпта
|
209 |
def generate_personalization_prompt(*selected_values):
|
210 |
prompt = "Адаптируй, не превышая длину сообщения в 250 знаков с пробелами, текст с учетом следующих особенностей:\n"
|
|
|
388 |
# Отправка POST-запроса на GitHub API для создания файла в репозитории
|
389 |
response = requests.put(url, headers=headers, data=json.dumps(data))
|
390 |
|
391 |
+
if response.status_code == 201:
|
392 |
+
print("Файл успешно загружен на GitHub.")
|
393 |
+
else:
|
394 |
+
print(f"Ошибка при загрузке файла на GitHub: {response.status_code}")
|
395 |
+
print(f"Ответ сервера: {response.json()}")
|
396 |
+
|
397 |
|
398 |
# Создание интерфейса Gradio
|
399 |
with gr.Blocks() as demo:
|
400 |
gr.Markdown("# Генерация SMS-сообщений по заданным признакам")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
401 |
|
402 |
with gr.Row():
|
403 |
with gr.Column(scale=1):
|
|
|
438 |
output_text_gigachat_lite = gr.Textbox(label="Неперсонализированное сообщение GigaChat-Lite", lines=3, interactive=False)
|
439 |
output_text_gigachat_plus = gr.Textbox(label="Неперсонализированное сообщение GigaChat-Lite+", lines=3, interactive=False)
|
440 |
|
441 |
+
submit_btn.click(
|
442 |
+
generate_messages,
|
443 |
+
inputs=[
|
444 |
+
description_input,
|
445 |
+
advantages_input,
|
446 |
+
*selections,
|
447 |
+
gpt4o_temperature,
|
448 |
+
gigachat_pro_temperature,
|
449 |
+
gigachat_lite_temperature,
|
450 |
+
gigachat_plus_temperature
|
451 |
+
],
|
452 |
+
outputs=[prompt_display, output_text_gpt4o, output_text_gigachat_pro, output_text_gigachat_lite, output_text_gigachat_plus]
|
453 |
+
)
|
454 |
+
|
455 |
|
456 |
with gr.Row():
|
457 |
personalize_btn = gr.Button("2. Выполнить персонализацию (нажимать только после кнопки 1)", elem_id="personalize_button")
|
|
|
600 |
)
|
601 |
|
602 |
|
603 |
+
demo.launch()
|
604 |
+
|
605 |
+
Есть скрипт, в котором есть полезная для меня функция:
|
606 |
+
|
607 |
+
import gradio as gr
|
608 |
+
import requests
|
609 |
+
import os
|
610 |
+
import time
|
611 |
+
from langchain.schema import SystemMessage
|
612 |
+
from langchain_community.chat_models.gigachat import GigaChat
|
613 |
+
|
614 |
+
# Установка ключа API для OpenAI и GigaChat
|
615 |
+
openai_api_key = os.getenv('GPT_KEY')
|
616 |
+
gc_key = os.getenv('GC_KEY')
|
617 |
+
|
618 |
+
# Авторизация в сервисе GigaChat
|
619 |
+
def authenticate_gigachat(model, max_tokens, temperature):
|
620 |
+
return GigaChat(credentials=gc_key, model=model, max_tokens=max_tokens, temperature=temperature, verify_ssl_certs=False)
|
621 |
+
|
622 |
+
# Функция для генерации персонализированного промпта
|
623 |
+
def generate_personalization_prompt(text, opf):
|
624 |
+
if opf == "ИП":
|
625 |
+
prompt = (
|
626 |
+
"Текст должен быть адаптирован для индивидуальных предпринимателей, которые часто ведут бизнес самостоятельно или с минимальным количеством сотрудников. "
|
627 |
+
"Подчеркните простоту и эффективность использования продукта в условиях ограниченных ресурсов. Особое внимание уделите возможности быстрого и удобного управления финансами, "
|
628 |
+
"снижению административной нагрузки и оптимизации затрат. Важно, чтобы текст отражал преимущество в виде простоты интеграции продукта в повседневную деятельность ИП, "
|
629 |
+
"включая оперативность расчетов и гибкость условий. Если имеются льготные условия или специальные предложения для ИП, такие как сниженные комиссии или удобные условия оплаты, "
|
630 |
+
"обязательно упомяните их.\n"
|
631 |
+
f"Текст: \"{text}\""
|
632 |
+
)
|
633 |
+
elif opf == "ООО":
|
634 |
+
prompt = (
|
635 |
+
"Текст должен быть адаптирован для обществ с ограниченной ответственностью (ООО), которые управляют более структурированными и масштабными бизнес-процессами. "
|
636 |
+
"Уделите внимание возможностям продукта в контексте работы с большим количеством сотрудников, управлением бюджетами и финансовыми потоками компании. "
|
637 |
+
"Подчеркните преимущества использования продукта для оптимизации бизнес-процессов, включая автоматизацию расчетов, настройку прав доступа и интеграцию с корпоративными системами учета. "
|
638 |
+
"Важно указать на возможности улучшения операционной эффективности и соответствия юридическим и налоговым требованиям. Если продукт предлагает специальные условия ��ля корпоративных клиентов, "
|
639 |
+
"такие как комплексное обслуживание или индивидуальные тарифы, обязательно включите эту информацию в текст.\n"
|
640 |
+
f"Текст: \"{text}\""
|
641 |
+
)
|
642 |
+
return prompt
|
643 |
+
|
644 |
+
# Функция для очистки сообщений
|
645 |
+
def clean_message(message):
|
646 |
+
if not message.endswith(('.', '!', '?')):
|
647 |
+
last_period = max(message.rfind('.'), message.rfind('!'), message.rfind('?'))
|
648 |
+
if last_period != -1:
|
649 |
+
message = message[:last_period + 1]
|
650 |
+
return message
|
651 |
+
|
652 |
+
# Функция для генерации сообщений GPT-4o
|
653 |
+
def generate_message_gpt4o(prompt, temperature=1):
|
654 |
+
try:
|
655 |
+
headers = {
|
656 |
+
"Content-Type": "application/json",
|
657 |
+
"Authorization": f"Bearer {openai_api_key}"
|
658 |
+
}
|
659 |
+
data = {
|
660 |
+
"model": "chatgpt-4o-latest",
|
661 |
+
"messages": [{"role": "system", "content": prompt}],
|
662 |
+
"max_tokens": 101,
|
663 |
+
"temperature": temperature # Передача температуры
|
664 |
+
}
|
665 |
+
response = requests.post("https://api.openai.com/v1/chat/completions", json=data, headers=headers)
|
666 |
+
response_data = response.json()
|
667 |
+
return clean_message(response_data["choices"][0]["message"]["content"].strip())
|
668 |
+
except Exception as e:
|
669 |
+
return f"Ошибка при обращении к ChatGPT-4o-Latest: {e}"
|
670 |
+
|
671 |
+
|
672 |
+
# Функции для генерации сообщений GigaChat с учетом обрезки
|
673 |
+
def generate_message_gigachat_pro(prompt, max_tokens, temperature):
|
674 |
+
try:
|
675 |
+
messages = [SystemMessage(content=prompt)]
|
676 |
+
chat_pro = authenticate_gigachat('GigaChat-Pro', max_tokens, temperature)
|
677 |
+
res = chat_pro(messages)
|
678 |
+
cleaned_message = clean_message(res.content.strip())
|
679 |
+
return cleaned_message
|
680 |
+
except Exception as e:
|
681 |
+
return f"Ошибка при обращении к GigaChat-Pro: {e}"
|
682 |
+
|
683 |
+
def generate_message_gigachat_lite(prompt, max_tokens, temperature):
|
684 |
+
try:
|
685 |
+
time.sleep(2)
|
686 |
+
messages = [SystemMessage(content=prompt)]
|
687 |
+
chat_lite = authenticate_gigachat('GigaChat', max_tokens, temperature)
|
688 |
+
res = chat_lite(messages)
|
689 |
+
cleaned_message = clean_message(res.content.strip())
|
690 |
+
return cleaned_message
|
691 |
+
except Exception as e:
|
692 |
+
return f"Ошибка при обращении к GigaChat-Lite: {e}"
|
693 |
+
|
694 |
+
def generate_message_gigachat_plus(prompt, max_tokens, temperature):
|
695 |
+
try:
|
696 |
+
time.sleep(2)
|
697 |
+
messages = [SystemMessage(content=prompt)]
|
698 |
+
chat_plus = authenticate_gigachat('GigaChat-Plus', max_tokens, temperature)
|
699 |
+
res = chat_plus(messages)
|
700 |
+
cleaned_message = clean_message(res.content.strip())
|
701 |
+
return cleaned_message
|
702 |
+
except Exception as e:
|
703 |
+
return f"Ошибка при обращении к GigaChat-Plus: {e}"
|
704 |
+
|
705 |
+
# Обновление промпта при изменении ОПФ
|
706 |
+
def update_prompt(text, opf):
|
707 |
+
return generate_personalization_prompt(text, opf)
|
708 |
+
|
709 |
+
# Функция для постепенной генерации результатов
|
710 |
+
def personalize_message(text, opf, prompt, gpt4o_max_tokens, gpt4o_temperature, gigachat_max_tokens, gigachat_temperature):
|
711 |
+
yield prompt, "", "", "", ""
|
712 |
+
|
713 |
+
result_gpt4o = generate_message_gpt4o(prompt, gpt4o_max_tokens, gpt4o_temperature)
|
714 |
+
yield prompt, result_gpt4o, "", "", ""
|
715 |
+
|
716 |
+
result_pro = generate_message_gigachat_pro(prompt, gigachat_max_tokens, gigachat_temperature)
|
717 |
+
yield prompt, result_gpt4o, result_pro, "", ""
|
718 |
+
|
719 |
+
time.sleep(2)
|
720 |
+
|
721 |
+
result_lite = generate_message_gigachat_lite(prompt, gigachat_max_tokens, gigachat_temperature)
|
722 |
+
yield prompt, result_gpt4o, result_pro, result_lite, ""
|
723 |
+
|
724 |
+
time.sleep(2)
|
725 |
+
|
726 |
+
result_plus = generate_message_gigachat_plus(prompt, gigachat_max_tokens, gigachat_temperature)
|
727 |
+
yield prompt, result_gpt4o, result_pro, result_lite, result_plus
|
728 |
+
|
729 |
+
# Создание интерфейса Gradio
|
730 |
+
with gr.Blocks() as demo:
|
731 |
+
gr.Markdown("# Персонализация под ОПФ")
|
732 |
+
|
733 |
+
# Добавление элементов управления температурой для каждой модели
|
734 |
+
gpt4o_temperature = gr.Slider(label="GPT-4o: temperature", minimum=0, maximum=2, step=0.01, value=1)
|
735 |
+
gigachat_pro_temperature = gr.Slider(label="GigaChat-Pro: temperature", minimum=0, maximum=1.7, step=0.01, value=0.87)
|
736 |
+
gigachat_lite_temperature = gr.Slider(label="GigaChat-Lite: temperature", minimum=0, maximum=1.7, step=0.01, value=0.87)
|
737 |
+
gigachat_plus_temperature = gr.Slider(label="GigaChat-Plus: temperature", minimum=0, maximum=1.7, step=0.01, value=0.87)
|
738 |
+
|
739 |
+
with gr.Row():
|
740 |
+
with gr.Column():
|
741 |
+
# Параметры для GPT-4o
|
742 |
+
gpt4o_max_tokens = gr.Slider(label="GPT-4o: max_tokens", minimum=0, maximum=10000, step=1, value=103)
|
743 |
+
gpt4o_temperature = gr.Slider(label="GPT-4o: temperature", minimum=0, maximum=2, step=0.01, value=1)
|
744 |
+
|
745 |
+
# Параметры для всех моделей GigaChat
|
746 |
+
gigachat_max_tokens = gr.Slider(label="GigaChat: max_tokens", minimum=0, maximum=10000, step=1, value=68)
|
747 |
+
gigachat_temperature = gr.Slider(label="GigaChat: temperature", minimum=0, maximum=1.7, step=0.01, value=0.87)
|
748 |
+
|
749 |
+
# Предзаполненное значение текста
|
750 |
+
text_input = gr.Textbox(
|
751 |
+
label="Введите ваш текст",
|
752 |
+
lines=5,
|
753 |
+
value="Перечислять зарплату вашим сотрудникам удобно с зарплатным проектом от Сбера! Любые виды выплат в едином договоре, зачисление происходит от 1 минуты, в любое время 24/7. Оставить заявку ->"
|
754 |
+
)
|
755 |
+
|
756 |
+
opf_input = gr.Dropdown(choices=["ООО", "ИП"], label="Выберите ОПФ")
|
757 |
+
|
758 |
+
# Окно для отображения и редактирования сгенерированного промпта
|
759 |
+
prompt_display = gr.Textbox(label="Сгенерированный промпт", lines=5, interactive=True)
|
760 |
+
|
761 |
+
# Обновляем промпт при изменении ОПФ или текста
|
762 |
+
opf_input.change(fn=update_prompt, inputs=[text_input, opf_input], outputs=prompt_display)
|
763 |
+
text_input.change(fn=update_prompt, inputs=[text_input, opf_input], outputs=prompt_display)
|
764 |
+
|
765 |
+
personalize_button = gr.Button("Персонализировать")
|
766 |
+
|
767 |
+
output_gpt4o = gr.Textbox(label="Результат GPT-4o", lines=3, interactive=False)
|
768 |
+
output_gigachat_pro = gr.Textbox(label="Результат GigaChat-Pro", lines=3, interactive=False)
|
769 |
+
output_gigachat_lite = gr.Textbox(label="Результат GigaChat-Lite", lines=3, interactive=False)
|
770 |
+
output_gigachat_plus = gr.Textbox(label="Результат GigaChat-Lite+", lines=3, interactive=False)
|
771 |
+
|
772 |
+
personalize_button.click(
|
773 |
+
personalize_message,
|
774 |
+
inputs=[text_input, opf_input, prompt_display, gpt4o_max_tokens, gpt4o_temperature, gigachat_max_tokens, gigachat_temperature],
|
775 |
+
outputs=[prompt_display, output_gpt4o, output_gigachat_pro, output_gigachat_lite, output_gigachat_plus]
|
776 |
+
)
|
777 |
+
|
778 |
demo.launch()
|