FelipeMena commited on
Commit
f15458a
·
verified ·
1 Parent(s): 8a30239

Respuestas personalizadas

Browse files
Files changed (1) hide show
  1. app.py +27 -3
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
- "¿Cuál es el horario de la biblioteca?",
74
  "¿Puedo comer dentro de la biblioteca?",
75
- "¿Qué pasa si pierdo un libro?",
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
  ],