2026-08-01T01:58:11.114Z
LangSmith LLM Observabilité: prouver l'arbre de traces à travers les services
Auditer une trace LangSmith à travers les frontières du service, attraper des racines divisées et des étendues orphelines, préserver des attentes valides et exiger un résultat vérifié.
LangSmith peut montrer un ensemble propre de spans réussis et laisser un opérateur avec la mauvaise conclusion. La preuve manquante peut être un travailleur dont la durée n'a jamais rejoint la trace, une deuxième racine créée après un saut de service ou une trace complète sans preuve que l'artefact demandé a atteint sa destination. La méthode par défaut est simple: traiter la demande d'agent accepté one comme un arbre de trace de confiance , puis tester cet arbre contre un manifeste de service attendu. Un verdict sain nécessite une racine, des liens parentaux résolutifs, les étapes de service attendues, un nouveau progrès ou une attente explicite, et un reçu de destination séparé. L'achèvement d'une trace par elle même n'est pas l'achèvement d'une tâche. Ce guide transforme cette règle en un audit de huit cas pour langsmith llm observabilité . Le dispositif ne contient pas d'invitations, de réponses, de secrets ou de charges utiles d'outils. Il compare une règle naïve chaque intervalle dit ok avec une décision opérationnelle plus stricte et expose cinq cas faux verts. Par défaut: préserver une racine sur les sauts de service de confiance LangSmith définit les traces comme des arbres de courses, et son documentation de suivi distribuée décrit comment une demande peut se poursuivre sur les services. Le service d'origine sérialise l'arbre d'exécution actuel dans un en tête langsmith trace , avec baggage en option pour les métadonnées et les balises. Le service interne récepteur rétablit ce contexte et continue à le suivre. C'est la mise en œuvre raisonnable par défaut pour une API qui remet le travail à un planificateur puis à un travailleur. Il donne à l'opérateur un arbre de causalité au lieu de traces locales non liées. La même documentation met une frontière importante à côté de la fonctionnalité: ces en têtes sont fiables pour tracer le contexte. Un point final public ne doit pas les accepter comme parent autorisé ou accepter des bagages arbitraires d'un appelant non fiable. Débarrassez les au bord, démarrez une nouvelle racine pour la demande acceptée et propagez le contexte nouvellement créé uniquement sur des sauts de service à service fiables. Pour chaque demande acceptée, enregistrer un manifeste sans contenu tel que: Le requestKey doit être un identifiant opaque et non un prompte ou un nom de client. Le manifeste est le dénominateur: sans lui, une trace ne peut pas vous dire qu'un service attendu n'a rien émis. Structure d'audit avant d'évaluer l'état de l'espace Commencez par la structure parce qu'une collection de spans localement réussis peut encore décrire une mauvaise exécution. Appliquer ces contrôles dans l'ordre suivant: Vérifiez Les preuves État de défaillance Limite de confiance La racine a été créée après la frontière publique; les bagages propagés provenaient uniquement d'un service interne UNTRUSTED CONTEXT Le nombre de racines Exactement une carte racine de la demande acceptée SPLIT TRACE L'intégrité des parents Chaque parent run id non racine se résolve à l'intérieur de la même trace ORPHAN SPAN Couverture des services Chaque étape manifeste requise a au moins une course attendue TRACE GAP La fraîcheur Les travaux ouverts ont des progrès récents ou une date limite de dépendance valide STUCK ou WAITING Le résultat La destination nommée dispose d'un reçu déterministe OUTCOME UNVERIFIED Le verdict final Toutes les vérifications applicables sont passées HEALTHY Cet ordre compte. Si un appelant public peut fournir des bagages fiables, l'arbre n'est pas une preuve sûre même si sa forme est parfaite. Si deux racines existent, vérifier les enfants sous une seule racine peut cacher la moitié de l'exécution. Si une identification parentale est absente, les timestamps ne réparent pas l'écart de causalité. Ne forcez pas une piste à inclure des étapes qu'elle n'a pas atteintes. La couverture des services est évaluée à la limite du cycle de vie concerné. Avant que le planificateur ne dépêche le travail, l'absence d'un travailleur est normale. Après la fin des rapports d'exécution, la même absence constitue un écart de trace. Conservez l'étape du cycle de vie à côté du manifeste au lieu de le déduire du seul temps de l'horloge murale. Les retries ont aussi besoin d'une règle explicite. Une seconde période de travail n'est pas automatiquement une défaillance dupliquée. Enregistrer une clé d'opération stable et le numéro de tentative, puis demander si la nouvelle tentative est restée sous la même racine acceptée et si un seul effet a été commis. Cette vérification de l'arbre de trace vérifie la couverture causale; une vérification de l'idempotence ou de la réception des effets gère des effets secondaires dupliqués. Récupérez huit traces inconvenientes. L'artefact de recherche utilise quatre services requis api , planner , tool worker et verifier et remplace huit cas: 1. une trace complètement distribuée avec un artefact vérifié; 2. une durée de travail manquante; 3. un travailleur dont la pièce d'identité des parents est absente; 4. deux racines pour une demande acceptée; 5. une nouvelle attente avec un propriétaire et une date limite future; 6. un travailleur ouvert avec des progrès stagnants; 7. une trace complète sans reçu de destination; 8. les bagages acceptés auprès d'une source de propagation publique. Exécuter le classifiateur déterministe avec Node: L'appareil précis produit: Le résultat falsifiable est l'écart entre six verts naïfs et une course saine vérifiée. Cinq affaires ne contenaient que des étendues de ok mais n'ont pas été vérifiées structurellement, en termes de confiance ou de résultats. Le travailleur obsolète n'était pas naïf vert parce qu'il est resté ouvert. L'attente légitime est également restée ouverte, mais elle a été redirigée vers WAITING plutôt que mal étiquetée comme un échec. Cela ne veut pas dire que sept agents ont été cassés. Cela signifie qu'un seul cas avait suffisamment de preuves pour une conclusion saine. WAITING est un état opérationnel valide, et les états d'écart identifient les éléments de preuve qui doivent être restaurés avant de décider. Un classificateur compact peut mettre en œuvre la priorité suivante: La priorité préserve la différence entre l'activité et le progrès utile. Il empêche également une condition verte ultérieure d'effacer un échec de preuve antérieur. Rechercher l'arbre sans exporter le contenu instantané LangSmiths Guide de requête SDK officiel recommande list runs ou l' API /runs/query . Il documente is root=True pour la sélection de l'exécution de la racine et read run(..., load child runs=True) pour l'hydratation d'un arbre candidat lorsqu'un prédicat enfant local a besoin de champs que les filtres côté serveur n'exposent pas. Un chemin de collecte Python minimal est: Adaptez la liste select au SDK installé. L'instantané de recherche a observé la version officielle de langsmith sdk V0.10.11, publiée le 28 juillet 2026; vérifiez la référence actuelle avant de copier les noms de champs dans le code de production. L'audit n'a pas besoin de inputs ou de outputs . Traversez l'arbre enfant hydraté et ne conservez que: les identifiants de course et de suivi; l'identifiant d'exploitation parent; une étiquette de service ou de scène émise par la demande; les temps de début, de fin et de dernière progression; état ou présence d'erreur; les clés de fonctionnement et de demande opaques; attendre le propriétaire et la date limite; l'identifiant et le résultat de vérification du reçu de destination. Le Vue d'ensemble de l'observabilité LangSmith sépare correctement l'enquête sur les traces, les tableaux de bord, les alertes, les automatisations, les évaluations en ligne et les commentaires. Une vérification structurelle des traces complète ces surfaces; elle ne remplace pas les évaluations ni ne prétend que chaque défaillance est visible à partir des métadonnées. Restez à l'attente, coincé, et la vérification des résultats séparément Une longue durée ne suffit pas pour appeler un agent coincé. Exiger à la fois une violation de la fraîcheur et l'absence d'un contrat d'attente valide. Un contrat d'attente a besoin d'un propriétaire, d'une dépendance et d'une date limite. Dans le cadre de la fixation, le travailleur avait récemment fait des progrès, attendait un examinateur et avait un délai futur. L'état correct était WAITING . Le travailleur obsolète n'avait pas une telle explication et avait dépassé la fenêtre de fraîcheur de cinq minutes, alors il est devenu STUCK . Aucun des deux États n'est HEALTHY . L'attente doit être dirigée vers le propriétaire nommé; le travail bloqué doit être enquêté et peut être une proposition de récupération limitée. Ne réessayez pas simplement parce qu'une trace a cessé de bouger, surtout près d'une limite d'effets secondaires. Enfin, demandez des preuves en dehors des traces. Une période de vérification qui s'est terminée prouve avec succès que le code a été exécuté. Il ne prouve pas l'existence du fichier demandé, un déploiement atteint la révision prévue ou un message atteint la destination prévue. Définir le reçu déterministique le plus fort disponible: un hash d'objet immuable, une rangée de base de données plus une invariante, une révision à distance ou une lecture en arrière de l'API. La limitation est délibérée. Cette vérification ne peut pas reconstruire des champs qui n'ont jamais été émis, juger de la qualité sémantique à partir des métadonnées ou prouver un effet outil sans reçu produit par l'application. Il peut montrer que les preuves sont incomplètes et empêcher l'incertitude de devenir verdoyante. Sidewisp utilise cette même limite de santé dans sa direction de produit: les traces sont des preuves, tandis que les progrès utiles et les résultats attendus nécessitent leurs propres contrôles. Sidewisp est actuellement en préversion privée. Son site en direct est une expérience d'accès précoce et une démonstration interactive; la collecte des agents de production et la récupération automatisée ne sont généralement pas expédiées. Rejoignez l'aperçu privé si vous souhaitez aider à façonner une couche de santé qui fonctionne aux côtés des temps d'exécution existants plutôt que de remplacer LangSmith ou votre pile d'agents.