fruitpicker01 commited on
Commit
ef760c2
1 Parent(s): 81b9f1d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +83 -0
app.py CHANGED
@@ -49,6 +49,74 @@ for sheet_name, df in data.items():
49
  print(f"Ошибка при обработке данных листа {sheet_name}: {e}")
50
  features[sheet_name] = {}
51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  # Функция для генерации стандартного промпта
53
  def generate_standard_prompt(description, advantages, *selected_values):
54
  prompt = (
@@ -298,6 +366,9 @@ def generate_message_mistral_with_retry(prompt):
298
 
299
 
300
  def generate_messages(description, advantages, *selected_values):
 
 
 
301
  standard_prompt = generate_standard_prompt(description, advantages, *selected_values)
302
 
303
  results = {
@@ -499,6 +570,9 @@ def personalize_messages_with_yield(
499
  mistral_message,
500
  *selected_values
501
  ):
 
 
 
502
  personalization_prompt = generate_personalization_prompt(*selected_values)
503
  yield personalization_prompt, "", "", "", "", "", "", "", "", "", ""
504
 
@@ -720,6 +794,9 @@ with gr.Blocks() as demo:
720
  submit_btn = gr.Button("1. Создать неперсонализированное сообщение")
721
  personalize_btn = gr.Button("2. Выполнить персонализацию (нажимать только после кнопки 1)", elem_id="personalize_button")
722
 
 
 
 
723
  # Первый ряд
724
  with gr.Row():
725
  output_text_gpt4o = gr.Textbox(label="Неперсонализированное сообщение GPT-4o", lines=3, interactive=False)
@@ -849,6 +926,12 @@ with gr.Blocks() as demo:
849
  ]
850
  )
851
 
 
 
 
 
 
 
852
 
853
  # Привязка кнопок к функциям сохранения
854
  save_gpt4o_btn.click(
 
49
  print(f"Ошибка при обработке данных листа {sheet_name}: {e}")
50
  features[sheet_name] = {}
51
 
52
+
53
+ def save_user_request_to_github(description, advantages, personalization_params):
54
+ # Собираем все данные в один словарь
55
+ data_to_save = {
56
+ "description": description,
57
+ "advantages": advantages,
58
+ "personalization_params": personalization_params,
59
+ "timestamp": time.time()
60
+ }
61
+
62
+ # Преобразуем контент в JSON-строку и кодируем в base64
63
+ file_content_encoded = base64.b64encode(json.dumps(data_to_save).encode()).decode()
64
+
65
+ # Параметры для GitHub API
66
+ repo = "fruitpicker01/Storage_dev"
67
+ path = f"user_request_{int(time.time())}.json"
68
+ url = f"https://api.github.com/repos/{repo}/contents/{path}"
69
+ headers = {
70
+ "Authorization": f"token {token}",
71
+ "Content-Type": "application/json"
72
+ }
73
+ data = {
74
+ "message": f"Добавлен новый файл {path}",
75
+ "content": file_content_encoded
76
+ }
77
+
78
+ # Отправка POST-запроса на GitHub API для создания файла в репозитории
79
+ response = requests.put(url, headers=headers, data=json.dumps(data))
80
+ if response.status_code == 201:
81
+ print("Данные успешно сохранены на GitHub")
82
+ else:
83
+ print(f"Ошибка при сохранении данных на GitHub: {response.status_code} {response.text}")
84
+
85
+ def load_last_user_request_from_github():
86
+ repo = "fruitpicker01/Storage_dev"
87
+ url = f"https://api.github.com/repos/{repo}/contents"
88
+ headers = {
89
+ "Authorization": f"token {token}",
90
+ "Content-Type": "application/json"
91
+ }
92
+
93
+ # Получаем список файлов в репозитории
94
+ response = requests.get(url, headers=headers)
95
+ if response.status_code == 200:
96
+ files = response.json()
97
+ json_files = [file for file in files if file['name'].startswith("user_request_")]
98
+
99
+ if not json_files:
100
+ print("Нет сохраненных запросов.")
101
+ return None
102
+
103
+ # Находим последний файл (по времени создания)
104
+ last_file = max(json_files, key=lambda x: x['name'])
105
+ file_url = last_file['download_url']
106
+
107
+ # Загружаем и декодируем содержимое файла
108
+ file_response = requests.get(file_url)
109
+ if file_response.status_code == 200:
110
+ data = json.loads(file_response.text)
111
+ return data
112
+ else:
113
+ print(f"Ошибка при загрузке файла: {file_response.status_code}")
114
+ return None
115
+ else:
116
+ print(f"Ошибка при обращении к GitHub: {response.status_code}")
117
+ return None
118
+
119
+
120
  # Функция для генерации стандартного промпта
121
  def generate_standard_prompt(description, advantages, *selected_values):
122
  prompt = (
 
366
 
367
 
368
  def generate_messages(description, advantages, *selected_values):
369
+
370
+ save_user_request_to_github(description, advantages, selected_values)
371
+
372
  standard_prompt = generate_standard_prompt(description, advantages, *selected_values)
373
 
374
  results = {
 
570
  mistral_message,
571
  *selected_values
572
  ):
573
+
574
+ save_user_request_to_github(gpt4o_message, gigachat_pro_message, selected_values)
575
+
576
  personalization_prompt = generate_personalization_prompt(*selected_values)
577
  yield personalization_prompt, "", "", "", "", "", "", "", "", "", ""
578
 
 
794
  submit_btn = gr.Button("1. Создать неперсонализированное сообщение")
795
  personalize_btn = gr.Button("2. Выполнить персонализацию (нажимать только после кнопки 1)", elem_id="personalize_button")
796
 
797
+ with gr.Row():
798
+ load_btn = gr.Button("Вернуть параметры последнего запроса")
799
+
800
  # Первый ряд
801
  with gr.Row():
802
  output_text_gpt4o = gr.Textbox(label="Неперсонализированное сообщение GPT-4o", lines=3, interactive=False)
 
926
  ]
927
  )
928
 
929
+ # Обработка клика по кнопке восстановления
930
+ load_btn.click(
931
+ fn=lambda: load_last_user_request_from_github(),
932
+ inputs=[],
933
+ outputs=[description_input, advantages_input, *selections]
934
+ )
935
 
936
  # Привязка кнопок к функциям сохранения
937
  save_gpt4o_btn.click(