Spaces:
Build error
Build error
| import gradio as gr | |
| from transformers import pipeline | |
| from datetime import datetime | |
| import pytz | |
| import requests | |
| import wikipedia | |
| # Configura el idioma de Wikipedia | |
| wikipedia.set_lang("es") # Español | |
| # Crear el chatbot usando el modelo de transformers | |
| pipe = pipeline("text-generation", model="Isotonic/gpt-human-assistant") | |
| # Lista de malas palabras a filtrar | |
| malas_palabras = ["maldito", "estúpido", "imbécil", "tonto", "wn", "weon", "chucha", "mierda", "carajo", "wea", "ctm", "conchetumare"] # Puedes agregar más malas palabras aquí | |
| # Función para obtener el clima en Viña del Mar con Open-Meteo | |
| def get_weather(): | |
| url = "https://api.open-meteo.com/v1/forecast?latitude=-33.0153&longitude=-71.5503¤t_weather=true" | |
| response = requests.get(url) | |
| if response.status_code == 200: | |
| data = response.json() | |
| temp = data["current_weather"]["temperature"] | |
| windspeed = data["current_weather"]["windspeed"] | |
| return f"El clima es de {temp}°C con una velocidad de viento de {windspeed} km/h." | |
| else: | |
| return "Lo siento, no pude obtener el clima en este momento." | |
| # Función para filtrar malas palabras | |
| def filtrar_malas_palabras(texto): | |
| for palabra in malas_palabras: | |
| if palabra in texto.lower(): | |
| return True | |
| return False | |
| # Función para buscar en Wikipedia | |
| def buscar_wikipedia(consulta): | |
| try: | |
| summary = wikipedia.summary(consulta, sentences=2) | |
| return summary | |
| except wikipedia.exceptions.DisambiguationError: | |
| return "Hay muchos temas relacionados con esa búsqueda. ¿Podrías especificar más?" | |
| except wikipedia.exceptions.PageError: | |
| return "No encontré información sobre ese tema en Wikipedia." | |
| except Exception as e: | |
| return "Lo siento, ocurrió un error al buscar la información." | |
| # Función para obtener la respuesta del bot | |
| def get_response(user_input): | |
| # Filtrar malas palabras | |
| if filtrar_malas_palabras(user_input): | |
| return "Por favor, mantén un lenguaje respetuoso. No tolero las malas palabras." | |
| # Respuestas personalizadas | |
| respuestas_personalizadas = { | |
| "hola": "¡Hola, soy Jarbot! ¿Cómo puedo ayudarte hoy?", | |
| "horario": "El horario del Jardín Botánico es de 9:00 a 18:00 todos los días.", | |
| "actividades": "Hoy tenemos visitas guiadas, talleres de jardinería y un evento especial de conservación.", | |
| "especies": "El Jardín alberga una gran variedad de plantas y animales, como cactus, helechos, gansos, y más.", | |
| "reglas": "Por favor, no recojas plantas, respeta las áreas designadas y mantén limpio el Jardín.", | |
| "picnic": "¡Claro que sí! Contamos con áreas designadas para picnic.", | |
| "movilidad reducida": "Sí, el Jardín cuenta con caminos accesibles y rampas para todos.", | |
| "historia": "El Jardín Botánico fue fundado en 1951 y ha sido un espacio de conservación y educación desde entonces.", | |
| "clima": get_weather(), | |
| "hora": datetime.now(pytz.timezone("America/Santiago")).strftime('Son las %H:%M.'), | |
| "plantas": "Tenemos una gran variedad, desde árboles nativos hasta flores exóticas. ¿Te interesa alguna en particular?", | |
| "cactus": "Contamos con un bonito cactario con más de 680 ejemplares de cactus chilenos y centroamericanos.", | |
| "tu animal favorito": "¿Mi animal favorito? Creo que los patos, ¡cuack!", | |
| "tu propósito": "¡Soy el asistente del Jardín Botánico! Estoy aquí para ayudarte.", | |
| "donar": "Lo siento, no puedes donar especies al Jardín Botánico, ya que trabajamos en conservar las existentes.", | |
| "amigo": "¡Claro que sí, somos amigos! 😊", | |
| "recomendación": "Te recomiendo usar bloqueador solar y llevar agua, especialmente en días calurosos.", | |
| "basura": "Por favor, deposita la basura en los contenedores designados.", | |
| "patos": "Los patos están más adentro del Jardín. ¡Explora un poco para encontrarlos!", | |
| "queja": "Para quejas, contacta a la administración del Jardín. ¡Espero que no sea nada malo sobre mí! 🙃", | |
| "trabajas": "¡Trabajo para que tengas una experiencia increíble en el Jardín Botánico!" | |
| } | |
| # Verificar si hay una respuesta personalizada | |
| for clave, respuesta in respuestas_personalizadas.items(): | |
| if clave in user_input.lower(): | |
| return respuesta | |
| # Consultar en Wikipedia para temas relevantes | |
| temas_wikipedia = [ | |
| "fundación", | |
| "ubicación", | |
| "especies", | |
| "flora nativa", | |
| "conservación", | |
| "bosque esclerófilo", | |
| "flora mediterránea", | |
| "plantas endémicas", | |
| "biodiversidad en peligro de extinción", | |
| "restauración ecológica", | |
| "horticultura", | |
| "botánica aplicada", | |
| "programas de conservación" | |
| ] | |
| for tema in temas_wikipedia: | |
| if tema in user_input.lower(): | |
| return buscar_wikipedia(tema) | |
| # Si la entrada no coincide con nada | |
| return "Lo siento, no entendí bien la pregunta. ¿Podrías reformularla?" | |
| # Crear la interfaz con Gradio | |
| iface = gr.Interface(fn=get_response, inputs="text", outputs="text", | |
| title="Asistente Virtual", description="¡Escribe algo para interactuar con el asistente!") | |
| # Lanzar la interfaz | |
| iface.launch() | |