fruitpicker01 commited on
Commit
12a8917
·
verified ·
1 Parent(s): bbe853f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +11 -178
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()