fruitpicker01 commited on
Commit
f7da65a
·
verified ·
1 Parent(s): 27276f3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -38
app.py CHANGED
@@ -253,11 +253,9 @@ def generate_message_with_retry(model_prompt):
253
  msg = clean_message(msg)
254
  length = len(msg)
255
  if 160 <= length <= 250:
256
- # Добавляем информацию о количестве знаков
257
  msg += f"\n\n------\nКоличество знаков: {length}"
258
  return msg
259
  last_message = msg
260
- # Если не удалось подобрать длину
261
  length = len(last_message)
262
  last_message += f"\n\n------\nКоличество знаков: {length}"
263
  return last_message
@@ -268,7 +266,8 @@ def update_prompts_on_params_change(description, product_name, benefits, key_mes
268
  prompt_1, prompt_2 = generate_display_prompts(description, product_name, benefits, key_message,
269
  chosen_approach, gender, generation, psychotype,
270
  business_stage, industry, opf)
271
- return chosen_approach, prompt_1, prompt_2
 
272
 
273
  def save_user_request_to_github(selected_product, description, product_name, benefits, key_message, approach, personalization_params):
274
  global current_request_index
@@ -313,7 +312,7 @@ def load_previous_user_request_from_github():
313
  json_files = [file for file in files if file['name'].startswith("user_request_")]
314
  if not json_files:
315
  print("Нет сохраненных запросов.")
316
- return "", "", "", "", "", None, None, None, None, None, None
317
  current_request_index -= 1
318
  if abs(current_request_index) > len(json_files):
319
  current_request_index = -len(json_files)
@@ -322,7 +321,7 @@ def load_previous_user_request_from_github():
322
  file_response = requests.get(file_url)
323
  if file_response.status_code == 200:
324
  data = json.loads(file_response.text)
325
- selected_product = data.get('selected_product', "")
326
  description = data.get('description', "")
327
  product_name = data.get('product_name', "")
328
  benefits = data.get('benefits', "")
@@ -331,13 +330,13 @@ def load_previous_user_request_from_github():
331
  personalization_params = data.get('personalization_params', [None]*6)
332
  if len(personalization_params) < 6:
333
  personalization_params += [None]*(6-len(personalization_params))
334
- return selected_product, description, product_name, benefits, key_message, approach, *personalization_params
335
  else:
336
  print(f"Ошибка при загрузке файла: {file_response.status_code}")
337
- return "", "", "", "", "", "", None, None, None, None, None
338
  else:
339
  print(f"Ошибка при обращении к GitHub: {response.status_code}")
340
- return "", "", "", "", "", "", None, None, None, None, None
341
 
342
  def generate_final_prompt_from_display(prompt_text, single_approach, is_prompt_1=True):
343
  prefix = approach_dict[single_approach]["prefix"]
@@ -348,9 +347,9 @@ def generate_final_prompt_from_display(prompt_text, single_approach, is_prompt_1
348
  f"\n{suffix}.\nУбедись, что УМЕСТНО использовал КАЖДЫЙ необходимый термин.\nУбедись, что в SMS без изменений, синонимов и перестановок слов используется наименование продукта:\nУбедись, что в SMS есть следующая ключевая информация:", prompt_text, flags=re.DOTALL)
349
  return prompt_text
350
 
351
- def generate_personalized_sms(description, product_name, benefits, key_message,
352
- gender, generation, psychotype, business_stage, industry, opf,
353
- chosen_approach, prompt_1, prompt_2):
354
  if "Для формирования промпта выберите хотя бы один личный персональный параметр" in prompt_1 or chosen_approach == "Подход не найден для выбранных параметров.":
355
  gr.Warning("Задайте хотя бы о��ин личный персональный параметр для определения подхода, чтобы был сформирован промпт")
356
  return "", ""
@@ -365,7 +364,12 @@ def generate_personalized_sms(description, product_name, benefits, key_message,
365
  sms_1 = generate_message_with_retry(final_prompt_1)
366
  sms_2 = generate_message_with_retry(final_prompt_2)
367
  personalization_params = [gender, generation, psychotype, business_stage, industry, opf]
 
 
368
 
 
 
 
369
 
370
  with gr.Blocks(theme="default") as demo:
371
  gr.Markdown("**Процент созданных SMS по выбранному продукту**")
@@ -412,7 +416,7 @@ with gr.Blocks(theme="default") as demo:
412
  gr.update(value=new_pname, interactive=(selected=="Свой продукт")),
413
  gr.update(value=new_ben, interactive=(selected=="Свой продукт")),
414
  gr.update(value=new_kmsg, interactive=(selected=="Свой продукт")),
415
- chosen_approach_val, p1, p2)
416
 
417
  with gr.Column(scale=1):
418
  gr.Markdown("**Клиент**")
@@ -464,40 +468,29 @@ with gr.Blocks(theme="default") as demo:
464
  gender_dropdown, generation_dropdown, psychotype_dropdown,
465
  business_stage_dropdown, industry_dropdown, opf_dropdown],
