antimoda1 commited on
Commit ·
be458aa
1
Parent(s): 96830f5
fix for gradio
Browse files
app.py
CHANGED
|
@@ -59,19 +59,26 @@ class Perform:
|
|
| 59 |
|
| 60 |
return self.scores, None, top_k_indices, f"Найдено {len(filtered_sorted)} результатов"
|
| 61 |
|
| 62 |
-
def format_retrieval_results(self,
|
| 63 |
-
if len(
|
| 64 |
return "Нет результатов"
|
| 65 |
|
| 66 |
-
texts = self.retrieval.paragraphs_df["texts"].iloc[top_k_indices]
|
| 67 |
-
return "\n\n".join(texts)
|
| 68 |
-
|
| 69 |
-
def format_selected_chunks(self, indices):
|
| 70 |
texts = self.retrieval.paragraphs_df["texts"].iloc[indices]
|
| 71 |
return "\n\n".join(texts)
|
| 72 |
|
| 73 |
perform = Perform()
|
| 74 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 75 |
|
| 76 |
def ask_llm(query, filtered_indices_state):
|
| 77 |
"""Этап 2: Отправка отфильтрованных чанков в LLM с потоковой выдачей"""
|
|
@@ -84,7 +91,7 @@ def ask_llm(query, filtered_indices_state):
|
|
| 84 |
return
|
| 85 |
|
| 86 |
# Форматируем контекст используя ту же функцию, что и в интерфейсе
|
| 87 |
-
context = perform.
|
| 88 |
|
| 89 |
if not context or context == "Нет валидных чанков":
|
| 90 |
yield "Нет валидных чанков для отправки"
|
|
@@ -190,22 +197,21 @@ with gr.Blocks(title="RAG Application", theme=gr.themes.Soft()) as iface:
|
|
| 190 |
|
| 191 |
# Обработчик поиска
|
| 192 |
search_btn.click(
|
| 193 |
-
fn=
|
| 194 |
inputs=[search_query_input, top_k_slider, year_from_input, year_to_input],
|
| 195 |
outputs=[all_scores_state, all_chunk_ids_state, top_k_indices_state, search_status]
|
| 196 |
).then(
|
| 197 |
-
fn=
|
| 198 |
inputs=[top_k_indices_state, top_k_slider],
|
| 199 |
outputs=[retrieval_results]
|
| 200 |
)
|
| 201 |
|
| 202 |
# Обработчик изменения слайдера top_k
|
| 203 |
top_k_slider.change(
|
| 204 |
-
fn=
|
| 205 |
inputs=[top_k_indices_state, top_k_slider],
|
| 206 |
outputs=[retrieval_results]
|
| 207 |
)
|
| 208 |
-
|
| 209 |
# Отправка в LLM с потоковой выдачей
|
| 210 |
llm_btn.click(
|
| 211 |
fn=ask_llm,
|
|
|
|
| 59 |
|
| 60 |
return self.scores, None, top_k_indices, f"Найдено {len(filtered_sorted)} результатов"
|
| 61 |
|
| 62 |
+
def format_retrieval_results(self, indices):
|
| 63 |
+
if len(indices) == 0:
|
| 64 |
return "Нет результатов"
|
| 65 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 66 |
texts = self.retrieval.paragraphs_df["texts"].iloc[indices]
|
| 67 |
return "\n\n".join(texts)
|
| 68 |
|
| 69 |
perform = Perform()
|
| 70 |
|
| 71 |
+
def ui_search(query, top_k, year_from, year_to):
|
| 72 |
+
return perform.perform_search(query, top_k, year_from, year_to)
|
| 73 |
+
|
| 74 |
+
|
| 75 |
+
def ui_format_results(indices, top_k):
|
| 76 |
+
if indices is None:
|
| 77 |
+
return "Нет результатов"
|
| 78 |
+
|
| 79 |
+
indices = indices[:top_k]
|
| 80 |
+
return perform.format_retrieval_results(indices)
|
| 81 |
+
|
| 82 |
|
| 83 |
def ask_llm(query, filtered_indices_state):
|
| 84 |
"""Этап 2: Отправка отфильтрованных чанков в LLM с потоковой выдачей"""
|
|
|
|
| 91 |
return
|
| 92 |
|
| 93 |
# Форматируем контекст используя ту же функцию, что и в интерфейсе
|
| 94 |
+
context = perform.format_retrieval_results(filtered_indices_state)
|
| 95 |
|
| 96 |
if not context or context == "Нет валидных чанков":
|
| 97 |
yield "Нет валидных чанков для отправки"
|
|
|
|
| 197 |
|
| 198 |
# Обработчик поиска
|
| 199 |
search_btn.click(
|
| 200 |
+
fn=ui_search,
|
| 201 |
inputs=[search_query_input, top_k_slider, year_from_input, year_to_input],
|
| 202 |
outputs=[all_scores_state, all_chunk_ids_state, top_k_indices_state, search_status]
|
| 203 |
).then(
|
| 204 |
+
fn=ui_format_results,
|
| 205 |
inputs=[top_k_indices_state, top_k_slider],
|
| 206 |
outputs=[retrieval_results]
|
| 207 |
)
|
| 208 |
|
| 209 |
# Обработчик изменения слайдера top_k
|
| 210 |
top_k_slider.change(
|
| 211 |
+
fn=ui_format_results,
|
| 212 |
inputs=[top_k_indices_state, top_k_slider],
|
| 213 |
outputs=[retrieval_results]
|
| 214 |
)
|
|
|
|
| 215 |
# Отправка в LLM с потоковой выдачей
|
| 216 |
llm_btn.click(
|
| 217 |
fn=ask_llm,
|