Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -96,9 +96,10 @@ def process_file(file):
|
|
96 |
return None
|
97 |
|
98 |
try:
|
|
|
99 |
# Получаем расширение файла
|
100 |
file_extension = file.name.lower().split('.')[-1] if hasattr(file, 'name') else ''
|
101 |
-
|
102 |
# Список поддерживаемых форматов изображений
|
103 |
image_extensions = {'png', 'jpg', 'jpeg', 'gif', 'bmp', 'webp'}
|
104 |
|
@@ -278,7 +279,7 @@ def chat_response(message, history, model_name, direct_mode, thinking_depth=1.0,
|
|
278 |
for link in results:
|
279 |
info_text += f"Ссылка: {link}\n"
|
280 |
page_text = get_page_text(link)
|
281 |
-
info_text += f"Текст: {page_text}...\n\n"
|
282 |
|
283 |
search_response_prompt = f"""Вот информация по запросу "{prompt}":
|
284 |
|
@@ -297,8 +298,36 @@ def chat_response(message, history, model_name, direct_mode, thinking_depth=1.0,
|
|
297 |
final_response = final_response.replace(f"[SEARCH: {prompt}]", "").strip()
|
298 |
history.append({"role": "assistant", "content": final_response})
|
299 |
yield history, *[gr.update(visible=False) for _ in range(6)]
|
300 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
301 |
|
|
|
302 |
history[-1]["content"] = partial_message.strip()
|
303 |
yield history, *[gr.update(visible=True) for _ in range(6)]
|
304 |
|
@@ -344,7 +373,12 @@ def chat_response(message, history, model_name, direct_mode, thinking_depth=1.0,
|
|
344 |
|
345 |
partial_message = ""
|
346 |
code_block = None
|
347 |
-
|
|
|
|
|
|
|
|
|
|
|
348 |
|
349 |
if response and isinstance(response, str):
|
350 |
partial_message += response
|
@@ -803,12 +837,53 @@ def create_interface():
|
|
803 |
from {
|
804 |
opacity: 0;
|
805 |
transform: translateX(-10px);
|
806 |
-
}
|
807 |
to {
|
808 |
opacity: 1;
|
809 |
transform: translateX(0);
|
810 |
}
|
811 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
812 |
"""
|
813 |
|
814 |
# Добавте этот скрипт в create_interface()
|
@@ -849,7 +924,7 @@ def create_interface():
|
|
849 |
scale=1,
|
850 |
elem_classes="submit-btn"
|
851 |
)
|
852 |
-
clear = gr.Button("Очистить", scale=1)
|
853 |
|
854 |
with gr.Column(scale=1, visible=True) as sidebar:
|
855 |
model = gr.Dropdown(
|
@@ -917,11 +992,10 @@ def create_interface():
|
|
917 |
)
|
918 |
|
919 |
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
924 |
-
)
|
925 |
|
926 |
# Добавляем обработчик изменения модели
|
927 |
def update_thinking_depth_visibility(model_name):
|
|
|
96 |
return None
|
97 |
|
98 |
try:
|
99 |
+
# print()
|
100 |
# Получаем расширение файла
|
101 |
file_extension = file.name.lower().split('.')[-1] if hasattr(file, 'name') else ''
|
102 |
+
print(file_extension)
|
103 |
# Список поддерживаемых форматов изображений
|
104 |
image_extensions = {'png', 'jpg', 'jpeg', 'gif', 'bmp', 'webp'}
|
105 |
|
|
|
279 |
for link in results:
|
280 |
info_text += f"Ссылка: {link}\n"
|
281 |
page_text = get_page_text(link)
|
282 |
+
info_text += f"Текст: {page_text[:500]}...\n\n"
|
283 |
|
284 |
search_response_prompt = f"""Вот информация по запросу "{prompt}":
|
285 |
|
|
|
298 |
final_response = final_response.replace(f"[SEARCH: {prompt}]", "").strip()
|
299 |
history.append({"role": "assistant", "content": final_response})
|
300 |
yield history, *[gr.update(visible=False) for _ in range(6)]
|
301 |
+
|
302 |
+
if response and isinstance(response, str):
|
303 |
+
steps = response.split("[THINKING_STEP]")
|
304 |
+
final_answer = ""
|
305 |
+
|
306 |
+
for i, step in enumerate(steps):
|
307 |
+
if "[FINAL_ANSWER]" in step:
|
308 |
+
final_answer = step.split("[FINAL_ANSWER]")[1].strip()
|
309 |
+
step = step.split("[FINAL_ANSWER]")[0]
|
310 |
+
|
311 |
+
step_html = f"""
|
312 |
+
<div class="thinking-step-block">
|
313 |
+
<span class="thinking-step">Шаг {i + 1}: {step.strip()}</span>
|
314 |
+
</div>
|
315 |
+
"""
|
316 |
+
history[-1]["content"] += step_html
|
317 |
+
|
318 |
+
yield history, gr.update(visible=False)
|
319 |
+
|
320 |
+
# Добавляем финальный блок с заключением
|
321 |
+
final_html = f"""
|
322 |
+
<div class="final-answer-block">
|
323 |
+
<span class="thinking-conclusion">Ответ: {final_answer}</span>
|
324 |
+
</div>
|
325 |
+
"""
|
326 |
+
history[-1]["content"] += final_html
|
327 |
+
yield history, gr.update(visible=True)
|
328 |
+
return
|
329 |
|
330 |
+
|
331 |
history[-1]["content"] = partial_message.strip()
|
332 |
yield history, *[gr.update(visible=True) for _ in range(6)]
|
333 |
|
|
|
373 |
|
374 |
partial_message = ""
|
375 |
code_block = None
|
376 |
+
# response = g4f.ChatCompletion.create(
|
377 |
+
# model=AVAILABLE_MODELS.get(model_name, "O3"),
|
378 |
+
# messages=messages,
|
379 |
+
# stream=False,
|
380 |
+
# provider="PollinationsAI"
|
381 |
+
# )
|
382 |
|
383 |
if response and isinstance(response, str):
|
384 |
partial_message += response
|
|
|
837 |
from {
|
838 |
opacity: 0;
|
839 |
transform: translateX(-10px);
|
840 |
+
}
|
841 |
to {
|
842 |
opacity: 1;
|
843 |
transform: translateX(0);
|
844 |
}
|
845 |
}
|
846 |
+
.thinking-animation {
|
847 |
+
position: relative;
|
848 |
+
width: 100%;
|
849 |
+
min-height: 100px;
|
850 |
+
background: linear-gradient(45deg, #1a1a1a, #2d2d2d);
|
851 |
+
border-radius: 15px;
|
852 |
+
overflow: hidden;
|
853 |
+
margin: 10px 0;
|
854 |
+
padding: 20px;
|
855 |
+
border-left: 4px solid #4a90e2;
|
856 |
+
transition: all 0.3s ease;
|
857 |
+
}
|
858 |
+
|
859 |
+
.thinking-step {
|
860 |
+
color: #b0b0b0;
|
861 |
+
font-style: italic;
|
862 |
+
margin-bottom: 10px;
|
863 |
+
padding-left: 20px;
|
864 |
+
border-left: 2px solid #4a90e2;
|
865 |
+
opacity: 0;
|
866 |
+
transform: translateY(10px);
|
867 |
+
animation: fadeInStep 0.5s ease-in-out forwards;
|
868 |
+
}
|
869 |
+
|
870 |
+
.thinking-conclusion {
|
871 |
+
color: white;
|
872 |
+
font-weight: bold;
|
873 |
+
margin-top: 15px;
|
874 |
+
padding: 10px;
|
875 |
+
background: rgba(74, 144, 226, 0.1);
|
876 |
+
border-radius: 8px;
|
877 |
+
border-left: 4px solid #4a90e2;
|
878 |
+
}
|
879 |
+
|
880 |
+
@keyframes fadeInStep {
|
881 |
+
to {
|
882 |
+
opacity: 1;
|
883 |
+
transform: translateY(0);
|
884 |
+
}
|
885 |
+
}
|
886 |
+
|
887 |
"""
|
888 |
|
889 |
# Добавте этот скрипт в create_interface()
|
|
|
924 |
scale=1,
|
925 |
elem_classes="submit-btn"
|
926 |
)
|
927 |
+
# clear = gr.Button("Очистить", scale=1)
|
928 |
|
929 |
with gr.Column(scale=1, visible=True) as sidebar:
|
930 |
model = gr.Dropdown(
|
|
|
992 |
)
|
993 |
|
994 |
|
995 |
+
# clear.click(
|
996 |
+
# fn=lambda: (None, ""),
|
997 |
+
# outputs=[chatbot, current_code]
|
998 |
+
# )
|
|
|
999 |
|
1000 |
# Добавляем обработчик изменения модели
|
1001 |
def update_thinking_depth_visibility(model_name):
|