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,14 +85,16 @@ def generate_message_gpt4o(prompt):
|
|
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(('.', '!', '?')):
|
@@ -399,6 +401,12 @@ def save_to_github(personalized_message, model_name, comment, corrected_message,
|
|
399 |
with gr.Blocks() as demo:
|
400 |
gr.Markdown("# Генерация SMS-сообщений по заданным признакам")
|
401 |
|
|
|
|
|
|
|
|
|
|
|
|
|
402 |
with gr.Row():
|
403 |
with gr.Column(scale=1):
|
404 |
description_input = gr.Textbox(
|
@@ -600,179 +608,4 @@ with gr.Blocks() as demo:
|
|
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()
|
|
|
76 |
return prompt
|
77 |
|
78 |
# Функции для генерации сообщений
|
79 |
+
def generate_message_gpt4o(prompt, temperature=1):
|
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 |
+
"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())
|
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(('.', '!', '?')):
|
|
|
401 |
with gr.Blocks() as demo:
|
402 |
gr.Markdown("# Генерация SMS-сообщений по заданным признакам")
|
403 |
|
404 |
+
# Добавление элементов управления температурой для каждой модели
|
405 |
+
gpt4o_temperature = gr.Slider(label="GPT-4o: temperature", minimum=0, maximum=2, step=0.01, value=1)
|
406 |
+
gigachat_pro_temperature = gr.Slider(label="GigaChat-Pro: temperature", minimum=0, maximum=2, step=0.01, value=0.87)
|
407 |
+
gigachat_lite_temperature = gr.Slider(label="GigaChat-Lite: temperature", minimum=0, maximum=2, step=0.01, value=0.87)
|
408 |
+
gigachat_plus_temperature = gr.Slider(label="GigaChat-Plus: temperature", minimum=0, maximum=2, step=0.01, value=0.87)
|
409 |
+
|
410 |
with gr.Row():
|
411 |
with gr.Column(scale=1):
|
412 |
description_input = gr.Textbox(
|
|
|
608 |
)
|
609 |
|
610 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
611 |
demo.launch()
|