João Lima
updating app.py
9ef96a3
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()