import os import streamlit as st import google.generativeai as genai from PIL import Image import io # Configurar la API de Gemini api_key = os.getenv('GEMINI_API_KEY') genai.configure(api_key=api_key) # Función para generar contenido a partir de texto def generate_text(prompt): model = genai.GenerativeModel('gemini-1.5-flash') response = model.generate_content(prompt) return response.text # Función para generar contenido a partir de texto e imagen def generate_text_from_image(image, prompt): model = genai.GenerativeModel('gemini-1.5-flash') response = model.generate_content([prompt, image], stream=True) response.resolve() # Asegurarse de que la respuesta se resuelva antes de acceder a sus atributos return response.text # Configuración de la aplicación Streamlit st.title('Aplicación con Gemini Vision') st.write('Esta es una aplicación de demostración utilizando la API de Gemini Vision.') # Cargar imagen uploaded_file = st.file_uploader("Elige una imagen", type=["jpg", "jpeg", "png"]) if uploaded_file is not None: # Mostrar la imagen cargada image = Image.open(uploaded_file) st.image(image, caption='Imagen Cargada', use_column_width=True) # Texto de entrada del usuario prompt = st.text_input("Introduce el texto para generar la respuesta:") if st.button("Generar Respuesta"): # Convertir la imagen a bytes img_bytes = io.BytesIO() # Convertir la imagen a modo RGB si tiene transparencia if image.mode == 'RGBA': image = image.convert('RGB') image.save(img_bytes, format='JPEG') img_bytes = img_bytes.getvalue() # Generar respuesta a partir de la imagen y el texto try: response = generate_text_from_image(image, prompt) # Usar la imagen directamente st.markdown(response) except Exception as e: st.error(f"Error al generar respuesta: {e}") else: # Texto de entrada del usuario prompt = st.text_input("Introduce el texto para generar la respuesta:") if st.button("Generar Respuesta"): # Generar respuesta a partir del texto response = generate_text(prompt) st.markdown(response)