466
  outputs=[description, product_name, benefits, key_message,
467
- chosen_approach, prompt_1, prompt_2]
 
468
  )
469
 
 
 
 
 
 
 
 
470
  client_params = [gender_dropdown, generation_dropdown, psychotype_dropdown,
471
  business_stage_dropdown, industry_dropdown, opf_dropdown]
472
  for cp in client_params:
473
  cp.change(
474
- fn=update_prompts_on_params_change,
475
  inputs=[description, product_name, benefits, key_message,
476
  gender_dropdown, generation_dropdown, psychotype_dropdown,
477
  business_stage_dropdown, industry_dropdown, opf_dropdown],
478
- outputs=[chosen_approach, prompt_1, prompt_2]
 
479
  )
480
 
481
- def generate_personalized_sms_wrapper(selected_product, description, product_name, benefits, key_message,
482
- gender, generation, psychotype, business_stage, industry, opf,
483
- chosen_approach, prompt_1, prompt_2):
484
- if "Для формирования промпта выберите хотя бы один личный персональный параметр" in prompt_1 or chosen_approach == "Подход не найден для выбранных параметров.":
485
- gr.Warning("Задайте хотя бы один личный персональный параметр для определения подхода, чтобы был сформирован промпт")
486
- return "", ""
487
- approach_list = [a.strip() for a in chosen_approach.split(',') if a.strip()]
488
- if not approach_list:
489
- gr.Warning("Задайте хотя бы один личный персональный параметр для определения подхода, чтобы был сформирован промпт")
490
- return "", ""
491
- chosen_single_approach_1 = random.choice(approach_list) if len(approach_list) > 1 else approach_list[0]
492
- chosen_single_approach_2 = random.choice(approach_list) if len(approach_list) > 1 else approach_list[0]
493
- final_prompt_1 = generate_final_prompt_from_display(prompt_1, chosen_single_approach_1, is_prompt_1=True)
494
- final_prompt_2 = generate_final_prompt_from_display(prompt_2, chosen_single_approach_2, is_prompt_1=False)
495
- sms_1 = generate_message_with_retry(final_prompt_1)
496
- sms_2 = generate_message_with_retry(final_prompt_2)
497
- personalization_params = [gender, generation, psychotype, business_stage, industry, opf]
498
- save_user_request_to_github(selected_product, description, product_name, benefits, key_message, chosen_approach, personalization_params)
499
- return sms_1, sms_2
500
-
501
  create_personal_sms_btn.click(
502
  fn=generate_personalized_sms_wrapper,
503
  inputs=[product_dropdown, description, product_name, benefits, key_message,
@@ -510,7 +503,7 @@ with gr.Blocks(theme="default") as demo:
510
  def on_load_previous():
511
  loaded_data = load_previous_user_request_from_github()
512
  if not loaded_data or len(loaded_data) < 11:
513
- return (products[0], "", "", "", "", None, None, None, None, None, None, "", "", "")
514
  selected_product_val, description_val, product_name_val, benefits_val, key_message_val, approach_val = loaded_data[0], loaded_data[1], loaded_data[2], loaded_data[3], loaded_data[4], loaded_data[5]
515
  gender_val, generation_val, psychotype_val, business_stage_val, industry_val, opf_val = loaded_data[6:12]
516
  chosen_approach_val, p1, p2 = update_prompts_on_params_change(description_val, product_name_val, benefits_val, key_message_val,
@@ -518,7 +511,7 @@ with gr.Blocks(theme="default") as demo:
518
  business_stage_val, industry_val, opf_val)
519
  return (selected_product_val, description_val, product_name_val, benefits_val, key_message_val,
520
  gender_val, generation_val, psychotype_val, business_stage_val, industry_val, opf_val,
521
- chosen_approach_val, p1, p2)
522
 
523
  return_params_btn.click(
524
  fn=on_load_previous,
@@ -526,7 +519,8 @@ with gr.Blocks(theme="default") as demo:
526
  outputs=[product_dropdown, description, product_name, benefits, key_message,
527
  gender_dropdown, generation_dropdown, psychotype_dropdown,
528
  business_stage_dropdown, industry_dropdown, opf_dropdown,
529
- chosen_approach, prompt_1, prompt_2]
 
530
  )
531
 
532
  demo.queue().launch()
 
253
  msg = clean_message(msg)
254
  length = len(msg)
255
  if 160 <= length <= 250:
 
256
  msg += f"\n\n------\nКоличество знаков: {length}"
257
  return msg
258
  last_message = msg
 
259
  length = len(last_message)
260
  last_message += f"\n\n------\nКоличество знаков: {length}"
261
  return last_message
 
266
  prompt_1, prompt_2 = generate_display_prompts(description, product_name, benefits, key_message,
267
  chosen_approach, gender, generation, psychotype,
268
  business_stage, industry, opf)
269
+ # Очистка полей SMS и комментариев при изменении параметров
270
+ return chosen_approach, prompt_1, prompt_2, "", "", "", "", "", ""
271
 
272
  def save_user_request_to_github(selected_product, description, product_name, benefits, key_message, approach, personalization_params):
273
  global current_request_index
 
312
  json_files = [file for file in files if file['name'].startswith("user_request_")]
313
  if not json_files:
314
  print("Нет сохраненных запросов.")
315
+ return products[0], "", "", "", "", "", None, None, None, None, None, "", "", ""
316
  current_request_index -= 1
317
  if abs(current_request_index) > len(json_files):
318
  current_request_index = -len(json_files)
 
321
  file_response = requests.get(file_url)
322
  if file_response.status_code == 200:
323
  data = json.loads(file_response.text)
324
+ selected_product = data.get('selected_product', products[0])
325
  description = data.get('description', "")
326
  product_name = data.get('product_name', "")
327
  benefits = data.get('benefits', "")
 
330
  personalization_params = data.get('personalization_params', [None]*6)
331
  if len(personalization_params) < 6:
332
  personalization_params += [None]*(6-len(personalization_params))
333
+ return (selected_product, description, product_name, benefits, key_message, approach, *personalization_params)
334
  else:
335
  print(f"Ошибка при загрузке файла: {file_response.status_code}")
336
+ return products[0], "", "", "", "", "", None, None, None, None, None, "", "", ""
337
  else:
338
  print(f"Ошибка при обращении к GitHub: {response.status_code}")
339
+ return products[0], "", "", "", "", "", None, None, None, None, None, "", "", ""
340
 
341
  def generate_final_prompt_from_display(prompt_text, single_approach, is_prompt_1=True):
342
  prefix = approach_dict[single_approach]["prefix"]
 
347
  f"\n{suffix}.\nУбедись, что УМЕСТНО использовал КАЖДЫЙ необходимый термин.\nУбедись, что в SMS без изменений, синонимов и перестановок слов используется наименование продукта:\nУбедись, что в SMS есть следующая ключевая информация:", prompt_text, flags=re.DOTALL)
348
  return prompt_text
349
 
350
+ def generate_personalized_sms_wrapper(selected_product, description, product_name, benefits, key_message,
351
+ gender, generation, psychotype, business_stage, industry, opf,
352
+ chosen_approach, prompt_1, prompt_2):
353
  if "Для формирования промпта выберите хотя бы один личный персональный параметр" in prompt_1 or chosen_approach == "Подход не найден для выбранных параметров.":
354
  gr.Warning("Задайте хотя бы о��ин личный персональный параметр для определения подхода, чтобы был сформирован промпт")
355
  return "", ""
 
364
  sms_1 = generate_message_with_retry(final_prompt_1)
365
  sms_2 = generate_message_with_retry(final_prompt_2)
366
  personalization_params = [gender, generation, psychotype, business_stage, industry, opf]
367
+ save_user_request_to_github(selected_product, description, product_name, benefits, key_message, chosen_approach, personalization_params)
368
+ return sms_1, sms_2
369
 
370
+ def clear_sms_fields(chosen_approach, p1, p2):
371
+ # очистка sms_1, sms_2, comment_sms_1, comment_sms_2, corrected_sms_1, corrected_sms_2
372
+ return chosen_approach, p1, p2, "", "", "", "", "", ""
373
 
374
  with gr.Blocks(theme="default") as demo:
375
  gr.Markdown("**Процент созданных SMS по выбранному продукту**")
 
416
  gr.update(value=new_pname, interactive=(selected=="Свой продукт")),
417
  gr.update(value=new_ben, interactive=(selected=="Свой продукт")),
418
  gr.update(value=new_kmsg, interactive=(selected=="Свой продукт")),
419
+ chosen_approach_val, p1, p2, "", "", "", "", "", "")
420
 
