File size: 2,183 Bytes
56f6374
5b568c0
8fcc99d
 
5b568c0
24ba3c2
 
 
 
 
 
 
 
 
 
 
 
1e2e8cd
 
24ba3c2
 
5b568c0
24ba3c2
5b568c0
24ba3c2
8fcc99d
24ba3c2
 
8fcc99d
24ba3c2
 
8fcc99d
24ba3c2
 
 
8fcc99d
24ba3c2
 
 
 
 
8fcc99d
24ba3c2
 
 
 
 
 
 
 
 
8ed9429
24ba3c2
5b568c0
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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()