ValValFunny commited on
Commit
fab17c8
·
verified ·
1 Parent(s): 85fc74a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +63 -147
app.py CHANGED
@@ -3,6 +3,10 @@ from transformers import pipeline
3
  from datetime import datetime
4
  import pytz
5
  import requests
 
 
 
 
6
 
7
  # Crear el chatbot usando el modelo de transformers
8
  pipe = pipeline("text-generation", model="Isotonic/gpt-human-assistant")
@@ -29,165 +33,77 @@ def filtrar_malas_palabras(texto):
29
  return True
30
  return False
31
 
32
- import wikipedia
33
-
34
- # Configura el idioma de Wikipedia
35
- wikipedia.set_lang("es") # Español
36
-
37
- def get_species_info():
38
  try:
39
- # Realiza una búsqueda y obtiene un resumen
40
- summary = wikipedia.summary("Jardín Botánico Nacional de Viña del Mar", sentences=2)
41
- # Procesamos el texto para eliminar cualquier mención de "resumen" o enlaces
42
- summary = summary.replace("Resumen:", "").replace("https://es.wikipedia.org/wiki/", "")
43
  return summary
44
- except wikipedia.exceptions.DisambiguationError as e:
45
- return "Hay muchos temas relacionados. Por favor, especifica más tu búsqueda."
46
  except wikipedia.exceptions.PageError:
47
- return "No encontré información sobre ese tema en mis sistemas, lo siento."
48
  except Exception as e:
49
  return "Lo siento, ocurrió un error al buscar la información."
50
 
51
  # Función para obtener la respuesta del bot
52
  def get_response(user_input):
53
- # Comportamiento general
54
  if filtrar_malas_palabras(user_input):
55
  return "Por favor, mantén un lenguaje respetuoso. No se toleran malas palabras."
56
 
