| 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 | |