Spaces:
Sleeping
Sleeping
File size: 1,386 Bytes
18ed8b2 00887f1 6d7e6be 18ed8b2 00887f1 3bdf307 00887f1 d479009 d895d2f 6d7e6be 00887f1 6d7e6be |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
#%%
import gradio as gr
from dotenv import load_dotenv
from search import search_bm25, search_exact, prepare_data, merge_results
import os
import json
import datetime
from datasets import load_dataset, Dataset
load_dotenv()
data = prepare_data()
HF_TOKEN = os.getenv('HF_TOKEN')
hf_writer = gr.HuggingFaceDatasetSaver(HF_TOKEN, "budu_search_data_new")
#%%
def search_handler(query: str):
results, exact_results = (
search_bm25(query, data),
search_exact(query, data)
)
json_results = merge_results(exact_results, results)
return {'results': json_results}
def create_ui(query):
recommendations = []
results = search_handler(query)
for result in results['results'][:5]:
recommendations.append(f"<div style='padding: 10px; border-bottom: 1px solid #ddd;'>{result['name']}</div>")
return gr.HTML(f"<div style='max-height: 400px; overflow-y: auto;'>{''.join(recommendations)}</div>")
iface = gr.Interface(
fn=create_ui,
inputs=gr.Textbox(label="Введите запрос"),
outputs=gr.HTML(), # Use HTML to render custom styled output,
allow_flagging='manual',
flagging_callback = hf_writer,
flagging_options = ['Хорошая рекомендаация',
'Плохая рекомендаация'],
title="Поисковая система BUDU",
)
iface.launch()
|