421
  with gr.Column(scale=1):
422
  gr.Markdown("**Клиент**")
 
468
  gender_dropdown, generation_dropdown, psychotype_dropdown,
469
  business_stage_dropdown, industry_dropdown, opf_dropdown],
470
  outputs=[description, product_name, benefits, key_message,
471
+ chosen_approach, prompt_1, prompt_2,
472
+ sms_1, sms_2, comment_sms_1, comment_sms_2, corrected_sms_1, corrected_sms_2]
473
  )
474
 
475
+ def params_change_wrapper(description, product_name, benefits, key_message,
476
+ gender, generation, psychotype, business_stage, industry, opf):
477
+ chosen_approach_val, p1, p2 = update_prompts_on_params_change(description, product_name, benefits, key_message,
478
+ gender, generation, psychotype,
479
+ business_stage, industry, opf)
480
+ return chosen_approach_val, p1, p2, "", "", "", "", "", ""
481
+
482
  client_params = [gender_dropdown, generation_dropdown, psychotype_dropdown,
483
  business_stage_dropdown, industry_dropdown, opf_dropdown]
484
  for cp in client_params:
485
  cp.change(
486
+ fn=params_change_wrapper,
487
  inputs=[description, product_name, benefits, key_message,
488
  gender_dropdown, generation_dropdown, psychotype_dropdown,
489
  business_stage_dropdown, industry_dropdown, opf_dropdown],
490
+ outputs=[chosen_approach, prompt_1, prompt_2,
491
+ sms_1, sms_2, comment_sms_1, comment_sms_2, corrected_sms_1, corrected_sms_2]
492
  )