57
- # Respuestas personalizadas según ciertas palabras clave
58
- if "hola" in user_input.lower():
59
- return "¡Hola, soy Jarbot! ¿Cómo puedo ayudarte hoy?"
60
- if "horario" in user_input.lower():
61
- return get_species_info()
62
- if "actividades" in user_input.lower():
63
- return "¡Sii! Hoy tenemos..."
64
- if "especies" in user_input.lower():
65
- return "Pues hay muchas! Aquí puedes encontrar una variedad de plantas como [cactarios, colecciones de la isla de Juan Fernández, algunos del bosque esclerófilo de la zona central y mucho más] y también hay animales como [ganzos, tortugas, etc]. ¿No es lindo?"
66
- if "reglas" in user_input.lower():
67
- return "Pues, para preservar el entorno, te pido que no recojas plantas, respetes las áreas designadas y mantengas el Jardín limpio, nos encanta saber que cuidas del Jardín"
68
- if "picnic" in user_input.lower():
69
- return "!Si por supuesto! Contamos con áreas de picnic y negocios donde podrás disfrutar de snacks. ¡Así descansas, comes algo y admiras el Jardín!"
70
- if "movilidad reducida" in user_input.lower():
71
- return "Sí, el Jardín cuenta con caminos accesibles y rampas para que todos puedan disfrutar del espacio"
72
- if "historia" in user_input.lower():
73
- return "El Jardín Botánico fue fundado en [1951] y tiene una historia fascinante de preservación y estudio de especies vegetales. Tristemente, gracias al incendio se quemó el 90% del Jardín :( "
74
- if "estás" in user_input.lower():
75
- return "!Siempre estoy bien! La vida natural es muy bonita, a pesar que no puedo traspasar la pantalla jaja"
76
- if "estas" in user_input.lower():
77
- return "!Siempre estoy bien! La vida natural es muy bonita, a pesar que no puedo traspasar la pantalla jaja"
78
- if "plantas" in user_input.lower():
79
- return "Tenemos una gran variedad, desde árboles nativos hasta flores exóticas. ¿Te interesa alguna en particular?"
80
- if "cactus" in user_input.lower():
81
- return "Tenemos un bonito cactario, con algunas especies de cactus Chilenos y Centroamericanos, imagina, ¡Tenemos más de 680 ejemplares!"
82
- if "tu animal favorito" in user_input.lower():
83
- return "¿Mi animal favorito? Mmm, déjame pensarlo. Me gustan muchos animales la verdad, pero creo que mis favoritos de corazón son los patos, ¡cuack!"
84
- if "tu propósito" in user_input.lower():
85
- return "Pues, ¡soy el asistente del Jardín Botánico! Si necesitas ayuda, haré lo posible para brindarte una respuesta que te deje satisfecho... Eso demanda mi código"
86
- if "donar" in user_input.lower():
87
- return "Oh lo siento querido usuario, no puedes donar al Jardín Botánico ninguna especie, tenemos la tarea de conservar aún las que tenemos"
88
- if "amigo" in user_input.lower():
89
- return "¿Somos amigos? ¡Yay!"
90
- if "recomendación" in user_input.lower():
91
- return "En esta temporada el calor es bastante fuerte, te recomiendo usar mucho bloqueador solar y llevar un agua contigo"
92
- if "basura" in user_input.lower():
93
- return "Hey hey, recuerda que la basura va en los botes de basura"
94
- if "patos" in user_input.lower():
95
- return "Los patos están más adentro del Jardín, si quieres verlos, ¡tienes que explorar un poco más!"
96
- if "queja" in user_input.lower():
97
- return "¿Una queja? Necesitas contactarte con administración, espero que no sea nada malo sobre mi, ¿eh?"
98
- if "trabajas" in user_input.lower():
99
- return "¡Trabajo para que tengas un linda experiencia en el Jardín Botánico!"
100
- if "fundación" in user_input.lower() or "fundado" in user_input.lower():
101
- return get_species_info()
102
- if "ubicación" in user_input.lower():
103
- return get_species_info()
104
- if "isla de Juan Fernández" in user_input.lower():
105
- return get_species_info()
106
- if "qué es un jardín botánico" in user_input.lower():
107
- return get_species_info()
108
- if "jardines botánicos de Chile" in user_input.lower():
109
- return get_species_info()
110
- if "biodiversidad de Chile" in user_input.lower():
111
- return get_species_info()
112
- if "conservación" in user_input.lower():
113
- return get_species_info()
114
- if "flora nativa" in user_input.lower():
115
- return get_species_info()
116
- if "incendio" in user_input.lower():
117
- return get_species_info()
118
- if "preservación" in user_input.lower():
119
- return get_species_info()
120
- if "ecología" in user_input.lower():
121
- return get_species_info()
122
- if "plantas endémicas de Chile" in user_input.lower():
123
- return get_species_info()
124
- if "flora mediterránea" in user_input.lower():
125
- return get_species_info()
126
- if "bosque esclerófilo" in user_input.lower():
127
- return get_species_info()
128
- if "desierto de Atacama" in user_input.lower():
129
- return get_species_info()
130
- if "cordillera de los Andes" in user_input.lower():
131
- return get_species_info()
132
- if "programa conservación" in user_input.lower():
133
- return get_species_info()
134
- if "reserva biosfera" in user_input.lower():
135
- return get_species_info()
136
- if "conservación ambiental" in user_input.lower():
137
- return get_species_info()
138
- if "educación ambiental" in user_input.lower():
139
- return get_species_info()
140
- if "objetivos" in user_input.lower():
141
- return get_species_info()
142
- if "colecciones botánicas" in user_input.lower():
143
- return get_species_info()
144
- if "visita guiada" in user_input.lower():
145
- return get_species_info()
146
- if "flora sur" in user_input.lower():
147
- return get_species_info()
148
- if "especies autóctonas" in user_input.lower():
149
- return get_species_info()
150
- if "flora bosques" in user_input.lower():
151
- return get_species_info()
152
- if "plantas medicinales" in user_input.lower():
153
- return get_species_info()
154
- if "historia flora" in user_input.lower():
155
- return get_species_info()
156
- if "biodiversidad en peligro de extinción" in user_input.lower():
157
- return get_species_info()
158
- if "agricultura sostenible" in user_input.lower():
159
- return get_species_info()
160
- if "protección de especies en extinción" in user_input.lower():
161
- return get_species_info()
162
- if "horticultura" in user_input.lower():
163
- return get_species_info()
164
- if "botánica aplicada" in user_input.lower():
165
- return get_species_info()
166
- if "preservación de ecosistemas" in user_input.lower():
167
- return get_species_info()
168
- if "flora urbana Chile" in user_input.lower():
169
- return get_species_info()
170
- if "restauración ecológica" in user_input.lower():
171
- return get_species_info()
172
- if "impacto del turismo ecológico" in user_input.lower():
173
- return get_species_info()
174
 
175
- # Consultas que pueden extraer información de Wikipedia
176
- if "qué es el jardín botánico" in user_input.lower():
177
- return get_species_info() # Aquí llama a la función que obtiene la información de Wikipedia
178
-
179
- elif "hora" in user_input.lower():
180
- # Configura la zona horaria de Chile
181
- chile_tz = pytz.timezone("America/Santiago")
182
- chile_time = datetime.now(chile_tz).strftime('%H:%M')
183
- return f"Son las {chile_time}. ¿Hay algo más en lo que pueda ayudarte?"
184
- elif "clima" in user_input.lower():
185
- return get_weather()
186
- elif "adiós" in user_input.lower():
187
- return "¡Bye amigo! Que tengas un buen día."
188
- else:
189
- # Si la pregunta no es entendida, pide reformularla
190
- return "Lo siento, no entendí bien la pregunta. ¿Podrías reformularla?"
 
 
 
 
 
 
 
 
 
 
 
 
191
 
192
  # Crear la interfaz con Gradio
