22 puntos por xguru 2024-10-07 | 1 comentarios | Compartir por WhatsApp
  • 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

 
xguru 2024-10-07

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