crazy_bot / app.py
Wall06's picture
Update app.py
9653244 verified
import gradio as gr
from rag_engine import RAGEngine
engine = RAGEngine()
# ── Functions ─────────────────────────
def load_pdf(file):
if not file:
return "Upload file", gr.update(interactive=False)
return engine.load_pdf(file.name), gr.update(interactive=True)
def load_url(url):
if not url:
return "Enter URL", gr.update(interactive=False)
return engine.load_url(url), gr.update(interactive=True)
def load_text(text):
if not text:
return "Enter text", gr.update(interactive=False)
return engine.load_text(text), gr.update(interactive=True)
def chat(msg, history):
if not msg:
return history, ""
ans = engine.answer(msg)
history = history or []
history.append((msg, ans))
return history, ""
def reset():
engine.reset()
return [], "", "Reset done"
# ── UI ───────────────────────────────
with gr.Blocks(title="RAG Chatbot") as demo:
gr.Markdown("# πŸ€– RAG Chatbot")
with gr.Row():
with gr.Column():
pdf = gr.File()
btn_pdf = gr.Button("Load PDF")
url = gr.Textbox()
btn_url = gr.Button("Load URL")
text = gr.Textbox(lines=5)
btn_text = gr.Button("Load Text")
status = gr.Textbox(value="Load data", interactive=False)
with gr.Column():
chatbot = gr.Chatbot()
msg = gr.Textbox(
placeholder="Ask something...",
interactive=False
)
send = gr.Button("Send")
reset_btn = gr.Button("Reset")
btn_pdf.click(load_pdf, pdf, [status, msg])
btn_url.click(load_url, url, [status, msg])
btn_text.click(load_text, text, [status, msg])
send.click(chat, [msg, chatbot], [chatbot, msg])
msg.submit(chat, [msg, chatbot], [chatbot, msg])
reset_btn.click(reset, outputs=[chatbot, msg, status])
# βœ… IMPORTANT (Gradio 6 style)
demo.launch()