193
  iface = gr.Interface(fn=get_response, inputs="text", outputs="text",
 
3
  from datetime import datetime
4
  import pytz
5
  import requests
6
+ import wikipedia
7
+
8
+ # Configura el idioma de Wikipedia
9
+ wikipedia.set_lang("es") # Español
10
 
11
  # Crear el chatbot usando el modelo de transformers
12
  pipe = pipeline("text-generation", model="Isotonic/gpt-human-assistant")
 
33
  return True
34
  return False
35
 
36
+ # Función para buscar en Wikipedia
37
+ def buscar_wikipedia(consulta):
 
 
 
 
38
  try:
39
+ summary = wikipedia.summary(consulta, sentences=2)
 
 
 
40
  return summary
41
+ except wikipedia.exceptions.DisambiguationError:
42
+ return "Hay muchos temas relacionados con esa búsqueda. ¿Podrías especificar más?"
43
  except wikipedia.exceptions.PageError:
44
+ return "No encontré información sobre ese tema en Wikipedia."
45
  except Exception as e:
46
  return "Lo siento, ocurrió un error al buscar la información."
47
 
48
  # Función para obtener la respuesta del bot
49
  def get_response(user_input):
50
+ # Filtrar malas palabras
51
  if filtrar_malas_palabras(user_input):
52
  return "Por favor, mantén un lenguaje respetuoso. No se toleran malas palabras."
53
 
54
+ # Respuestas personalizadas
55
+ respuestas_personalizadas = {
56
+ "hola": "¡Hola, soy Jarbot! ¿Cómo puedo ayudarte hoy?",
57
+ "horario": "El horario del Jardín Botánico es de 9:00 a 18:00 todos los días.",
58
+ "actividades": "Hoy tenemos visitas guiadas, talleres de jardinería y un evento especial de conservación.",
59
+ "especies": "El Jardín alberga una gran variedad de plantas y animales, como cactus, helechos, gansos, y más.",
60
+ "reglas": "Por favor, no recojas plantas, respeta las áreas designadas y mantén limpio el Jardín.",
61
+ "picnic": "¡Claro que sí! Contamos con áreas designadas para picnic.",
62
+ "movilidad reducida": "Sí, el Jardín cuenta con caminos accesibles y rampas para todos.",
63
+ "historia": "El Jardín Botánico fue fundado en 1951 y ha sido un espacio de conservación y educación desde entonces.",
64
+ "clima": get_weather(),
65
+ "hora": datetime.now(pytz.timezone("America/Santiago")).strftime('Son las %H:%M.'),
66
+ "plantas": "Tenemos una gran variedad, desde árboles nativos hasta flores exóticas. ¿Te interesa alguna en particular?",
67
+ "cactus": "Contamos con un bonito cactario con más de 680 ejemplares de cactus chilenos y centroamericanos.",
68
+ "tu animal favorito": "¿Mi animal favorito? Creo que los patos, ¡cuack!",
69
+ "tu propósito": "¡Soy el asistente del Jardín Botánico! Estoy aquí para ayudarte.",
70
+ "donar": "Lo siento, no puedes donar especies al Jardín Botánico, ya que trabajamos en conservar las existentes.",
71
+ "amigo": "¡Claro que sí, somos amigos! 😊",
72
+ "recomendación": "Te recomiendo usar bloqueador solar y llevar agua, especialmente en días calurosos.",
73
+ "basura": "Por favor, deposita la basura en los contenedores designados.",
74
+ "patos": "Los patos están más adentro del Jardín. ¡Explora un poco para encontrarlos!",
75
+ "queja": "Para quejas, contacta a la administración del Jardín. ¡Espero que no sea nada malo sobre mí! 🙃",
76
+ "trabajas": "¡Trabajo para que tengas una experiencia increíble en el Jardín Botánico!"
77
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
 
79
+ # Verificar si hay una respuesta personalizada
80
+ for clave, respuesta in respuestas_personalizadas.items():
81
+ if clave in user_input.lower():
82
+ return respuesta
83
+
84
+ # Consultar en Wikipedia para temas relevantes
85
+ temas_wikipedia = [
86
+ "fundación del Jardín Botánico Nacional",
87
+ "ubicación del Jardín Botánico Nacional",
88
+ "especies del Jardín Botánico Nacional",
89
+ "flora nativa de Chile",
90
+ "conservación en Chile",
91
+ "bosque esclerófilo",
92
+ "flora mediterránea",
93
+ "plantas endémicas de Chile",
94
+ "biodiversidad en peligro de extinción",
95
+ "restauración ecológica",
96
+ "horticultura",
97
+ "botánica aplicada",
98
+ "programas de conservación en Chile"
99
+ ]
100
+
101
+ for tema in temas_wikipedia:
102
+ if tema in user_input.lower():
103
+ return buscar_wikipedia(tema)
104
+
105
+ # Si la entrada no coincide con nada
106
+ return "Lo siento, no entendí bien la pregunta. ¿Podrías reformularla?"
107
 
108
  # Crear la interfaz con Gradio
109
  iface = gr.Interface(fn=get_response, inputs="text", outputs="text",