Ticker

6/recent/ticker-posts

Consideraciones para el uso Streamlit para Soluciones de IA

 

🚀 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:
DecoradorUso PrincipalEjemplo
@st.cache_dataAlmacenar objetos de datos (Dataframes, consultas SQL, CSV).Leer el catálogo de productos.
@st.cache_resourceAlmacenar 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.sidebar para configuraciones (ej. selección de modelo o temperatura) y st.columns para 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_chart o st.altair_chart son ideales para interactividad técnica.
  • Uploader: st.file_uploader permite que el cliente suba sus propios catálogos para análisis dinámico.

6. Despliegue y Seguridad de Arquitectura

OpciónIdeal para...Seguridad
Streamlit CloudMVPs rápidos y demostraciones públicas.Básica (OAuth).
Docker (GCP/AWS)Soluciones CorporativasAlta (VPC, IAM Roles, HTTPS).

Tip de Dockerización: Usa una imagen base ligera como python:3.10-slim y expón siempre el puerto 8501.


⚠️ Errores Comunes de Arquitectura

  1. 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.
  2. No usar st.container para 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.
  3. 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.
  4. Exponer secretos en logs: Imprimir el objeto st.secrets para 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

Publicar un comentario

0 Comentarios