Spaces:
Runtime error
Runtime error
Respuestas personalizadas
Browse files
app.py
CHANGED
|
@@ -15,9 +15,27 @@ documentos = [
|
|
| 15 |
"Para renovar un libro, debes ingresar al sistema antes de la fecha de vencimiento.",
|
| 16 |
"Se realizan talleres de lectura y escritura todos los miércoles a las 3 p.m.",
|
| 17 |
"Los libros extraviados deben ser reportados inmediatamente al personal de la biblioteca.",
|
| 18 |
-
"Los usuarios deben mantener el silencio dentro de las instalaciones."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
]
|
| 20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
# --- Cargar modelo de embeddings y crear índice FAISS ---
|
| 22 |
modelo_emb = SentenceTransformer('sentence-transformers/bert-base-nli-mean-tokens')
|
| 23 |
embeddings_docs = modelo_emb.encode(documentos, convert_to_numpy=True)
|
|
@@ -47,10 +65,16 @@ def respuesta_basica(texto):
|
|
| 47 |
|
| 48 |
# --- Función de chatbot con manejo de frases comunes ---
|
| 49 |
def chat_biblioteca(mensaje, historial=None):
|
|
|
|
|
|
|
| 50 |
respuesta_simple = respuesta_basica(mensaje)
|
| 51 |
if respuesta_simple:
|
| 52 |
return respuesta_simple
|
| 53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
# Respuesta con embeddings y QA
|
| 55 |
embedding = modelo_emb.encode([mensaje], convert_to_numpy=True)
|
| 56 |
D, I = index.search(embedding, k=2)
|
|
@@ -70,9 +94,9 @@ gr.ChatInterface(
|
|
| 70 |
title="📚 BiblioBot",
|
| 71 |
description="¡Bienvenido a BiblioBot! Pregunta sobre libros, horarios o servicios de biblioteca.",
|
| 72 |
examples=[
|
| 73 |
-
"¿
|
| 74 |
"¿Puedo comer dentro de la biblioteca?",
|
| 75 |
-
"¿
|
| 76 |
"hola",
|
| 77 |
"gracias"
|
| 78 |
],
|
|
|
|
| 15 |
"Para renovar un libro, debes ingresar al sistema antes de la fecha de vencimiento.",
|
| 16 |
"Se realizan talleres de lectura y escritura todos los miércoles a las 3 p.m.",
|
| 17 |
"Los libros extraviados deben ser reportados inmediatamente al personal de la biblioteca.",
|
| 18 |
+
"Los usuarios deben mantener el silencio dentro de las instalaciones.",
|
| 19 |
+
"Los préstamos interbibliotecarios permiten acceder a libros de otras sedes universitarias.",
|
| 20 |
+
"Puedes solicitar ayuda al bibliotecario para encontrar libros o hacer búsquedas avanzadas.",
|
| 21 |
+
"Se ofrecen capacitaciones sobre el uso de bases de datos académicas.",
|
| 22 |
+
"La biblioteca dispone de computadoras para uso estudiantil.",
|
| 23 |
+
"El acceso a Internet es gratuito dentro de la biblioteca.",
|
| 24 |
+
"Las impresiones tienen un costo y se solicitan en el módulo de servicios.",
|
| 25 |
+
"Puedes devolver los libros en el buzón de devoluciones fuera del horario.",
|
| 26 |
+
"Los libros de reserva solo se prestan por 2 horas dentro de la biblioteca.",
|
| 27 |
+
"Cada estudiante tiene un historial de préstamos en su cuenta institucional.",
|
| 28 |
+
"Las multas por retraso en la devolución se calculan por día hábil de retraso."
|
| 29 |
]
|
| 30 |
|
| 31 |
+
# --- Preguntas frecuentes personalizadas ---
|
| 32 |
+
faq_personalizadas = {
|
| 33 |
+
"con quien estoy hablando": "Estás hablando con BiblioBot, el asistente virtual de la biblioteca 📚.",
|
| 34 |
+
"quien eres": "Soy BiblioBot, un chatbot creado para ayudarte con preguntas sobre la biblioteca.",
|
| 35 |
+
"cuales son los horarios de la biblioteca": "La biblioteca abre de lunes a viernes de 8:00 a.m. a 6:00 p.m.",
|
| 36 |
+
"que categoria de libros hay": "Hay libros de ciencia, literatura, ingeniería, arte, historia, tecnología y muchos más."
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
# --- Cargar modelo de embeddings y crear índice FAISS ---
|
| 40 |
modelo_emb = SentenceTransformer('sentence-transformers/bert-base-nli-mean-tokens')
|
| 41 |
embeddings_docs = modelo_emb.encode(documentos, convert_to_numpy=True)
|
|
|
|
| 65 |
|
| 66 |
# --- Función de chatbot con manejo de frases comunes ---
|
| 67 |
def chat_biblioteca(mensaje, historial=None):
|
| 68 |
+
mensaje_limpio = mensaje.lower().strip()
|
| 69 |
+
|
| 70 |
respuesta_simple = respuesta_basica(mensaje)
|
| 71 |
if respuesta_simple:
|
| 72 |
return respuesta_simple
|
| 73 |
|
| 74 |
+
for clave in faq_personalizadas:
|
| 75 |
+
if clave in mensaje_limpio:
|
| 76 |
+
return faq_personalizadas[clave]
|
| 77 |
+
|
| 78 |
# Respuesta con embeddings y QA
|
| 79 |
embedding = modelo_emb.encode([mensaje], convert_to_numpy=True)
|
| 80 |
D, I = index.search(embedding, k=2)
|
|
|
|
| 94 |
title="📚 BiblioBot",
|
| 95 |
description="¡Bienvenido a BiblioBot! Pregunta sobre libros, horarios o servicios de biblioteca.",
|
| 96 |
examples=[
|
| 97 |
+
"¿Cual es el horario de la biblioteca?",
|
| 98 |
"¿Puedo comer dentro de la biblioteca?",
|
| 99 |
+
"¿Que pasa si pierdo un libro?",
|
| 100 |
"hola",
|
| 101 |
"gracias"
|
| 102 |
],
|