fruitpicker01 commited on
Commit
46f46f2
1 Parent(s): ad07361

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -30
app.py CHANGED
@@ -660,10 +660,7 @@ def clean_prompt_for_display(prompt, prefixes, suffixes):
660
 
661
  # Функция для постепенной генерации всех сообщений через yield
662
  def generate_all_messages(desc, benefits, key_message, gender, generation, psychotype, business_stage, industry, opf):
663
- standard_prompt = generate_standard_prompt(desc, benefits, key_message)
664
- yield standard_prompt, None, None, None
665
-
666
- # Сопоставление названий подходов с префиксами и суффиксами
667
  approach_mapping = {
668
  "Указание на пользу": (
669
  "Начни сообщение с указания на пользу продукта. Используй глагол в побудительном наклонении.",
@@ -678,40 +675,34 @@ def generate_all_messages(desc, benefits, key_message, gender, generation, psych
678
  "Убедись, что готовый текст начинается с вопроса, который указывает на пользу продукта для клиента."
679
  )
680
  }
681
-
682
- # Получаем DataFrame подходов
683
  approaches_df = features.get("Подход", None)
684
-
685
  if approaches_df is None:
686
  gr.Warning("Таблица 'Подход' не найдена.")
687
  return
688
-
689
- # Создаем фильтры на основе выбранных параметров
690
  filters = []
691
  for param_name, param_value in [('Пол', gender), ('Поколение', generation), ('Психотип', psychotype)]:
692
  if param_value:
693
  filters.append(approaches_df[param_name].fillna('') == param_value)
694
  else:
695
  filters.append(approaches_df[param_name].isnull() | (approaches_df[param_name] == ''))
696
-
697
- # Применяем комбинированный фильтр
698
  combined_filter = filters[0]
699
  for f in filters[1:]:
700
  combined_filter &= f
701
-
702
  matching_rows = approaches_df[combined_filter]
703
-
704
  if matching_rows.empty:
705
  gr.Warning("Подход не найден для выбранных параметров.")
706
  return
707
-
708
- # Извлекаем уникальные подходы из отфильтрованных строк
709
  approach_set = set()
710
  for approaches in matching_rows['Подход']:
711
  approach_names = [a.strip() for a in approaches.split(',')]
712
  approach_set.update(approach_names)
713
-
714
- # Генерируем сообщения для каждого подхода
 
 
 
 
 
715
  non_personalized_messages = ''
716
  personalized_messages = ''
717
  flag = 1
@@ -726,7 +717,7 @@ def generate_all_messages(desc, benefits, key_message, gender, generation, psych
726
  )
727
  display_personalization_prompt = clean_prompt_for_display(personalization_prompt, [current_prefix], [current_suffix])
728
  if flag == 1:
729
- yield standard_prompt, display_personalization_prompt, None, None
730
  flag += 1
731
  prompt = add_prefix_suffix(standard_prompt, current_prefix, current_suffix)
732
  non_personalized_message = generate_message_mistral_with_retry(prompt, approach_name, desc, key_message)
@@ -737,7 +728,7 @@ def generate_all_messages(desc, benefits, key_message, gender, generation, psych
737
  else:
738
  non_personalized_messages = non_personalized_display
739
  yield (
740
- standard_prompt, display_personalization_prompt,
741
  non_personalized_messages, personalized_messages
742
  )
743
  full_personalized_prompt = f"{personalization_prompt}\n\nТекст для адаптации: {non_personalized_message}"
@@ -749,7 +740,7 @@ def generate_all_messages(desc, benefits, key_message, gender, generation, psych
749
  else:
750
  personalized_messages = personalized_display
751
  yield (
752
- standard_prompt, display_personalization_prompt,
753
  non_personalized_messages, personalized_messages
754
  )
755
  time.sleep(1)
@@ -1641,14 +1632,16 @@ with gr.Blocks() as demo:
1641
 
1642
  # Вкладка 2: Промпты
1643
  with gr.TabItem("Ассистент", id=1):
 
1644
  with gr.Row():
1645
  with gr.Column():
1646
  non_personalized_prompt = gr.Textbox(
1647
- label="Задание для копирайтера",
1648
- lines=25,
1649
  interactive=False)
1650
  with gr.Column():
1651
- personalized_prompt = gr.Textbox(label="Задание для редактора", lines=25) # Увеличенная высота
 
1652
 
1653
  # Вкладка 3: Сообщения
1654
  with gr.TabItem("Сообщения", id=2):
@@ -1662,15 +1655,16 @@ with gr.Blocks() as demo:
1662
 
1663
  # Сначала переключаем вкладку, потом запускаем генерацию сообщений
1664
  btn_to_prompts.click(
1665
- fn=change_tab,
1666
- inputs=[gr.Number(value=1, visible=False)], # Переключение на вкладку "Ассистент" (id=1)
1667
- outputs=tabs # Обновляем вкладку
1668
  ).then(
1669
- fn=generate_all_messages,
1670
- inputs=[desc, benefits, key_message, gender, generation, psychotype, business_stage, industry, opf], # Входные текстовые поля
1671
  outputs=[
1672
- non_personalized_prompt, personalized_prompt, # Поля для задания копирайтера и редактора (на вкладке "Ассистент")
1673
- non_personalized_messages, personalized_messages # Сообщения на вкладке "Сообщения"
 
1674
  ]
1675
  )
1676
 
 
660
 
661
  # Функция для постепенной генерации всех сообщений через yield
662
  def generate_all_messages(desc, benefits, key_message, gender, generation, psychotype, business_stage, industry, opf):
663
+ # Определение подходов
 
 
 
664
  approach_mapping = {
665
  "Указание на пользу": (
666
  "Начни сообщение с указания на пользу продукта. Используй глагол в побудительном наклонении.",
 
675
  "Убедись, что готовый текст начинается с вопроса, который указывает на пользу продукта для клиента."
676
  )
677
  }
 
 
678
  approaches_df = features.get("Подход", None)
 
679
  if approaches_df is None:
680
  gr.Warning("Таблица 'Подход' не найдена.")
681
  return
 
 
682
  filters = []
683
  for param_name, param_value in [('Пол', gender), ('Поколение', generation), ('Психотип', psychotype)]:
684
  if param_value:
685
  filters.append(approaches_df[param_name].fillna('') == param_value)
686
  else:
687
  filters.append(approaches_df[param_name].isnull() | (approaches_df[param_name] == ''))
 
 
688
  combined_filter = filters[0]
689
  for f in filters[1:]:
690
  combined_filter &= f
 
691
  matching_rows = approaches_df[combined_filter]
 
692
  if matching_rows.empty:
693
  gr.Warning("Подход не найден для выбранных параметров.")
694
  return
 
 
695
  approach_set = set()
696
  for approaches in matching_rows['Подход']:
697
  approach_names = [a.strip() for a in approaches.split(',')]
698
  approach_set.update(approach_names)
699
+ selected_approaches_text_content = "Выбранные подходы согласно рекомендациям Нейролаборатории: " + ', '.join(approach_set)
700
+
701
+ # Генерация стандартного задания
702
+ standard_prompt = generate_standard_prompt(desc, benefits, key_message)
703
+ yield selected_approaches_text_content, standard_prompt, None, None, None
704
+
705
+ # Инициализация переменных для сообщений
706
  non_personalized_messages = ''
707
  personalized_messages = ''
708
  flag = 1
 
717
  )
718
  display_personalization_prompt = clean_prompt_for_display(personalization_prompt, [current_prefix], [current_suffix])
719
  if flag == 1:
720
+ yield selected_approaches_text_content, standard_prompt, display_personalization_prompt, None, None
721
  flag += 1
722
  prompt = add_prefix_suffix(standard_prompt, current_prefix, current_suffix)
723
  non_personalized_message = generate_message_mistral_with_retry(prompt, approach_name, desc, key_message)
 
728
  else:
729
  non_personalized_messages = non_personalized_display
730
  yield (
731
+ selected_approaches_text_content, standard_prompt, display_personalization_prompt,
732
  non_personalized_messages, personalized_messages
733
  )
734
  full_personalized_prompt = f"{personalization_prompt}\n\nТекст для адаптации: {non_personalized_message}"
 
740
  else:
741
  personalized_messages = personalized_display
742
  yield (
743
+ selected_approaches_text_content, standard_prompt, display_personalization_prompt,
744
  non_personalized_messages, personalized_messages
745
  )
746
  time.sleep(1)
 
1632
 
1633
  # Вкладка 2: Промпты
1634
  with gr.TabItem("Ассистент", id=1):
1635
+ selected_approaches_text = gr.Markdown()
1636
  with gr.Row():
1637
  with gr.Column():
1638
  non_personalized_prompt = gr.Textbox(
1639
+ label="Задание для копирайтера",
1640
+ lines=23,
1641
  interactive=False)
1642
  with gr.Column():
1643
+ personalized_prompt = gr.Textbox(label="Задание для редактора", lines=23)
1644
+
1645
 
1646
  # Вкладка 3: Сообщения
1647
  with gr.TabItem("Сообщения", id=2):
 
1655
 
1656
  # Сначала переключаем вкладку, потом запускаем генерацию сообщений
1657
  btn_to_prompts.click(
1658
+ fn=change_tab,
1659
+ inputs=[gr.Number(value=1, visible=False)],
1660
+ outputs=tabs
1661
  ).then(
1662
+ fn=generate_all_messages,
1663
+ inputs=[desc, benefits, key_message, gender, generation, psychotype, business_stage, industry, opf],
1664
  outputs=[
1665
+ selected_approaches_text,
1666
+ non_personalized_prompt, personalized_prompt,
1667
+ non_personalized_messages, personalized_messages
1668
  ]
1669
  )
1670