import streamlit as st from PIL import Image import google.generativeai as genai from gtts import gTTS import os import io # Configuración de la página de Streamlit st.set_page_config(page_title="🤖 Soph-IA", layout="wide") # Obtener la API key desde los secretos de Hugging Face api_key = st.secrets["API_KEY"] # Accede al secreto # Respuestas automatizadas basadas en palabras clave def respuestas_automatizadas(texto): texto = texto.lower() if "quién te creó" in texto or "quién es tu creador" in texto: return "Fui creada por un Bioingeniero llamado Jeysshon Bustos Jimenez, mi creador." if "quién eres" in texto or "qué eres" in texto: return "Soy Soph-IA, una inteligencia artificial avanzada basada en redes neuronales profundas y procesamiento de lenguaje natural." return None def procesar_texto(texto): respuesta_predefinida = respuestas_automatizadas(texto) if respuesta_predefinida: return respuesta_predefinida try: genai.configure(api_key=api_key) modelo = genai.GenerativeModel('gemini-1.5-pro-latest') respuesta = modelo.generate_content(texto) return respuesta.text except Exception as e: return "Hubo un error procesando tu solicitud. Por favor, recarga la página y vuelve a intentar." def procesar_imagen(imagen): try: genai.configure(api_key=api_key) modelo = genai.GenerativeModel('gemini-1.5-pro-latest') if isinstance(imagen, Image.Image): respuesta = modelo.generate_content(imagen) return respuesta.text else: return "La imagen no es del tipo esperado." except Exception as e: return "Hubo un error procesando la imagen. Por favor, recarga la página y vuelve a intentar." def hablar_texto(texto): try: tts = gTTS(text=texto, lang='es') tts.save("respuesta.mp3") os.system("mpg321 respuesta.mp3") except Exception as e: st.error("Hubo un error al generar el audio. Por favor, recarga la página y vuelve a intentar.") # Cargar y aplicar CSS personalizado with open("./style.css") as f: st.markdown(f"", unsafe_allow_html=True) # Título centrado st.markdown("

🤖 ¡Bienvenido a Soph-IA!

", unsafe_allow_html=True) # Explicación técnica de Soph-IA st.markdown("""

Soy Soph-IA, una inteligencia artificial basada en redes neuronales profundas, derivada de la arquitectura VGG16. Combino técnicas avanzadas de procesamiento de lenguaje natural y visión por computadora. Para el análisis de texto, utilizo transformadores que permiten comprender el contexto y generar respuestas precisas. En el caso de imágenes, empleo redes convolucionales para extraer características clave y ofrecer respuestas acordes a la información visual procesada.

""", unsafe_allow_html=True) espacio_contenido_generado = st.empty() st.write("¡Hola! Soy Soph-IA, tu asistente virtual. ¿Cómo puedo ayudarte hoy? 😊") col1, col2 = st.columns([1, 3]) with col1: tipo_entrada = st.selectbox("Selecciona el tipo de entrada", ["Haz una pregunta ❓", "🖼️ Subir imagen"]) with col2: if tipo_entrada == "Haz una pregunta ❓": entrada_texto = st.text_input("Ingresa tu pregunta aquí:") if entrada_texto: with st.spinner("Generando respuesta..."): resultado = procesar_texto(entrada_texto) espacio_contenido_generado.write(f"**Respuesta:** {resultado}") if st.button("🔊 Escuchar respuesta"): hablar_texto(resultado) elif tipo_entrada == "🖼️ Subir imagen": entrada_imagen = st.file_uploader("Sube una imagen", type=["jpg", "png", "jpeg"]) if entrada_imagen: imagen = Image.open(entrada_imagen) st.image(imagen, caption='Imagen subida.', use_column_width=True) with st.spinner("Procesando imagen..."): respuesta = procesar_imagen(imagen) espacio_contenido_generado.write(f"**Respuesta de la imagen:** {respuesta}") st.write("¡Gracias por usar Soph-IA! 😊") # Pie de página st.markdown("

© 2024 Jeysshon

", unsafe_allow_html=True)