Lo que vas a construir
Una aplicacion web que entiende texto, imagenes, y audio. Todo en una sola interfaz con IA.
Escribes una pregunta, subes una foto, o grabas un audio, y la IA entiende y responde. Puedes preguntarle "que hay en esta imagen?", subir un PDF y pedir un resumen, o grabar tu voz para hacer preguntas.
Al terminar tendras una app con Streamlit que usa Gemini para procesar multiples tipos de entrada. Con historial de conversacion y una interfaz limpia que puedes desplegar en minutos.
El prompt para empezar
Crea una app Streamlit multimodal que:
- Acepte texto, imagen o audio como input
- Use Gemini para procesar todos los tipos
- Muestre respuesta formateada
- Guarde historial de conversacion
Lo que la IA creará
import streamlit as st
import google.generativeai as genai
from PIL import Image
import io
import os
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
model = genai.GenerativeModel("gemini-1.5-flash")
st.set_page_config(page_title="App Multimodal", page_icon="🎨")
st.title("🎨 App Multimodal con IA")
# Historial en session state
if "messages" not in st.session_state:
st.session_state.messages = []
# Mostrar historial
for msg in st.session_state.messages:
with st.chat_message(msg["role"]):
st.write(msg["content"])
if msg.get("image"):
st.image(msg["image"], width=300)
# Tabs para diferentes inputs
tab1, tab2, tab3 = st.tabs(["💬 Texto", "🖼️ Imagen", "🎤 Audio"])
with tab1:
text_input = st.text_area("Escribe tu mensaje:")
if st.button("Enviar texto"):
if text_input:
st.session_state.messages.append({
"role": "user",
"content": text_input
})
response = model.generate_content(text_input)
st.session_state.messages.append({
"role": "assistant",
"content": response.text
})
st.rerun()
with tab2:
uploaded_image = st.file_uploader(
"Sube una imagen:",
type=["png", "jpg", "jpeg"]
)
image_prompt = st.text_input("¿Qué quieres saber de la imagen?")
if st.button("Analizar imagen"):
if uploaded_image and image_prompt:
image = Image.open(uploaded_image)
st.session_state.messages.append({
"role": "user",
"content": image_prompt,
"image": image
})
response = model.generate_content([image_prompt, image])
st.session_state.messages.append({
"role": "assistant",
"content": response.text
})
st.rerun()
with tab3:
audio_file = st.file_uploader(
"Sube un audio:",
type=["mp3", "wav", "m4a"]
)
if st.button("Transcribir"):
if audio_file:
st.info("Transcripción con Whisper/Gemini próximamente")
# Botón limpiar
if st.button("🗑️ Limpiar historial"):
st.session_state.messages = []
st.rerun()
Ejecutar
pip install streamlit google-generativeai pillow
streamlit run app.py