fruitpicker01 commited on
Commit
f840ace
1 Parent(s): c15f0a1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +114 -0
app.py CHANGED
@@ -23,6 +23,105 @@ for sheet_name, df in data.items():
23
  print(f"Ошибка при обработке данных листа {sheet_name}: {e}")
24
  features[sheet_name] = {}
25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  # Функция для создания спидометра
27
  def create_gauge(value):
28
  fig = go.Figure(go.Indicator(
@@ -108,6 +207,21 @@ with gr.Blocks() as demo:
108
 
109
  btn_to_prompts = gr.Button("Создать")
110
  btn_to_prompts.click(fn=change_tab, inputs=[gr.Number(value=1, visible=False)], outputs=tabs)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
 
112
  # Вкладка 2: Промпты
113
  with gr.TabItem("Ассистент", id=1):
 
23
  print(f"Ошибка при обработке данных листа {sheet_name}: {e}")
24
  features[sheet_name] = {}
25
 
26
+ # Функция для генерации стандартного промпта
27
+ def generate_standard_prompt(description, advantages, key_message):
28
+ prompt = (
29
+ f"Сгенерируй смс-сообщение для клиента.\n"
30
+ f"Описание предложения: {description}\n"
31
+ f"Преимущества: {advantages}\n"
32
+ "В тексте смс запрещено использование:\n"
33
+ "- Запрещенные слова: № один, номер один, № 1, вкусный, дешёвый, продукт, спам, доступный, банкротство, долги, займ, срочно, сейчас, лучший, главный, номер 1, гарантия, успех, лидер;\n"
34
+ "- Обращение к клиенту;\n"
35
+ "- Приветствие клиента;\n"
36
+ "- Обещания и гарантии;\n"
37
+ "- Использовать составные конструкции из двух глаголов;\n"
38
+ "- Причастия и причастные обороты;\n"
39
+ "- Деепричастия и деепричастные обороты;\n"
40
+ "- Превосходная степень прилагательных;\n"
41
+ "- Страдательный залог;\n"
42
+ "- Порядковые числительные от 10 прописью;\n"
43
+ "- Цепочки с придаточными предложениями;\n"
44
+ "- Разделительные повторяющиеся союзы;\n"
45
+ "- Вводные конструкции;\n"
46
+ "- Усилители;\n"
47
+ "- Паразиты времени;\n"
48
+ "- Несколько существительных подряд, в том числе отглагольных;\n"
49
+ "- Производные предлоги;\n"
50
+ "- Сложные предложения, в которых нет связи между частями;\n"
51
+ "- Сложноподчинённые предложения;\n"
52
+ "- Даты прописью;\n"
53
+ "- Близкие по смыслу однородные члены предложения;\n"
54
+ "- Шокирующие, экстравагантные, кликбейтные фразы;\n"
55
+ "- Абстрактные заявления без поддержки фактами и отсутствие доказательства пользы для клиента;\n"
56
+ "- Гарантирующие фразы;\n"
57
+ "- Узкоспециализированные термины;\n"
58
+ "- Фразы, способные создать двойственное ощущение, обидеть;\n"
59
+ "- Речевые клише, рекламные штампы, канцеляризмы;\n"
60
+ "Убедись, что в готовом тексте до 250 знаков с пробелами.\n"
61
+ )
62
+ if key_message.strip():
63
+ prompt += f"Убедись, что в готовом тексте есть следующая ключевая информация: {key_message.strip()}"
64
+ return prompt.strip()
65
+
66
+
67
+ # Функция для генерации персонализированного промпта
68
+ def generate_personalization_prompt(key_message, *selected_values):
69
+ prompt = "Адаптируй, не превышая длину сообщения в 250 знаков с пробелами, текст с учетом следующих особенностей:\n"
70
+ gender, generation, psychotype = selected_values[0], selected_values[1], selected_values[2]
71
+ combined_instruction = ""
72
+ additional_instructions = ""
73
+
74
+ print(f"Выбранные значения: Пол={gender}, Поколение={generation}, Психотип={psychotype}")
75
+
76
+ # Проверяем, выбраны ли все три параметра: Пол, Поколение, Психотип
77
+ if gender and generation and psychotype:
78
+ # Получаем данные с листа "Пол Поколение Психотип"
79
+ sheet = features.get("Пол Поколение Психотип", {})
80
+
81
+ # Ищем ключ, соответствующий комбинации "Пол", "Поколение", "Психотип"
82
+ key = (gender, generation, psychotype)
83
+ if key in sheet:
84
+ combined_instruction = sheet[key]
85
+ print(f"Найдена комбинированная инструкция: {combined_instruction}")
86
+ else:
87
+ print(f"Комбинированная инструкция для ключа {key} не найдена.")
88
+
89
+ # Если не найдена комбинированная инструкция, добавляем индивидуальные инструкции
90
+ if not combined_instruction:
91
+ print("Добавляем индивидуальные инструкции для Пол, Поколение, Психотип.")
92
+ for i, feature in enumerate(["Пол", "Поколение", "Психотип"]):
93
+ if selected_values[i]:
94
+ try:
95
+ instruction = features[feature][selected_values[i]]
96
+ additional_instructions += f"{instruction}\n"
97
+ print(f"Добавлена инструкция из {feature}: {instruction}")
98
+ except KeyError:
99
+ return f"Ошибка: выбранное значение {selected_values[i]} не найдено в данных."
100
+
101
+ # Добавляем инструкции для остальных параметров (например, Отрасль)
102
+ for i, feature in enumerate(features.keys()):
103
+ if feature not in ["Пол", "Поколение", "Психотип", "Пол Поколение Психотип"]:
104
+ if i < len(selected_values) and selected_values[i]:
105
+ try:
106
+ instruction = features[feature][selected_values[i]]
107
+ additional_instructions += f"{instruction}\n"
108
+ print(f"Добавлена инструкция из {feature}: {instruction}")
109
+ except KeyError:
110
+ return f"Ошибка: выбранное значение {selected_values[i]} не найдено в данных."
111
+
112
+ # Формируем итоговый промпт
113
+ if combined_instruction:
114
+ prompt += combined_instruction # Добавляем комбинированную инструкцию, если она есть
115
+ if additional_instructions:
116
+ prompt += additional_instructions # Добавляем остальные инструкции
117
+
118
+ prompt += "Убедись, что в готовом тексте до 250 знаков с пробелами.\n"
119
+
120
+ prompt += f"Убедись, что в готовом тексте есть следующая ключевая информация: {key_message.strip()}"
121
+
122
+ return prompt.strip()
123
+
124
+
125
  # Функция для создания спидометра
126
  def create_gauge(value):
127
  fig = go.Figure(go.Indicator(
 
207
 
208
  btn_to_prompts = gr.Button("Создать")
209
  btn_to_prompts.click(fn=change_tab, inputs=[gr.Number(value=1, visible=False)], outputs=tabs)
210
+
211
+ # Добавляем генерацию стандартного промпта при клике
212
+ btn_to_prompts.click(
213
+ fn=generate_standard_prompt,
214
+ inputs=[desc, benefits, key_message],
215
+ outputs=[non_personalized_prompt]
216
+ )
217
+
218
+ # Добавляем генерацию персонализированного промпта при клике
219
+ btn_to_prompts.click(
220
+ fn=generate_personalization_prompt,
221
+ inputs=[key_message, gender, generation, psychotype, business_stage, industry, opf],
222
+ outputs=[personalized_prompt]
223
+ )
224
+
225
 
226
  # Вкладка 2: Промпты
227
  with gr.TabItem("Ассистент", id=1):