import gradio as gr from rag_engine import recuperar_documentos, generar_respuesta, preguntar def ask(query, top_k, umbral): # Obtener documentos relevantes docs_recuperados = recuperar_documentos(query, top_k, umbral) # Generar respuesta usando la lógica del motor respuesta = generar_respuesta(query, docs_recuperados) # Formatear documentos para mostrarlos docs_formateados = "\n\n---\n\n".join(docs_recuperados) return respuesta, docs_formateados # Construcción de la Interfaz with gr.Blocks(title="RAG Hospital System") as demo: gr.Markdown("# 🏥 Hospital Q&A System (RAG)") gr.Markdown("Ask questions about contact details, hours, and services.") with gr.Row(): with gr.Column(): input_text = gr.Textbox(label="Question", placeholder="E.g., What are the working hours?", lines=2) slider_k = gr.Slider(minimum=1, maximum=5, value=5, step=1, label="Top K Documents") slider_threshold = gr.Slider(minimum=0.0, maximum=1.0, value=0.55, step=0.05, label="Similarity Threshold") btn = gr.Button("Send") with gr.Column(): output_answer = gr.Textbox(label="Generated Answer", lines=3) output_docs = gr.Textbox(label="Retrieved Context", lines=6, max_lines=15) # Evento de clic btn.click( fn=ask, inputs=[input_text, slider_k, slider_threshold], outputs=[output_answer, output_docs] ) if __name__ == "__main__": demo.launch()