File size: 1,317 Bytes
00887f1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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

import gradio as gr
from dotenv import load_dotenv
from search import search_bm25, search_exact, prepare_data, merge_results
import os

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 = gr.CSVLogger(),
    flagging_options = ['Хорошая рекомендаация',
                        'Плохая рекомендаация'],
    title="Поисковая система BUDU",
)

iface.launch()