Jarbot.Beta / app.py
ValValFunny's picture
Update app.py
9bb3b0d verified
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&current_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()