Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import os | |
| import requests | |
| # Token seguro desde variable de entorno | |
| API_TOKEN = os.getenv("HF_API_TOKEN") | |
| MODEL = "tiiuae/falcon-7b-instruct" | |
| HEADERS = {"Authorization": f"Bearer {API_TOKEN}"} | |
| # Respuestas fijas para preguntas importantes | |
| RESPUESTAS_FIJAS = { | |
| "hola": "¡Hola! 😊 Bienvenido a la biblioteca PUCEI. ¿En qué puedo ayudarte?", | |
| "saludos": "¡Saludos! Espero que tengas un buen día. ¿En qué puedo ayudarte?", | |
| "horario": "Nuestro horario es de lunes a viernes de 08:00 a 20:00, y sábados de 08:00 a 13:00.", | |
| "requerimiento": "Por favor, indica el tipo de requerimiento que deseas realizar.", | |
| "libros": "Puedes consultar los libros disponibles en nuestra biblioteca desde el catálogo en línea.", | |
| "ubicación": "La biblioteca PUCEI se encuentra en la sede principal, edificio central.", | |
| "contacto": "Puedes contactarnos al correo biblioteca@pucei.edu.ec o al teléfono (06) XXX-XXXX.", | |
| } | |
| # Detecta intención de la pregunta | |
| def detectar_intencion(texto): | |
| texto = texto.lower() | |
| for key, respuesta in RESPUESTAS_FIJAS.items(): | |
| if key in texto: | |
| return respuesta | |
| return None | |
| # Llamada a la API de Hugging Face | |
| def obtener_respuesta_api(texto): | |
| url = f"https://api-inference.huggingface.co/models/{MODEL}" | |
| data = {"inputs": texto} | |
| try: | |
| response = requests.post(url, headers=HEADERS, json=data) | |
| return response.json()[0]["generated_text"] | |
| except: | |
| return "Lo siento, no pude procesar tu mensaje en este momento." | |
| # Función principal del chatbot híbrido | |
| def chatbot_hibrido(message, history): | |
| respuesta_fija = detectar_intencion(message) | |
| if respuesta_fija: | |
| history.append((message, respuesta_fija)) | |
| return "", history | |
| respuesta_api = obtener_respuesta_api(message) | |
| history.append((message, respuesta_api.strip())) | |
| return "", history | |
| # Interfaz Gradio | |
| with gr.Blocks() as demo: | |
| gr.Markdown("## 🤖 Chatbot Biblioteca PUCEI (Híbrido con Hugging Face API)") | |
| chatbot_ui = gr.Chatbot() | |
| msg = gr.Textbox(placeholder="Escribe tu mensaje aquí...") | |
| clear = gr.Button("Limpiar conversación") | |
| msg.submit(chatbot_hibrido, [msg, chatbot_ui], [msg, chatbot_ui]) | |
| clear.click(lambda: [], None, chatbot_ui, queue=False) | |
| demo.launch() | |