493
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
494
  create_personal_sms_btn.click(
495
  fn=generate_personalized_sms_wrapper,
496
  inputs=[product_dropdown, description, product_name, benefits, key_message,
 
503
  def on_load_previous():
504
  loaded_data = load_previous_user_request_from_github()
505
  if not loaded_data or len(loaded_data) < 11:
506
+ return (products[0], "", "", "", "", None, None, None, None, None, None, "", "", "", "", "", "")
507
  selected_product_val, description_val, product_name_val, benefits_val, key_message_val, approach_val = loaded_data[0], loaded_data[1], loaded_data[2], loaded_data[3], loaded_data[4], loaded_data[5]
508
  gender_val, generation_val, psychotype_val, business_stage_val, industry_val, opf_val = loaded_data[6:12]
509
  chosen_approach_val, p1, p2 = update_prompts_on_params_change(description_val, product_name_val, benefits_val, key_message_val,
 
511
  business_stage_val, industry_val, opf_val)
512
  return (selected_product_val, description_val, product_name_val, benefits_val, key_message_val,
513
  gender_val, generation_val, psychotype_val, business_stage_val, industry_val, opf_val,
514
+ chosen_approach_val, p1, p2, "", "", "")
515
 
516
  return_params_btn.click(
517
  fn=on_load_previous,
 
519
  outputs=[product_dropdown, description, product_name, benefits, key_message,
520
  gender_dropdown, generation_dropdown, psychotype_dropdown,
521
  business_stage_dropdown, industry_dropdown, opf_dropdown,
522
+ chosen_approach, prompt_1, prompt_2,
523
+ sms_1, sms_2, comment_sms_1, comment_sms_2, corrected_sms_1, corrected_sms_2]
524
  )
525
 
526
  demo.queue().launch()