import gradio as gr import logging from rag_core.business import build_index, rescan_index, answer_query, retriever, is_ready import os os.environ["SPACE_HOST"] = "https://vietcat-ragsample.hf.space" logging.info("🎨 Khởi tạo Gradio UI...") def handle_rebuild(): if retriever.index is None: logging.info("⚙️ Chưa có index, gọi build_index()") build_index() return "✅ Đã tạo mới FAISS index." else: logging.info("♻️ Đã có index, gọi rescan_index()") result = rescan_index() return result["status"] def handle_query(query): logging.info(f"📨 Người dùng gửi truy vấn: {query}") result = answer_query(query) return result.get("answer", result.get("error", "❌ Lỗi không xác định.")) with gr.Blocks(title="Luật Giao Thông RAG") as iface: gr.Markdown("## 📚 Trợ lý hỏi đáp văn bản luật") query_box = gr.Textbox(label="❓ Nhập câu hỏi", lines=2) answer_box = gr.Textbox(label="💬 Trả lời", lines=6) submit_btn = gr.Button("📤 Gửi câu hỏi") rebuild_btn = gr.Button("🔄 Rebuild Index") submit_btn.click(fn=handle_query, inputs=query_box, outputs=answer_box) rebuild_btn.click(fn=handle_rebuild, outputs=answer_box) app_ui = iface