Spaces:
Build error
Build error
Update app.py
Browse files
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 |
-
|
| 33 |
-
|
| 34 |
-
# Configura el idioma de Wikipedia
|
| 35 |
-
wikipedia.set_lang("es") # Español
|
| 36 |
-
|
| 37 |
-
def get_species_info():
|
| 38 |
try:
|
| 39 |
-
|
| 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
|
| 45 |
-
return "Hay muchos temas relacionados
|
| 46 |
except wikipedia.exceptions.PageError:
|
| 47 |
-
return "No encontré información sobre ese tema en
|
| 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 |
-
#
|
| 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
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 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 |
-
#
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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",
|