import streamlit as st from PIL import Image import textwrap import google.generativeai as genai # Función para mostrar texto formateado en Markdown def to_markdown(texto): texto = texto.replace('•', ' *') return textwrap.indent(texto, '> ', predicate=lambda _: True) # Función para generar contenido usando la API Gemini def generar_contenido_gemini(prompt, model_name='gemini-pro-vision', imagen=None): api_key = "AIzaSyCv30EVBXynJjSNZiYkKqc5xx1DovQEaQY" # Inserta tu API key aquí genai.configure(api_key=api_key) modelo = genai.GenerativeModel(model_name) if not imagen: st.warning("Por favor, agrega una imagen para usar el modelo gemini-pro-vision.") return None respuesta = modelo.generate_content([prompt, imagen]) return respuesta # App de Streamlit def main(): st.title("Demo de la API Gemini con Streamlit") # Obtener entrada de texto del usuario prompt = st.text_area("Ingresa tu indicación:") # Obtener entrada opcional de imagen imagen_archivo = st.file_uploader("Subir una imagen (si aplica):", type=["jpg", "jpeg", "png"]) # Mostrar imagen si se proporciona if imagen_archivo: st.image(imagen_archivo, caption="Imagen Subida", use_column_width=True) # Generar contenido al hacer clic en el botón if st.button("Generar Contenido"): st.markdown("### Contenido Generado:") if not imagen_archivo: st.warning("Por favor, proporciona una imagen para el modelo gemini-pro-vision.") else: imagen = Image.open(imagen_archivo) respuesta = generar_contenido_gemini(prompt, imagen=imagen) # Mostrar el contenido generado en formato Markdown si hay respuesta disponible if respuesta: if respuesta.candidates: partes = respuesta.candidates[0].content.parts texto_generado = partes[0].text if partes else "No se generó contenido." st.markdown(to_markdown(texto_generado)) else: st.warning("No se encontraron candidatos en la respuesta.") if __name__ == "__main__": main()