Le contexte
Notre client avait déployé une suite d'agents LLM pour automatiser des workflows internes — qualification de leads, génération de briefs, réponses support. Avec la montée en charge, les incidents se multipliaient : hallucinations silencieuses, boucles infinies, dépassements de token budget… sans aucun outil pour les détecter avant que l'impact soit visible côté utilisateur.
La stack existante n'offrait aucune visibilité sur ce qui se passait à l'intérieur des agents. Le temps moyen de résolution d'un incident dépassait 4 heures, faute de contexte exploitable.
Les défis
Tracing des chaînes d'appels LLM
Un agent peut enchaîner 15 à 40 appels LLM, des appels d'outils et des décisions de branchement. Reconstruire la trace complète d'une exécution — avec prompts, outputs, durées et coûts à chaque étape — demandait une instrumentation fine de LangChain et des appels OpenAI.
Alertes contextuelles, pas juste métriques
Les alertes classiques (latence, error rate) ne suffisent pas pour les agents IA. Il fallait détecter des anomalies sémantiques : sorties hors du domaine attendu, usage excessif de tokens, absence de tool call là où on en attendait une.
Overhead minimal en production
L'instrumentation ne devait pas dégrader les performances. Nous avons opté pour un export asynchrone via OpenTelemetry vers un collector dédié, sans bloquer la boucle principale des agents.
La solution
Nous avons instrumenté chaque agent avec un wrapper OpenTelemetry custom, exportant les spans vers Grafana Tempo pour le tracing distribué, et les métriques vers Prometheus + Grafana pour le monitoring.
Architecture d'observabilité
Agent LLM (LangChain)
↓ OTel SDK (spans, events, attributes)
OTel Collector (batch export async)
├── Grafana Tempo ← traces complètes
├── Prometheus ← métriques (tokens, latence, coût)
└── Alertmanager ← alertes Slack + PagerDuty
LLM Evaluator (GPT-4o-mini) → score qualité async
Un second agent léger — un "LLM evaluator" basé sur GPT-4o-mini — est déclenché de façon asynchrone sur un échantillon d'exécutions pour scorer la qualité des outputs. Les scores alimentent Grafana et déclenchent des alertes si la moyenne glisse sous un seuil configuré.
Les résultats
12 min
MTTR moyen (vs 4h avant)
−34%
Coût tokens en production
100%
Couverture des agents
La visibilité sur les traces a permis d'identifier et corriger trois bugs systémiques silencieux en moins d'une semaine. La réduction des coûts tokens vient de l'optimisation des prompts rendue possible par l'analyse des distributions de longueur d'output.
Un projet similaire en tête ?
Parlons-en