cha0smagick's picture
Update app.py
24ba3c2 verified
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()