chatbotbiblio / app.py
Javier1987's picture
Update app.py
e8d53b4 verified
Raw
History Blame Contribute Delete
2.32 kB
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()