L’observabilité des agents IA consiste à suivre chaque décision, appel LLM, outil, erreur et coût pendant l’exécution. Sinon, on sait juste que ça plante. Dans l’article, je montre quoi tracer, quelles métriques suivre, quels outils regarder et comment rendre un workflow vraiment exploitable en production.
Besoin d'aide ? Découvrez les solutions de notre agence d'agents IA.
Pourquoi le monitoring classique ne suffit pas ?
Le monitoring classique ne suffit pas parce qu’il surveille surtout l’état technique du système, pas le raisonnement ni le chemin dynamique suivi par l’agent IA.
Je peux avoir un CPU normal, une mémoire stable, une API disponible et un temps de réponse correct, et pourtant mon agent peut produire une mauvaise réponse. C’est ça le piège. Les métriques techniques me disent si la machine tourne. Elles ne me disent pas si l’agent a compris la demande, s’il a choisi le bon outil, s’il a utilisé le bon document, ou s’il a inventé une réponse avec beaucoup d’assurance.
Dans une application classique, le parcours est souvent assez prévisible. Une requête arrive, elle passe par un contrôleur, une règle métier, une base de données, puis une réponse sort. Bien sûr, ça peut être complexe, mais le chemin est globalement connu à l’avance. Avec un agent IA, c’est différent. L’agent construit son chemin pendant l’exécution. Il peut décider d’appeler un outil, puis un autre, reformuler sa question, relancer une recherche documentaire, changer de stratégie, ou s’arrêter trop tôt.
Et là, les problèmes deviennent moins visibles. Un agent peut répondre lentement, choisir le mauvais outil, halluciner, ignorer une consigne système, mal interpréter un document récupéré par RAG, ou diverger entre deux exécutions très proches. Le RAG, c’est la récupération augmentée par génération. En gros, l’agent va chercher des documents avant de répondre. Mais s’il récupère le mauvais passage, ou s’il le comprend mal, le monitoring classique ne voit rien de spécial.
J’ai vu ce cas sur un workflow support. Deux demandes clients presque identiques arrivent. La première passe bien, l’agent récupère le dossier client, vérifie le contrat, puis propose la bonne réponse. La seconde déclenche le mauvais outil CRM, parce qu’un mot dans la demande a été interprété comme une intention commerciale au lieu d’un problème technique. Techniquement, tout était vert. Fonctionnellement, c’était faux.
En production, le vrai sujet n’est pas seulement de savoir qu’une exécution a échoué. C’est de comprendre où, pourquoi, avec quel prompt, quel modèle, quel outil, quelle donnée et quelle décision. Sans ça, on débogue à l’aveugle.
Pour analyser ça proprement, il faut regarder l’exécution complète. Pas juste l’état du serveur. Il faut représenter ce qui s’est passé sous forme de traces, de métriques et de logs, avec assez de contexte pour reconstruire le raisonnement réel de l’agent.
Que faut-il tracer dans un agent IA ?
Il faut tracer le chemin complet de l’agent, depuis la requête utilisateur jusqu’à la réponse finale, en passant par les appels modèle, les outils, les récupérations et les décisions intermédiaires. C’est ça une trace utile : une chronologie lisible de ce que l’agent a vraiment fait, pas ce qu’on pense qu’il aurait dû faire.
Quand je débugge un workflow IA en production, je veux pouvoir rejouer mentalement l’exécution. Je veux voir le prompt d’entrée, le système de consignes, le modèle utilisé, les paramètres utiles comme la température, le nombre maximum de tokens, les appels LLM, la latence, l’usage tokens, les appels d’outils, les réponses d’outils, les documents récupérés, les erreurs, les retry, les décisions de routage et la sortie finale.
Sans ça, on finit vite dans le flou. Un client me disait récemment “l’agent invente parfois des réponses”. En regardant les traces, le problème ne venait pas du modèle. Il venait d’une récupération documentaire trop large, avec trois documents hors sujet qui polluaient le contexte. Sans trace, on aurait changé de modèle pour rien.
Il faut quand même filtrer. Une trace n’est pas une poubelle où on balance toute la donnée brute. Les données personnelles, les secrets API, les clés, les informations business sensibles doivent être masqués ou pseudonymisés. Pseudonymiser, ça veut dire remplacer une donnée identifiable par une valeur stable mais non directement exploitable, par exemple remplacer un email par un identifiant interne.
OpenTelemetry est une bonne base pour structurer tout ça. C’est un standard de télémétrie, donc une façon commune de produire des traces, des métriques et des logs, puis de les envoyer vers un collecteur ou une plateforme spécialisée. Ça évite de créer un système maison fragile.
| Élément | Pourquoi le tracer | Exemple |
| Appel LLM | Comprendre le raisonnement demandé, le modèle utilisé, le coût et la latence | Modèle GPT-4.1, température 0.2, 1 240 tokens |
| Outil externe | Vérifier ce que l’agent appelle et ce que l’outil répond | Appel CRM pour récupérer le statut client |
| Récupération documentaire | Voir quelles sources influencent la réponse | Trois pages Confluence récupérées avec scores de similarité |
| Erreur | Identifier les pannes, timeouts et retry inutiles | Timeout API après 10 secondes, retry effectué |
| Sortie finale | Comparer la réponse produite avec le contexte disponible | Réponse envoyée à l’utilisateur avec sources citées |
Une bonne trace ne sert pas seulement aux développeurs. Elle sert aussi aux équipes produit et métier. Elle montre comment l’agent se comporte réellement, quelles décisions il prend, où il hésite, où il se trompe, et où il crée vraiment de la valeur.
Quelles métriques suivre en production ?
Les métriques à suivre sont celles qui montrent la performance, le coût, la qualité et la fiabilité de l’agent dans le temps. Je fais toujours la différence entre une trace et une métrique, parce que les deux ne servent pas au même moment.
Une trace raconte une exécution précise. Elle montre le prompt, les appels outils, les réponses intermédiaires, les erreurs, les retries, le chemin complet. Une métrique, elle, agrège une tendance. Elle dit si ça se dégrade, si ça coûte plus cher, si l’agent échoue plus souvent, si les utilisateurs escaladent davantage vers un humain.
Les métriques que je surveille en priorité sont assez simples, mais elles évitent beaucoup de mauvaises surprises :
- Latence moyenne et p95 : La moyenne donne une tendance générale, le p95 montre les cas lents vécus par 5 % des utilisateurs. C’est souvent là que les vrais irritants apparaissent.
- Taux d’échec : Toutes les exécutions qui finissent en erreur technique, timeout, sortie invalide ou workflow incomplet.
- Taux de retry : Si l’agent relance trop souvent un appel modèle ou un outil, il y a peut-être un souci de prompt, d’API ou de logique.
- Consommation de tokens : Les tokens, ce sont les morceaux de texte envoyés et reçus par le modèle. Plus il y en a, plus ça coûte cher et plus ça peut ralentir.
- Coût par exécution : C’est la métrique business de base. Elle permet de savoir si l’agent reste rentable à l’échelle.
- Nombre d’appels outils : Trop d’appels peuvent signaler une boucle, une mauvaise planification ou une récupération documentaire trop large.
- Erreurs par outil : CRM, moteur de recherche, base interne, API de paiement… Je veux savoir quel outil casse, pas seulement que l’agent échoue.
- Taux de réponses non conformes : Format JSON invalide, ton non respecté, règle métier oubliée, champ obligatoire absent.
- Taux d’hallucination : Attention, ça ne se mesure pas parfaitement tout seul. Ça dépend souvent d’évaluations, de feedback utilisateur, de tests offline ou de règles métier vérifiables.
- Taux d’escalade humaine : Si trop de conversations partent vers un humain, l’agent ne résout pas assez bien ou manque de contexte.
- Taux de complétion du workflow : C’est le pourcentage de parcours terminés correctement, par exemple créer un ticket, qualifier un lead ou répondre à une demande support.
Un exemple très concret : Si le coût token grimpe de 40 % sans amélioration du taux de résolution, j’inspecte tout de suite les prompts, les boucles d’outil et la récupération documentaire. Chez un client, le problème venait juste d’un contexte RAG trop large. RAG veut dire récupération augmentée par génération, en clair l’agent allait chercher trop de documents avant de répondre.
| Métrique | Signal | Action possible |
| Latence p95 | Les cas lents augmentent | Optimiser les outils, réduire le contexte, revoir les timeouts |
| Coût par exécution | Le budget dérive | Compresser les prompts, limiter les retries, changer de modèle si besoin |
| Taux d’échec | L’agent casse plus souvent | Lire les traces, isoler les erreurs par étape |
| Erreurs par outil | Un connecteur devient instable | Ajouter des fallbacks, corriger l’API, surveiller les quotas |
| Taux de réponses non conformes | La sortie ne respecte plus les règles | Renforcer les schémas, ajouter des validations, tester les prompts |
| Taux d’escalade humaine | L’agent ne résout pas assez | Améliorer la base documentaire, les instructions ou les garde-fous |
Les métriques ne remplacent pas les traces. Elles indiquent où regarder. Les traces expliquent pourquoi ça se passe.
Quels outils choisir pour observer ses agents IA ?
Le bon outil dépend surtout de votre stack, de votre maturité, de vos contraintes de données et de votre besoin d’analyse LLM. Je le dis souvent à mes clients : l’outil parfait n’existe pas. Il y a surtout un outil adapté à votre contexte, et un outil trop lourd peut vite devenir un projet dans le projet.
Langfuse est une très bonne option open source si vous voulez observer finement vos appels LLM. On parle ici de traces, de prompts, d’évaluations, de coûts, de latence et de conversations. C’est pratique quand vous voulez comprendre ce qui se passe dans un agent, étape par étape, sans forcément partir sur une plateforme très enterprise dès le départ.
LangSmith est très adapté si vous travaillez déjà avec LangChain. Le traçage est naturel, les tests sont bien intégrés, et le debugging devient beaucoup plus simple. Quand un agent part dans une mauvaise direction, vous voyez mieux quelle chaîne, quel outil ou quel prompt a déclenché le problème.
Arize AI et Phoenix sont plus orientés évaluation, monitoring et analyse de qualité. C’est intéressant quand vous voulez suivre la performance réelle de vos modèles et applications LLM, détecter les dérives, analyser les hallucinations ou comparer plusieurs versions d’un même workflow.
Datadog LLM Observability devient pertinent si votre équipe utilise déjà Datadog. L’intérêt, c’est de relier l’observabilité LLM au monitoring applicatif existant : logs, métriques, traces, erreurs, infrastructure. Pour une équipe ops ou plateforme, c’est souvent plus simple que d’ajouter encore un outil isolé.
N8n, lui, ne remplace pas ces plateformes. Je le vois plutôt comme une couche d’orchestration très utile. Il rend les workflows visibles, garde l’historique d’exécution, structure les étapes, et peut router la télémétrie vers Langfuse, Datadog, une base interne ou un webhook. C’est souvent là que les équipes gagnent en clarté rapidement.
| Outil | Intérêt principal | Limite typique |
| Langfuse | Observabilité LLM open source, traces, prompts, coûts, évaluations. | Demande un peu de mise en place et de discipline sur l’instrumentation. |
| LangSmith | Très fluide avec LangChain, debugging, tests, traces. | Moins naturel si votre stack n’est pas centrée sur LangChain. |
| Arize AI / Phoenix | Évaluation, monitoring qualité, analyse des modèles et applications LLM. | Peut être trop avancé si vous cherchez juste une première visibilité simple. |
| Datadog LLM Observability | Connexion avec le monitoring applicatif déjà en place. | Moins intéressant si vous n’êtes pas déjà dans l’écosystème Datadog. |
| N8n | Orchestration, historique, visibilité des workflows, routage de télémétrie. | Ce n’est pas une plateforme complète d’observabilité LLM. |
| OpenTelemetry | Standard pour structurer et exporter traces, logs et métriques. | Ce n’est pas un produit clé en main, il faut le connecter à des outils. |
OpenTelemetry mérite vraiment d’être dans la réflexion. C’est une couche standardisée pour éviter d’enfermer toute votre donnée d’observabilité dans un seul outil. Vous gardez de la liberté, et ça, dans le temps, ça compte.
La suite montre comment poser une base simple avec orchestration et télémétrie, sans transformer votre observabilité d’agents IA en chantier interminable.
Comment rendre un workflow IA observable ?
On rend un workflow IA observable en découpant chaque étape, en attachant un identifiant d’exécution, en capturant les événements clés et en envoyant ces données vers une plateforme de logs, traces ou observabilité LLM. Dans n8n, je fais simple : une demande arrive, je crée un trace_id, j’appelle le LLM, j’appelle un outil externe, je récupère le résultat, je logue chaque étape, puis j’envoie la télémétrie vers un endpoint HTTP ou un collecteur compatible OpenTelemetry.
Le point important, c’est de ne pas logger “un gros blob final”. Je veux voir le film, pas juste la dernière image. Chaque étape devient un span, c’est-à-dire une portion mesurable du workflow.
| trace_id | Identifiant commun à toute l’exécution. |
| span_id | Identifiant unique d’une étape. |
| parent_span_id | Identifiant de l’étape parente, utile pour reconstruire le parcours. |
// Importe crypto pour générer des identifiants fiables.
const { randomUUID } = require('crypto');
// Récupère l'item courant dans n8n.
const input = $json;
// Réutilise le trace_id existant ou en crée un nouveau.
const trace_id = input.trace_id || randomUUID();
// Crée un span_id pour cette étape précise.
const span_id = randomUUID();
// Rattache cette étape à l'étape précédente si elle existe.
const parent_span_id = input.parent_span_id || null;
// Marque l'heure exacte de l'événement.
const timestamp = new Date().toISOString();
// Calcule la latence si un start_time existe.
const latency_ms = input.start_time ? Date.now() - new Date(input.start_time).getTime() : null;
// Nettoie le payload avant envoi.
const clean_payload = {
request_id: input.request_id,
user_intent: input.user_intent,
result_preview: input.result?.slice?.(0, 300)
};
// Prépare l'événement de télémétrie.
return [{
json: {
trace_id,
span_id,
parent_span_id,
timestamp,
step_name: input.step_name || 'llm_call',
model: input.model || 'gpt-4.1-mini',
token_usage: input.token_usage || { prompt: 0, completion: 0, total: 0 },
latency_ms,
tool_name: input.tool_name || null,
status: input.error ? 'error' : 'success',
error_message: input.error?.message || null,
payload: clean_payload
}
}];Ensuite, j’envoie ça avec un node HTTP Request. La clé API reste dans les credentials n8n ou dans une variable d’environnement, jamais en dur dans le workflow.
{
"resource": "agent.workflow",
"service": "n8n-ai-agent",
"environment": "production",
"trace_id": "{{$json.trace_id}}",
"span_id": "{{$json.span_id}}",
"parent_span_id": "{{$json.parent_span_id}}",
"timestamp": "{{$json.timestamp}}",
"attributes": {
"step_name": "{{$json.step_name}}",
"model": "{{$json.model}}",
"tool_name": "{{$json.tool_name}}",
"status": "{{$json.status}}",
"latency_ms": "{{$json.latency_ms}}",
"token_usage": "{{$json.token_usage}}",
"error_message": "{{$json.error_message}}"
},
"payload": "{{$json.payload}}"
}La règle de sécurité est non négociable : je masque emails, téléphones, tokens API et données personnelles avant l’envoi. J’ai déjà vu un client envoyer des prompts complets avec des contrats dedans. Mauvaise idée.
// Convertit le payload en texte pour appliquer les remplacements.
let text = JSON.stringify($json);
// Masque les adresses email.
text = text.replace(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/gi, '[EMAIL_MASKED]');
// Masque les tokens longs de type API key.
text = text.replace(/\b(sk|pk|api|key|token)[-_]?[a-z0-9]{16,}\b/gi, '[TOKEN_MASKED]');
// Masque les numéros de téléphone simples.
text = text.replace(/(\+?\d[\d\s.-]{8,}\d)/g, '[PHONE_MASKED]');
// Retourne le JSON nettoyé dans n8n.
return [{ json: JSON.parse(text) }];Pour reconstruire le parcours complet, je garde le même trace_id partout. Le span “appel outil externe” reçoit comme parent_span_id le span de “décision LLM”. Comme ça, dans l’outil d’observabilité, je vois la chaîne exacte : demande utilisateur, raisonnement, appel outil, réponse, erreur éventuelle.
Avant la production, je vérifie :
- Les identifiants trace_id, span_id et parent_span_id sont présents partout.
- Les logs sont structurés en JSON, pas en texte libre.
- Les coûts tokens et la latence sont mesurés.
- Les erreurs sont capturées avec un message exploitable.
- Les données sensibles sont masquées avant sortie.
- Des alertes existent sur erreurs, coût anormal et latence.
- La rétention des logs est définie et limitée.
Et maintenant, qu’est-ce qu’on regarde vraiment ?
L’observabilité des agents IA, ce n’est pas un luxe technique. C’est ce qui permet de passer d’un agent qui marche quand tout va bien à un agent qu’on peut vraiment piloter en production. Je regarde les traces pour comprendre le chemin, les métriques pour voir les tendances, les logs pour retrouver le détail. Et je garde l’orchestration au centre, parce qu’un workflow visible est beaucoup plus simple à corriger. Avec cette approche, vous réduisez le temps de debug, vous maîtrisez les coûts et vous améliorez la fiabilité réelle de vos agents IA.
FAQ
- Qu’est-ce que l’observabilité des agents IA ?
C’est la capacité à comprendre ce qu’un agent IA fait pendant une exécution complète. On suit ses appels modèle, ses outils, ses décisions, ses erreurs, ses coûts et sa réponse finale. Le but n’est pas juste de voir qu’il a échoué, mais de comprendre pourquoi. - Quelle différence entre monitoring classique et observabilité IA ?
Le monitoring classique surveille surtout la santé technique comme la latence, le CPU, les erreurs serveur ou la disponibilité. L’observabilité IA va plus loin. Elle analyse le chemin dynamique de l’agent, ses prompts, ses choix d’outils, ses réponses intermédiaires et ses divergences entre exécutions. - Quelles données faut-il collecter en priorité ?
Je collecte d’abord les traces d’exécution, les métriques de coût et de latence, les erreurs, les appels d’outils, l’usage tokens et les sorties importantes. Je fais aussi attention au masquage des données sensibles, parce qu’une bonne observabilité ne doit pas devenir une fuite de données. - n8n suffit-il pour observer un agent IA ?
n8n donne déjà une très bonne visibilité au niveau workflow avec l’historique des exécutions et le détail des étapes. Pour une production plus avancée, je le vois plutôt comme une couche d’orchestration qui envoie la télémétrie vers un outil spécialisé comme Langfuse, LangSmith, Arize, Datadog ou une stack OpenTelemetry. - Pourquoi utiliser OpenTelemetry avec des agents IA ?
OpenTelemetry aide à structurer traces, métriques et logs avec un format standard. L’intérêt, c’est d’éviter de dépendre trop fortement d’un seul outil et de pouvoir router la télémétrie vers plusieurs plateformes selon les besoins de l’équipe.
A propos de l’auteur
Je suis Franck Scandolera, expert et formateur en tracking avancé server-side, Analytics Engineering, automatisation No/Low Code avec n8n, intégration de l’IA en entreprise et SEO/GEO. Avec mon agence webAnalyste et l’organisme Formations Analytics, j’accompagne des équipes comme Logis Hôtel, Yelloh Village, BazarChic, la Fédération Française de Football ou Texdecor sur des sujets data, IA et automatisation. Si vous voulez rendre vos workflows IA plus fiables, observables et utiles pour votre business, contactez-moi.
⭐ Analytics engineer, Data Analyst et Automatisation IA ⭐
- Ref clients : Logis Hôtel, Yelloh Village, BazarChic, Fédération Football Français, Texdecor…
Mon terrain de jeu :
- Data Analyst & Analytics engineering : tracking avancé (GA4, Matomo, Piano, GTM server, Tealium, Commander Act, e-commerce, CAPI, RGPD), entrepôt de données (BigQuery, Snowflake, PostgreSQL, ClickHouse), modèles (Airflow, dbt, Dataform), dashboards décisionnels (Looker, Power BI, Metabase, SQL, Python).
- Automatisation IA des taches Data, Marketing, RH, compta etc : conception de workflows intelligents robustes (n8n, App Script, scraping) connectés aux API de vos outils et LLM (OpenAI, Mistral, Claude…).
- Engineering IA pour créer des applications et agent IA sur mesure : intégration de LLM (OpenAI, Mistral…), RAG, assistants métier, génération de documents complexes, APIs, backends Node.js/Python.




