File size: 1,899 Bytes
4c0ae33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
49
50
51
52
import gradio as gr


def create_ui(rag_pipeline):
    with gr.Blocks() as demo:
        gr.Markdown("""# RAG QA System""")

        gr.Markdown("""
                **RAG (Retrieval-Augmented Generation)** система дозволяє:
                - Для джерела даних було використано першу книгу Гаррі Поттера із датасету HuggingFace (https://huggingface.co/datasets/prasad3458/Harry_Potter_Books)
                - Відповідь на запитання генерується на основі знайденого контексту з першої книги.
                - Дані перед обробкою чанкуються.
                - Присутній ретрівер та реранкер.
                - Використовується LiteLLM із Groq.

                **Як користуватись:**
                1. Введіть ваш API ключ LLM
                2. Оберіть режим пошуку (`bm25`, `semantic`, `both` або `off`)
                3. Напишіть запитання
                4. Натисніть **Ask**
                """)

        api_key = gr.Textbox(
            label="LLM API Key",
            placeholder="Paste your API key here",
            type="password"
        )

        query = gr.Textbox(label="Your question")

        search_mode = gr.Radio(
            ["bm25", "semantic", "both", "off"],
            value="both",
            label="Retrieval mode"
        )

        ask_btn = gr.Button("Ask")

        answer = gr.Textbox(label="Answer")
        context = gr.Textbox(
            label="Retrieved context",
            lines=10
        )

        ask_btn.click(
            rag_pipeline,
            inputs=[query, search_mode, api_key],
            outputs=[answer, context]
        )

    return demo