22 points par xguru 2024-10-07 | 1 commentaires | Partager sur WhatsApp
  • La plupart des entreprises disposent en interne de données précieuses
    • Des données analytiques sur la manière dont les clients interagissent avec le produit
    • Des journaux d’audit des actions effectuées dans le produit (permettant d’identifier quand une fonctionnalité a été activée)
  • Même une petite startup possède des données utiles
    • Les tickets de support permettent d’identifier les zones du produit qui demandent le plus d’attention, et incluent aussi des demandes de fonctionnalités
  • Avant les LLM (grands modèles de langage), il était difficile d’extraire des insights à partir des données
    • Il fallait entraîner son propre modèle, ce qui impliquait du feature engineering, du NLP, la sélection du modèle, ainsi que la collecte des données d’entraînement, la partie la plus difficile
  • Aujourd’hui, un simple prompt suffit
    • Exemple de prompt : "Classez les tickets suivants dans les catégories suivantes : Uptime, Security, Bug, Feature Request, Other"
    • On obtient ainsi un classifieur simple, qui offre de bonnes performances avec seulement quelques ajustements
  • Avec Streamlit, il est facile de créer un outil interne permettant à n’importe qui d’expérimenter l’application d’un LLM à un jeu de données

Ce que nous allons construire

  • Les utilisateurs pourront notamment :
    • Se connecter
    • Rédiger un prompt pour un système de classification de tickets
    • Tester le prompt sur quelques exemples de données et voir la sortie, y compris les erreurs
    • Enregistrer le prompt pour qu’il puisse être utilisé par d’autres

Brève introduction à Streamlit

  • Streamlit est un excellent outil pour créer rapidement des applications de données
    • Dans Streamlit, il est possible d’écrire une application avec un code 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)  
  • Résultat de l’exécution du code : Streamlit génère automatiquement une interface interactive
  • Lorsque l’utilisateur met à jour le texte du prompt dans text_area, le reste du code Python est automatiquement réexécuté

Les points forts de Streamlit

  • Streamlit est un outil très puissant pour créer des outils interactifs de type tableau de bord
    • Divers composants sont disponibles : il est possible de rendre des DataFrames Pandas sous forme de tableaux ou de déclencher des actions via des boutons
    • Chargement de données externes, gestion des secrets et utilitaires de mise en cache sont fournis, ce qui rend l’interaction avec les données bien plus puissante

Étape 1 : charger et visualiser les données

  • Utiliser Streamlit pour charger des données codées en dur et les afficher sous forme de tableau
  • Indiquer à Streamlit comment se connecter à une base de données PostgreSQL via le fichier .streamlit/secrets.toml
  • Installer psycopg2-binary et mettre à jour la fonction load_data_sample() pour charger les données depuis PostgreSQL
  • Streamlit peut se connecter à diverses sources de données, comme Snowflake et Google Sheets
  • Pour la mise en cache, st.cache_resource est généralement utilisé pour les connexions, et st.cache_data pour les résultats de requêtes coûteuses

Étape 2 : exécuter les données avec un prompt

  • Recevoir un prompt de l’utilisateur et l’appliquer aux données chargées
  • Le prompt doit produire un JSON valide au format {"urgent": false, "categories": ["CategoryA", "CategoryB"]}
  • Transformer le DataFrame pour ajouter les colonnes urgent, categories et error (en cas d’erreur)
  • Mettre en cache les appels OpenAI pour économiser du temps et des coûts
  • Ajouter un bouton pour réexécuter le prompt sur les données

Étape 3 : ajouter l’authentification

  • Ajouter l’authentification à Streamlit avec PropelAuth
  • Créer un fichier propelauth.py qui exporte l’objet auth
  • Charger l’utilisateur en haut du script ou arrêter l’exécution du script
  • Utiliser l’identifiant utilisateur dans la requête de données pour ne consulter que les données auxquelles il a accès

Étape 4 : enregistrer les prompts

  • Ajouter un bouton permettant aux utilisateurs d’enregistrer leurs prompts
  • Charger la connexion à la base de données et insérer le prompt dans la table prompts
  • Enregistrer le prompt en transmettant l’identifiant utilisateur et le prompt comme paramètres

1 commentaires

 
xguru 2024-10-07

J’avais brièvement présenté cela en 2020 sous le titre Streamlit - transformer facilement du code Python en outil ML personnalisé, puis en 2022 Snowflake a acquis Streamlit pour 800 M$.

Il y a quelque temps, un outil développé avec Streamlit avait aussi été publié une fois dans Show GN.
MP3 Tag Editor (Python Streamlit +FastAPI) on Docker