- 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
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