- La mayoría de las empresas tienen datos valiosos internamente
- Datos analíticos sobre cómo los clientes interactúan con el producto
- Registros de auditoría de las acciones realizadas dentro del producto (permite identificar cuándo se activó una función)
- Incluso una startup pequeña tiene datos útiles
- A través de los tickets de soporte se puede ver qué partes del producto necesitan más atención, y también incluyen solicitudes de funciones
- Antes de los LLM (modelos de lenguaje de gran tamaño), era difícil extraer insights a partir de los datos
- Había que entrenar un modelo propio, lo que incluía feature engineering y NLP, selección del modelo y, lo más difícil, la recolección de datos de entrenamiento
- Ahora es posible hacerlo con un prompt simple
- Prompt de ejemplo: "Clasifica los siguientes tickets en las siguientes categorías: Uptime, Security, Bug, Feature Request, Other"
- Como resultado, se crea un clasificador simple que, con unos pocos ajustes, puede ofrecer un rendimiento adecuado
- Con Streamlit es fácil crear una herramienta interna para que cualquiera pueda experimentar aplicando LLM a un dataset
Qué vamos a crear
- El usuario podrá hacer lo siguiente
- Iniciar sesión
- Escribir un prompt: para un sistema de clasificación de tickets
- Probar el prompt con algunos datos de ejemplo y revisar la salida (incluidos los errores)
- Guardar el prompt para que otras personas puedan usarlo
Breve introducción a Streamlit
- Streamlit es una excelente herramienta para crear rápidamente aplicaciones de datos
- En Streamlit se puede escribir una aplicación con código simple
import streamlit as st
prompt = st.text_area(
"Prompt to test (use {text} to indicate where the text should be inserted):",
"This is an example prompt:\\n\\n{text}",
)
prompt_with_data = f"{prompt}".format(
text="`Example data to be placed into prompt`"
)
st.write(prompt_with_data)
- Resultado de ejecutar el código: Streamlit genera automáticamente un frontend interactivo
- Cuando el usuario actualiza el texto del prompt en
text_area, el resto del código Python se vuelve a ejecutar automáticamente
Funciones potentes de Streamlit
- Streamlit es una herramienta muy potente para crear herramientas interactivas tipo dashboard
- Se pueden usar diversos componentes: renderizar dataframes de Pandas como tablas o activar acciones mediante botones
- También incluye carga de datos externos, gestión de secretos y utilidades de caché de datos, lo que hace mucho más potente la interacción con los datos
Paso 1: Cargar y visualizar datos
- Con Streamlit se cargan datos hardcodeados y se renderizan como una tabla
- A través del archivo
.streamlit/secrets.toml, se le indica a Streamlit cómo conectarse a una base de datos PostgreSQL
- Se instala
psycopg2-binary y se actualiza la función load_data_sample() para cargar datos desde PostgreSQL
- Streamlit puede conectarse a diversas fuentes de datos, como Snowflake y Google Sheets
- Para caché,
st.cache_resource se usa normalmente para conexiones y st.cache_data para resultados de consultas costosas
Paso 2: Ejecutar datos usando un prompt
- Se recibe un prompt del usuario y se aplica a los datos cargados
- El prompt debe devolver un JSON válido con el formato
{"urgent": false, "categories": ["CategoryA", "CategoryB"]}
- Se transforma el dataframe para agregar las columnas
urgent, categories y error (cuando ocurre un error)
- Las llamadas a OpenAI se almacenan en caché para ahorrar tiempo y costo
- Se agrega un botón para volver a ejecutar el prompt sobre los datos
Paso 3: Agregar autenticación
- Se agrega autenticación a Streamlit usando PropelAuth
- Se crea un archivo
propelauth.py para exportar el objeto auth
- En la parte superior del script, se carga el usuario o se detiene la ejecución del script
- En las consultas de datos se puede usar el ID del usuario para ver solo los datos a los que tiene acceso
Paso 4: Guardar prompts
- Se agrega un botón para que el usuario pueda guardar prompts
- Se carga la conexión a la base de datos y se inserta el prompt en la tabla
prompts
- Se guarda el prompt pasando como parámetros el ID del usuario y el prompt
1 comentarios
Yo había hecho una breve presentación en 2020 con Streamlit - convertir fácilmente código Python en herramientas de ML personalizadas, y en 2022 Snowflake adquirió Streamlit por $800M.
Hace poco, una herramienta creada con Streamlit también apareció una vez en Show GN.
MP3 Tag Editor (Python Streamlit +FastAPI) on Docker