Guide

Statut éditorial : En attente de relecture

Observabilité LangChain avec LangSmith : des traces aux évaluations

Instrumenter une application LangChain ou LangGraph, analyser ses traces et transformer les échecs en tests reproductibles.

Classification du contenu

Types

  • Observabilité et évaluation

Technologies

Niveau
Intermédiaire
Publié le
10 août 2026
Dernière relecture
Relecture en attente
Prochaine vérification
10 novembre 2026

Une réponse LLM finale ne dit pas quel retriever, outil ou prompt a provoqué un échec. LangSmith représente une opération comme une trace composée de runs, regroupée dans un projet. Cette structure permet de relier l’expérience utilisateur aux étapes techniques, puis de convertir les cas importants en évaluations.

Instrumenter avec une convention claire

Séparez production, préproduction et développement dans des projets identifiables. Ajoutez version de l’application, modèle, tenant anonymisé, type de parcours et drapeaux de fonctionnalités comme métadonnées. Corrélez la trace avec votre identifiant de requête, sans envoyer automatiquement données personnelles, secrets ou documents complets.

Lire une trace

Commencez par la durée totale, puis repérez le premier appel lent ou erroné. Examinez entrée et sortie du retriever, outil sélectionné, nombre d’étapes, raison d’arrêt et usage des tokens. Une trace est une explication technique, pas une preuve de qualité : une réponse fluide peut s’appuyer sur une mauvaise source.

Passer de l’observation à l’évaluation

Ajoutez les incidents représentatifs à un dataset. Les évaluations hors ligne comparent une nouvelle version avant déploiement ; les évaluations en ligne échantillonnent le trafic pour détecter formats invalides, risques ou baisse de qualité. Combinez règles déterministes, revue humaine et juges LLM calibrés.

Coût et protection des données

Échantillonnez les traces à fort volume, fixez une rétention et contrôlez les accès. Les évaluateurs en ligne ajoutent parfois des appels de modèle : mesurez leur coût séparément. LangSmith peut aussi recevoir des traces OpenTelemetry, ce qui facilite une stratégie d’observabilité plus large, mais exige une convention de spans cohérente.

FAQ

LangSmith fonctionne-t-il uniquement avec LangChain ?

Non. Il peut instrumenter d’autres applications, notamment par SDK ou OpenTelemetry.

Faut-il tracer chaque prompt complet ?

Non. Utilisez masquage, métadonnées et échantillonnage selon la sensibilité.

Une trace remplace-t-elle un test ?

Non. Elle fournit le cas réel ; le dataset et l’évaluateur en font un test reproductible.

Instrumentation minimale et métadonnées utiles

~~~bash export LANGSMITH_TRACING=true export LANGSMITH_PROJECT=assistant-support-production ~~~

~~~python result = chain.invoke( {"question": question}, config={ "run_name": "answer_support_question", "tags": ["production", "rag-v2"], "metadata": { "tenant": tenant_id, "prompt_version": "support-2026-08", }, }, ) ~~~

Ne placez pas de donnée personnelle, token ou document complet dans les métadonnées. Utilisez un identifiant pseudonymisé pour relier trace et logs. Surveillez latence totale, retriever, tokens, coût, erreurs et appels d’outils. Échantillonnez les succès mais conservez les échecs. Une alerte doit mener à une action : modèle de repli, limitation de débit ou interruption d’un outil défaillant.

Expérience de la communauté

Ce que signalent les praticiens

Retour du terrain

Reliez traces, coûts et décisions avec un identifiant d’exécution commun

Ajoutez un run_id métier aux métadonnées LangSmith et propagez-le aux appels d’outils. Il permet de rapprocher traces techniques, coûts, latence, décisions de sécurité et résultat utilisateur lors d’une évaluation.

Voir la discussion sur GitHub (s’ouvre dans un nouvel onglet)

Point de vigilance

Une trace racine ne garantit pas que les appels LLM enfants sont observés

Vérifiez l’observabilité avec une trace de référence contenant au moins un appel modèle, un outil et une erreur. Contrôlez les relations parent-enfant : voir l’exécution de l’agent ne prouve pas que chaque appel LLM est tracé.

Voir la discussion sur GitHub (s’ouvre dans un nouvel onglet)

Sources utilisées