File size: 1,361 Bytes
3a93742
ca69070
 
a198487
ca69070
3a93742
9ef96a3
ca69070
9ef96a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
from ingestion.pdf import process_pdf
from rag.pipeline import run_rag

vectorstore = None

def load_document(file):
    global vectorstore
    if file is None:
        return "Please upload a PDF file."
    try:
        vectorstore = process_pdf(file.name)
        return "✓ Document processed successfully."
    except Exception as e:
        return f"❌ Error: {str(e)}"

def ask(question):
    if vectorstore is None:
        return "⚠ Upload a document first", "", ""
    if not question.strip():
        return "⚠ Please enter a question", "", ""
    try:
        return run_rag(question, vectorstore)
    except Exception as e:
        return f"❌ Error: {str(e)}", "", ""

with gr.Blocks() as demo:
    gr.Markdown("# Tech Explainer — RAG with Automatic Evaluation")

    file = gr.File(label="Upload PDF", file_types=[".pdf"])
    load_btn = gr.Button("Process PDF")
    status = gr.Textbox(label="Status")

    gr.Markdown("---")

    question = gr.Textbox(label="Question")
    ask_btn = gr.Button("Ask")

    answer = gr.Textbox(label="Answer", lines=5)
    sources = gr.Textbox(label="Sources", lines=2)
    evaluation = gr.Textbox(label="Evaluation", lines=3)

    load_btn.click(load_document, inputs=file, outputs=status)
    ask_btn.click(ask, inputs=question, outputs=[answer, sources, evaluation])

demo.launch()