fruitpicker01 commited on
Commit
9f22308
1 Parent(s): ac0dd59

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -42
app.py CHANGED
@@ -141,14 +141,12 @@ def generate_standard_prompt(description, advantages, key_message, *selected_val
141
 
142
 
143
  # Функция для создания задания для редактора с добавлением prefix и suffix
144
- def generate_personalization_prompt(key_message, prefix, suffix, *selected_values):
145
- prompt = f"{prefix}\nАдаптируй, не превышая длину сообщения в 250 знаков с пробелами, текст с учетом следующих особенностей:\n"
146
  gender, generation, psychotype = selected_values[0], selected_values[1], selected_values[2]
147
  combined_instruction = ""
148
  additional_instructions = ""
149
 
150
- print(f"Выбранные значения: Пол={gender}, Поколение={generation}, Психотип={psychotype}")
151
-
152
  # Проверяем, выбраны ли все три параметра: Пол, Поколение, Психотип
153
  if gender and generation and psychotype:
154
  # Получаем данные с листа "Пол Поколение Психотип"
@@ -158,19 +156,14 @@ def generate_personalization_prompt(key_message, prefix, suffix, *selected_value
158
  key = (gender, generation, psychotype)
159
  if key in sheet:
160
  combined_instruction = sheet[key]
161
- print(f"Найдена комбинированная инструкция: {combined_instruction}")
162
- else:
163
- print(f"Комбинированная инструкция для ключа {key} не найдена.")
164
 
165
  # Если не найдена комбинированная инструкция, добавляем индивидуальные инструкции
166
  if not combined_instruction:
167
- print("Добавляем индивидуальные инструкции для Пол, Поколение, Психотип.")
168
  for i, feature in enumerate(["Пол", "Поколение", "Психотип"]):
169
  if selected_values[i]:
170
  try:
171
  instruction = features[feature][selected_values[i]]
172
  additional_instructions += f"{instruction}\n"
173
- print(f"Добавлена инструкция из {feature}: {instruction}")
174
  except KeyError:
175
  return f"Ошибка: выбранное значение {selected_values[i]} не найдено в данных."
176
 
@@ -181,7 +174,6 @@ def generate_personalization_prompt(key_message, prefix, suffix, *selected_value
181
  try:
182
  instruction = features[feature][selected_values[i]]
183
  additional_instructions += f"{instruction}\n"
184
- print(f"Добавлена инструкция из {feature}: {instruction}")
185
  except KeyError:
186
  return f"Ошибка: выбранное значение {selected_values[i]} не найдено в данных."
187
 
@@ -191,9 +183,12 @@ def generate_personalization_prompt(key_message, prefix, suffix, *selected_value
191
  if additional_instructions:
192
  prompt += additional_instructions # Добавляем остальные инструкции
193
 
194
- prompt += f"\n{suffix}"
 
 
 
195
  prompt += f"\nУбедись, что в готовом тексте есть следующая ключевая информация: {key_message.strip()}"
196
-
197
  return prompt.strip()
198
 
199
 
@@ -206,13 +201,6 @@ def generate_all_messages(desc, benefits, key_message, gender, generation, psych
206
  # Небольшая пауза для демонстрации постепенной генерации
207
  time.sleep(1)
208
 
209
- # Генерация задания для редактора
210
- personalization_prompt = generate_personalization_prompt(key_message, gender, generation, psychotype, business_stage, industry, opf)
211
- yield standard_prompt, personalization_prompt, None, None, None, None, None, None
212
-
213
- # Небольшая пауза для демонстрации постепенной генерации
214
- time.sleep(1)
215
-
216
  # Варианты предложений для начала и конца
217
  prefixes = [
218
  "Начни сообщение с призыва к действию с продуктом.",
@@ -224,50 +212,54 @@ def generate_all_messages(desc, benefits, key_message, gender, generation, psych
224
  "Убедись, что готовый текст начинается с указания на пользу продукта и использования глагола в побудительном наклонении.",
225
  "Убедись, что готовый текст начинается с вопроса, который указывает на пользу продукта для клиента."
226
  ]
227
-
228
  non_personalized_messages = []
229
  personalized_messages = []
230
-
231
  # Генерация и постепенная подача каждого сообщения
232
  for i in range(3):
233
  # Генерация неперсонализированного сообщения
234
  prompt = add_prefix_suffix(standard_prompt, prefixes[i], suffixes[i])
235
  non_personalized_message = generate_message_gigachat_pro_with_retry(prompt)
236
- non_personalized_length = len(non_personalized_message) # Подсчитываем количество знаков
237
  non_personalized_display = f"{non_personalized_message}\n------\nКоличество знаков: {non_personalized_length}"
238
  non_personalized_messages.append(non_personalized_display)
239
-
240
- # Выводим неперсонализированное сообщение
 
 
 
 
 
 
241
  yield (
242
- standard_prompt, personalization_prompt, # Задания для копирайтера и редактора
243
- non_personalized_messages[0] if i >= 0 else None, # Первое неперсонализированное сообщение
244
- personalized_messages[0] if len(personalized_messages) > 0 else None, # Первое персонализированное сообщение, если оно уже есть
245
- non_personalized_messages[1] if i >= 1 else None, # Второе неперсонализированное сообщение
246
- personalized_messages[1] if len(personalized_messages) > 1 else None, # Второе персонализированное сообщение, если оно уже есть
247
- non_personalized_messages[2] if i >= 2 else None, # Третье неперсонализированное сообщение
248
- personalized_messages[2] if len(personalized_messages) > 2 else None # Третье персонализированное сообщение, если оно уже есть
249
  )
250
-
251
  # Генерация персонализированного сообщения
252
- personalization_prompt = add_prefix_suffix(standard_prompt, prefixes[i], suffixes[i])
253
  full_personalized_prompt = f"{personalization_prompt}\n\nТекст для адаптации: {non_personalized_message}"
254
  personalized_message = generate_message_gigachat_pro_with_retry(full_personalized_prompt)
255
- personalized_length = len(personalized_message) # Подсчитываем количество знаков
256
  personalized_display = f"{personalized_message}\n------\nКоличество знаков: {personalized_length}"
257
  personalized_messages.append(personalized_display)
258
 
259
  # Выводим персонализированное сообщение
260
  yield (
261
- standard_prompt, personalization_prompt, # Задания для копирайтера и редактора
262
- non_personalized_messages[0] if len(non_personalized_messages) > 0 else None, # Первое неперсонализированное сообщение
263
- personalized_messages[0] if len(personalized_messages) > 0 else None, # Первое персонализированное сообщение
264
- non_personalized_messages[1] if len(non_personalized_messages) > 1 else None, # Второе неперсонализированное сообщение
265
- personalized_messages[1] if len(personalized_messages) > 1 else None, # Второе персонализированное сообщение
266
- non_personalized_messages[2] if len(non_personalized_messages) > 2 else None, # Третье неперсонализированное сообщение
267
- personalized_messages[2] if len(personalized_messages) > 2 else None # Третье персонализированное сообщение
268
  )
269
 
270
- # Небольшая пауза между выводом каждого сообщения
271
  time.sleep(1)
272
 
273
 
 
141
 
142
 
143
  # Функция для создания задания для редактора с добавлением prefix и suffix
144
+ def generate_personalization_prompt(key_message, *selected_values, prefix, suffix):
145
+ prompt = "Адаптируй, не превышая длину сообщения в 250 знаков с пробелами, текст с учетом следующих особенностей:\n"
146
  gender, generation, psychotype = selected_values[0], selected_values[1], selected_values[2]
147
  combined_instruction = ""
148
  additional_instructions = ""
149
 
 
 
150
  # Проверяем, выбраны ли все три параметра: Пол, Поколение, Психотип
151
  if gender and generation and psychotype:
152
  # Получаем данные с листа "Пол Поколение Психотип"
 
156
  key = (gender, generation, psychotype)
157
  if key in sheet:
158
  combined_instruction = sheet[key]
 
 
 
159
 
160
  # Если не найдена комбинированная инструкция, добавляем индивидуальные инструкции
161
  if not combined_instruction:
 
162
  for i, feature in enumerate(["Пол", "Поколение", "Психотип"]):
163
  if selected_values[i]:
164
  try:
165
  instruction = features[feature][selected_values[i]]
166
  additional_instructions += f"{instruction}\n"
 
167
  except KeyError:
168
  return f"Ошибка: выбранное значение {selected_values[i]} не найдено в данных."
169
 
 
174
  try:
175
  instruction = features[feature][selected_values[i]]
176
  additional_instructions += f"{instruction}\n"
 
177
  except KeyError:
178
  return f"Ошибка: выбранное значение {selected_values[i]} не найдено в данных."
179
 
 
183
  if additional_instructions:
184
  prompt += additional_instructions # Добавляем остальные инструкции
185
 
186
+ # Добавляем префикс и суффикс для задания редактора
187
+ prompt = f"{prefix}\n{prompt}\n{suffix}"
188
+
189
+ # Добавляем ключевое сообщение
190
  prompt += f"\nУбедись, что в готовом тексте есть следующая ключевая информация: {key_message.strip()}"
191
+
192
  return prompt.strip()
193
 
194
 
 
201
  # Небольшая пауза для демонстрации постепенной генерации
202
  time.sleep(1)
203
 
 
 
 
 
 
 
 
204
  # Варианты предложений для начала и конца
205
  prefixes = [
206
  "Начни сообщение с призыва к действию с продуктом.",
 
212
  "Убедись, что готовый текст начинается с указания на пользу продукта и использования глагола в побудительном наклонении.",
213
  "Убедись, что готовый текст начинается с вопроса, который указывает на пользу продукта для клиента."
214
  ]
215
+
216
  non_personalized_messages = []
217
  personalized_messages = []
218
+
219
  # Генерация и постепенная подача каждого сообщения
220
  for i in range(3):
221
  # Генерация неперсонализированного сообщения
222
  prompt = add_prefix_suffix(standard_prompt, prefixes[i], suffixes[i])
223
  non_personalized_message = generate_message_gigachat_pro_with_retry(prompt)
224
+ non_personalized_length = len(non_personalized_message)
225
  non_personalized_display = f"{non_personalized_message}\n------\nКоличество знаков: {non_personalized_length}"
226
  non_personalized_messages.append(non_personalized_display)
227
+
228
+ # Генерация задания для редактора
229
+ personalization_prompt = generate_personalization_prompt(
230
+ key_message, gender, generation, psychotype, business_stage, industry, opf,
231
+ prefix=prefixes[i], suffix=suffixes[i]
232
+ )
233
+
234
+ # Выводим неперсонализированное сообщение и задание для редактора
235
  yield (
236
+ standard_prompt, personalization_prompt,
237
+ non_personalized_messages[0] if i >= 0 else None,
238
+ personalized_messages[0] if len(personalized_messages) > 0 else None,
239
+ non_personalized_messages[1] if i >= 1 else None,
240
+ personalized_messages[1] if len(personalized_messages) > 1 else None,
241
+ non_personalized_messages[2] if i >= 2 else None,
242
+ personalized_messages[2] if len(personalized_messages) > 2 else None
243
  )
244
+
245
  # Генерация персонализированного сообщения
 
246
  full_personalized_prompt = f"{personalization_prompt}\n\nТекст для адаптации: {non_personalized_message}"
247
  personalized_message = generate_message_gigachat_pro_with_retry(full_personalized_prompt)
248
+ personalized_length = len(personalized_message)
249
  personalized_display = f"{personalized_message}\n------\nКоличество знаков: {personalized_length}"
250
  personalized_messages.append(personalized_display)
251
 
252
  # Выводим персонализированное сообщение
253
  yield (
254
+ standard_prompt, personalization_prompt,
255
+ non_personalized_messages[0] if len(non_personalized_messages) > 0 else None,
256
+ personalized_messages[0] if len(personalized_messages) > 0 else None,
257
+ non_personalized_messages[1] if len(non_personalized_messages) > 1 else None,
258
+ personalized_messages[1] if len(personalized_messages) > 1 else None,
259
+ non_personalized_messages[2] if len(non_personalized_messages) > 2 else None,
260
+ personalized_messages[2] if len(personalized_messages) > 2 else None
261
  )
262
 
 
263
  time.sleep(1)
264
 
265