Spaces:
Sleeping
Sleeping
File size: 5,359 Bytes
24fd6de f94b855 a4b2610 1525caa fab17c8 a4b2610 7a0849d 5cc00c8 f94b855 3742d86 9bb3b0d 3742d86 1525caa 3742d86 fab17c8 63dba54 fab17c8 07136a1 fab17c8 63dba54 fab17c8 63dba54 7a0849d a4b2610 fab17c8 3742d86 9bb3b0d 3742d86 fab17c8 12c58a0 fab17c8 6a5823b fab17c8 6a5823b fab17c8 6a5823b fab17c8 a4b2610 7a0849d f94b855 7a0849d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
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()
|