riabayonaor's picture
Update app.py
ec324a4 verified
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-pro-latest')
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-pro-latest')
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)