Langfuse WorkshopClickHouse Workshops

05 Dataset

Vous avez une application tracée, attribuée et surveillée. data/seed-dataset.json et scripts/seed-dataset.ts se trouvent déjà dans le dépôt à ce checkpoint.

Le contenu du workshop est maintenu dans le dépôt public langfuse/langfuse-workshop. Utilisez ce dépôt pour exécuter l’application, accéder aux branches de checkpoint et effectuer la configuration locale.

Afficher ce fichier Markdown

Point de départ

git checkout checkpoint/05-dataset

Vous avez une application tracée, attribuée et surveillée. data/seed-dataset.json et scripts/seed-dataset.ts se trouvent déjà dans le dépôt à ce checkpoint.

Vérifiez que .env contient :

DATASET_NAME=dad-it-support-workshop

Pourquoi construire des datasets

Un dataset représente ce que le système rencontrera en production : les entrées attendues et, pour chacune, ce qui constitue une bonne réponse. Avec des attentes clairement formulées, vous pouvez réexécuter l’agent après chaque changement et savoir si le résultat s’est amélioré ou dégradé. Un bon dataset est la base d’un déploiement serein et d’itérations sans régression.

Pour en savoir plus, consultez la leçon Langfuse Academy sur les datasets.

Objectif

Charger un premier dataset représentant les types de demandes que Specs doit traiter. Pour cela :

  1. Comprendre la structure d’un élément — chaque élément possède les trois mêmes champs et les nôtres doivent correspondre à l’entrée réelle de l’agent.
  2. Charger le dataset hébergé pour qu’il réside dans Langfuse et soit prêt pour les expériences de l’étape suivante.

Comment Specs traite une demande : un agent, deux outils, un modèle et chaque étape sous forme d’observation dans le trace.

Étape 1 — Comprendre la structure d’un élément

Les éléments de dataset Langfuse suivent une structure constante : trois champs, dont un obligatoire et deux facultatifs :

ChampObligatoireRôle
inputouiCe que vous transmettez à l’agent. Pour nous, la même structure { messages: [...] } qu’accepte /api/chat.
expectedOutputfacultatifCe que serait une bonne réponse. Format libre, utilisé par les évaluateurs pour comparer le résultat réel au résultat attendu.
metadatafacultatifTags ou autres champs de filtrage et de regroupement (category, difficulty, etc.).

Pour nous, un élément a conceptuellement cette forme :

{
  "input": "How do I turn Bluetooth on on my iPhone?",
  "expectedOutput": {
    "idealAnswer": "Open Settings, tap Bluetooth, and turn the Bluetooth switch on.",
    "expectedKeywords": ["Settings", "Bluetooth", "switch", "on"]
  },
  "metadata": { "category": "iphone-bluetooth", "difficulty": "easy" }
}

Les deux champs de expectedOutput répondent à deux questions d’évaluation différentes :

  • idealAnswer est la réponse de référence lisible. L’évaluateur de correction LLM-as-a-judge du chapitre 06 la lit depuis $.idealAnswer pour déterminer si le sens correspond.
  • expectedKeywords est une courte liste de chaînes que la réponse doit contenir pour considérer les étapes couvertes. Au chapitre 06, le script d’expérience l’utilise pour le score déterministe keyword_overlap — rapide, peu coûteux et sans appel au modèle.

metadata permet ensuite de segmenter les exécutions par catégorie ou difficulté lors des comparaisons côte à côte.

Dans le véritable JSON de data/seed-dataset.json, input contient la structure complète { messages: [...] } acceptée par /api/chat, plus un champ id pour la ligne. L’exemple ci-dessus est simplifié pour montrer ce qu’est un élément ; le format sur disque est celui que le script d’expérience de l’étape 06 transmet directement à runSupportConversation(...), sans réécrire les entrées.

Étape 2 — Charger le dataset

Plusieurs méthodes permettent d’ajouter des éléments à un dataset Langfuse :

  • Les ajouter manuellement dans l’interface (Datasets → New item).
  • Charger un fichier CSV / JSON depuis l’interface.
  • Transformer des traces réels de production en éléments directement depuis la vue Trace — la méthode la plus puissante lorsque le monitoring détecte des cas intéressants.
  • Les charger par programmation avec le SDK / la CLI — idéal pour un chargement initial en masse comme le nôtre.

Dans ce workshop, nous utilisons la méthode programmatique puisque nous disposons déjà d’un fichier JSON sélectionné :

npm run dataset:seed

Ouvrez Langfuse → Datasets. La liste doit afficher le nouveau dataset dad-it-support-workshop avec 14 éléments et, pour l’instant, 0 exécution d’expérience :

Liste des datasets dans Langfuse : dad-it-support-workshop avec 14 éléments et aucune exécution.

Ouvrez le dataset et passez à l’onglet Items. Vous devez voir chaque élément chargé, avec les colonnes d’entrée, de résultat attendu et de métadonnées :

Éléments du dataset dad-it-support-workshop : 14 lignes avec messages d’entrée, réponse idéale + mots-clés attendus et métadonnées de catégorie/difficulté.

Ce que couvre le dataset initial

  • notions de base et cas limites du Bluetooth sur iPhone
  • reconnexion Wi-Fi et « je ne vois pas le réseau »
  • prise de photo et partage par WhatsApp
  • itinéraires Apple Maps et limite de localisation en direct
  • notions de base de Messages
  • demandes hors périmètre (déclarer mes impôts, réserver mon train)
  • cas de limitation (mots de passe, localisation en direct)

Si vous ajoutez ensuite des éléments, privilégiez ceux qui correspondent à un signal réel observé dans le monitoring plutôt que des exemples inventés.

Comment vérifier que vous avez terminé

  • Le dataset apparaît dans Langfuse avec tous ses éléments.
  • Les entrées ressemblent au tableau messages d’un véritable tour de chat.
  • Vous savez expliquer les modes d’échec couverts par le dataset.

Conclusion

Les datasets mettent par écrit ce que votre système doit savoir traiter. Un bon dataset vous donne confiance pour déployer et itérer sans régression. Vous pouvez les charger avec la CLI Langfuse ou la skill, les construire depuis des traces de production dans l’interface ou les maintenir dans le code comme ici — la bonne approche dépend de la provenance de vos meilleurs exemples.

Nous allons maintenant utiliser ce dataset pour lancer des expériences sur l’agent.

État final

C’est le point de départ de 06-experiments.

Sur cette page

Suivre votre progression ?

Facultatif. Nous envoyons un lien par e-mail pour confirmer votre adresse ; la progression est enregistrée après son ouverture.

Utilisez votre adresse e-mail professionnelle, et non une adresse personnelle.

Le suivi de la progression exige aussi d’accepter les Conditions d’utilisation actuelles dans les Paramètres de confidentialité.

FR