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 def procesar_texto(texto): genai.configure(api_key=api_key) modelo = genai.GenerativeModel('gemini-1.5-pro-latest') respuesta = modelo.generate_content(texto) return respuesta.text def procesar_imagen(imagen): genai.configure(api_key=api_key) modelo = genai.GenerativeModel('gemini-1.5-pro-latest') if isinstance(imagen, Image.Image): try: respuesta = modelo.generate_content(imagen) return respuesta.text except Exception as e: return f"Error al procesar la imagen: {e}" else: return "La imagen no es del tipo esperado." 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(f"Error al generar el audio: {e}") # 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) 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! 😊")