Spaces:
Sleeping
Sleeping
fruitpicker01
commited on
Commit
•
ef760c2
1
Parent(s):
81b9f1d
Update app.py
Browse files
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(
|