🚀 Consideraciones para el uso Streamlit para Soluciones de IA
1. Ciclo de Vida: El Modelo de Ejecución
A diferencia de los frameworks web tradicionales (Django/Flask), Streamlit funciona bajo un paradigma de scripting lineal.
- El Re-run: Cada vez que un usuario interactúa con un widget (botón, slider, chat input), Streamlit vuelve a ejecutar todo el script de arriba abajo.
- Optimización con Caché: Para evitar recargar archivos pesados o reconectarte a la API en cada click, usamos decoradores:
| Decorador | Uso Principal | Ejemplo |
|---|---|---|
@st.cache_data | Almacenar objetos de datos (Dataframes, consultas SQL, CSV). | Leer el catálogo de productos. |
@st.cache_resource | Almacenar conexiones globales o modelos pesados (conexión a base de datos). | Cliente de OpenAI o conexión a base de datos vectorial. |
@st.cache_data
def cargar_inventario():
return pd.read_csv("ropa_deportiva.csv", sep=";")
2. Gestión de Estado (Session State)
Para un asistente virtual, el st.session_state es el componente más crítico. Es un diccionario persistente que sobrevive a los re-runs.
Implementación de memoria para Chatbot:
import streamlit as st
# Inicializar el historial si no existe
if "mensajes" not in st.session_state:
st.session_state.mensajes = []
# Guardar y mostrar mensajes
for m in st.session_state.mensajes:
with st.chat_message(m["role"]):
st.markdown(m["content"])
3. Componentes de UI y Layout Conversacional
Streamlit ha evolucionado para soportar interfaces de chat nativas.
- Layout: Usa
st.sidebarpara configuraciones (ej. selección de modelo o temperatura) yst.columnspara dashboards de métricas. - Chat UI:
st.chat_message("user"): Crea la burbuja de mensaje.st.chat_input("Escribe aquí..."): Input anclado al fondo.
4. Conectividad y Seguridad de Secretos
Nunca dejes tu clave_api.txt expuesta directamente en el código al usar Streamlit (Uso de streamlit secrets).
- Local: Crea un archivo
.streamlit/secrets.toml. - En Código: Accede mediante el objeto
st.secrets.
Archivo .streamlit/secrets.toml:
OPENAI_API_KEY = "sk-..."
Uso en Python:
import openai
import streamlit as st
openai.api_key = st.secrets["OPENAI_API_KEY"]
5. Visualización y Multimedia
Como Systems Engineer, querrás mostrar analítica del chatbot (ej. productos más consultados o métricas de uso).
- Gráficas:
st.plotly_chartost.altair_chartson ideales para interactividad técnica. - Uploader:
st.file_uploaderpermite que el cliente suba sus propios catálogos para análisis dinámico.
6. Despliegue y Seguridad de Arquitectura
| Opción | Ideal para... | Seguridad |
|---|---|---|
| Streamlit Cloud | MVPs rápidos y demostraciones públicas. | Básica (OAuth). |
| Docker (GCP/AWS) | Soluciones Corporativas | Alta (VPC, IAM Roles, HTTPS). |
Tip de Dockerización: Usa una imagen base ligera como
python:3.10-slimy expón siempre el puerto 8501.
⚠️ Errores Comunes de Arquitectura
- Llamadas infinitas a la API: No envolver la llamada de OpenAI en un bloque lógico o caché. Si no controlas el flujo, cada vez que el usuario mueva un widget, se gastarán tokens innecesariamente.
- No usar
st.containerpara el chat: Si tienes un dashboard arriba y el chat abajo, el chat "empujará" los elementos visuales. Usa contenedores con scroll para mantener la UI limpia. - Cargar datos en el loop principal: Cargar el CSV de registros en la raíz del script provoca latencia de milisegundos en cada interacción del usuario. Usa siempre
@st.cache_data. - Exponer secretos en logs: Imprimir el objeto
st.secretspara depuración. Streamlit Cloud guarda logs de consola que podrían ser visibles para terceros con acceso al repositorio.
Tutorial elaborado por Hadson Paredes - 2026
- Repositorio Streamlit-Learning
- Disponible como curso en Hadson.Tech
0 Comentarios