LangChain LangSmith -- Observabilité

LangSmith est la plateforme d'observabilité officielle de LangChain qui vous aide à tracer les processus d'exécution des Agents, à surveiller les performances et à déboguer les problèmes.


Qu'est-ce que LangSmith

Lorsqu'un Agent s'exécute en arrière-plan, vous ne pouvez pas voir ce qui se passe à l'intérieur — quels modèles ont été appelés, quels outils ont été exécutés et combien de Tokens chaque étape a consommés. LangSmith résout ce problème de « boîte noire ».

FonctionnalitésDescription
Traçage de l'exécutionEnregistre la trajectoire d'exécution de chaque étape de l'Agent
Surveillance des performancesSuit la consommation de temps et l'utilisation des Tokens de chaque appel
Rejeu de débogageAfficher les informations détaillées des exécutions historiques
Tests d'évaluationCréer des ensembles de tests pour évaluer les performances de l'Agent

Démarrage rapide

Inscription et installation

$ pip install langsmith

Danssmith.langchain.comInscrivez-vous, obtenez une clé API, puis configurez-la dans .env :

Exemple

# fichier .env
LANGCHAIN_TRACING_V2=true
LANGCHAIN_API_KEY=lsv2_pt_your_key_here
LANGCHAIN_PROJECT=my-agent-project

Traçage automatique

Exemple

from dotenv import load_dotenv
load_dotenv()  # La configuration LangSmith sera chargée automatiquement

from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from langchain.messages import HumanMessage
from langchain.tools import tool

# Après avoir défini les variables d'environnement, toutes les exécutions d'Agent seront automatiquement tracées
# Aucun code supplémentaire nécessaire !

@tool
def search_course(keyword: str) -> str:
    """Rechercher des cours"""
    return f"Résultats de recherche : cours liés à {keyword}"

model = init_chat_model("deepseek:deepseek-v4-flash", temperature=0)
agent = create_agent(
    model=model,
    tools=[search_course],
    system_prompt="Vous êtes l'assistant du tutoriel Exemple.",
)

# Cette exécution sera automatiquement enregistrée dans LangSmith
result = agent.invoke({
    "messages": [HumanMessage(content="Rechercher des cours Python")]
})

# Ouvrez https://smith.langchain.com pour consulter les enregistrements de trace
print("Terminé. Veuillez vous rendre dans la console LangSmith pour consulter les détails de trace")

Affichage des enregistrements de trace

Dans la console LangSmith, vous pouvez voir la trajectoire complète de chaque Agent :

  • Exécution: Chronologie complète de l'appel au modèle → appel à l'outil → nouvel appel au modèle
  • Entrée/Sortie: Les messages d'entrée et les résultats renvoyés par le modèle pour chaque étape
  • Utilisation des tokens: Consommation de tokens et estimation des coûts pour chaque appel de modèle
  • Analyse de latence: Répartition temporelle de chaque étape
  • Messages d'erreur: Si une erreur se produit dans une étape, vous pouvez voir la trace complète de la pile d'erreurs

Création manuelle de traces

Exemple

from langsmith import traceable

# Utiliser le décorateur @traceable pour marquer les fonctions qui doivent être tracées
@traceable
def process_user_query(query: str) -> dict:
    """Traite la requête utilisateur (cette fonction sera tracée séparément)"""
    # Prétraitement
    cleaned = query.strip().lower()
    # Appeler l'agent
    result = agent.invoke({"messages": [HumanMessage(content=cleaned)]})
    return {
        "query": cleaned,
        "answer": result["messages"][-1].content,
    }

# Dans LangSmith, vous verrez process_user_query comme une étape indépendante
result = process_user_query("Recommandations de cours Python")
print(result["answer"])

Configuration commune

Variables d'environnementDescriptionExemple
LANGCHAIN_TRACING_V2Activer le traçage (doit être défini sur true)vrai
LANGCHAIN_API_KEYClé API LangSmithlsv2_pt_xxx
LANGCHAIN_PROJECTNom du projet (utilisé pour regrouper les traces)my-agent
LANGCHAIN_ENDPOINTPoint de terminaison de l'API (la valeur par défaut convient)https://api.smith.langchain.com

En production, il est recommandé de définir un taux d'échantillonnage des traces de LangSmith plus faible (pour éviter le coût élevé de l'enregistrement de toutes les requêtes), et de n'activer le traçage complet que lorsque le débogage est nécessaire.

Autres extensions