Le LLM observability sert à comprendre pourquoi un modèle répond mal, pas juste à voir qu’il répond lentement. J’instrumente les traces, les spans, les coûts, la qualité et les outils appelés pour transformer les hallucinations et erreurs silencieuses en signaux exploitables.
Pourquoi le monitoring ne suffit pas ?
Le monitoring montre les symptômes, le LLM observability aide à comprendre les causes. C’est la différence qui change tout quand on met un assistant IA en production.
Avec du logiciel classique, on sait souvent où regarder. Une API tombe, une base répond trop lentement, un job échoue, un service renvoie une erreur 500. C’est visible. C’est net. On peut ouvrir les logs, suivre la stack trace, corriger.
Avec un système basé sur un LLM, c’est beaucoup moins propre. L’API peut répondre en 200. La base vectorielle peut renvoyer des documents valides. Le prompt peut être bien formé. Et malgré ça, le modèle peut mal interpréter l’information, ignorer un passage important, ou sortir une réponse très convaincante mais fausse. C’est ça le piège.
Il y a deux familles de problèmes qu’il faut bien distinguer :
- Les erreurs visibles : Timeout, erreur HTTP, outil indisponible, document introuvable, quota dépassé.
- Les échecs silencieux : Mauvais raisonnement, hallucination, mauvaise synthèse, réponse hors contexte, confiance excessive.
Le monitoring classique est très bon sur la première famille. Il vous dit si le système tient la charge, si la latence explose, si le taux d’erreur HTTP monte, si le débit baisse. Je continue à le mettre en place chez mes clients, évidemment. C’est indispensable.
Mais ça ne suffit pas. Une hallucination ne se voit pas dans un graphe CPU. Une mauvaise conclusion ne crée pas forcément une erreur applicative. Le modèle ne “bug” pas comme une fonction Python qui lève une exception. Il produit la suite de mots la plus probable selon son contexte, ses instructions, les documents reçus et ses milliards de paramètres. Sa logique est probabiliste, et une grosse partie est enfouie dans le modèle lui-même.
J’ai déjà vu un assistant business appeler le bon outil CRM, récupérer les bonnes opportunités commerciales, puis conclure qu’un client était “à risque” alors que les données montraient juste un retard de mise à jour interne. Techniquement, tout était vert. Fonctionnellement, la réponse était mauvaise.
Pour comprendre ce qui s’est passé, il faut aller plus loin que les logs applicatifs classiques. Il faut capturer le parcours complet de la requête : le prompt, les documents récupérés, les outils appelés, les réponses intermédiaires, la sortie finale et idéalement l’évaluation de cette sortie.
Quelles traces faut-il capturer ?
Il faut capturer le parcours complet d’une requête, depuis l’entrée utilisateur jusqu’à la réponse finale. C’est ça, une trace utile. Pas juste “Le modèle a répondu en 4 secondes”, mais tout le chemin que la demande a pris dans votre système.
Une trace, c’est le chemin complet. Un span, c’est une unité de travail à l’intérieur de ce chemin. Par exemple : récupération du prompt, recherche dans une base vectorielle, appel d’API, appel d’outil, génération LLM, validation de la réponse. Chaque étape a son temps, ses entrées, ses sorties, parfois ses erreurs.
Cette hiérarchie change tout. Si la réponse est lente, je peux voir si le problème vient du modèle, de la base vectorielle, d’un outil externe ou d’un post-traitement trop lourd. Si la réponse est fausse, je peux vérifier si le mauvais document a été récupéré, si le prompt a été mal construit, ou si le LLM a simplement inventé malgré un bon contexte. Chez un client, on pensait que le modèle était “nul”. En fait, la recherche vectorielle remontait des documents obsolètes. Sans trace, on aurait changé de modèle pour rien.
Dans une trace LLM, je veux voir les éléments concrets, pas une boîte noire :
- Le prompt réellement envoyé au modèle.
- Le contexte récupéré, avec les documents utilisés.
- Les outils appelés, leurs paramètres et leurs réponses.
- Les paramètres du modèle : température, modèle, limite de tokens.
- Le nombre de tokens en entrée et en sortie.
- Les réponses intermédiaires et la réponse finale.
- Les erreurs, les timeouts et le temps passé à chaque étape.
OpenTelemetry est devenu un standard très utilisé pour structurer les traces, les métriques et les logs. L’intérêt, c’est d’éviter de vous enfermer trop tôt dans un outil fermé. Vous gardez une façon propre de décrire ce qui se passe, puis vous choisissez l’outil d’observabilité qui vous convient.
Si vous utilisez des workflows visuels comme n8n, l’idée est déjà familière. Les traces d’exécution montrent quel nœud a fait quoi, avec quelles données, et où ça bloque. L’observabilité LLM applique la même logique, mais sur des chaînes plus probabilistes et parfois moins lisibles.
| Signal | Ce qu’il montre | Action possible |
| Latence par span | L’étape qui ralentit la requête | Optimiser l’appel API, le retrieval ou le modèle |
| Contexte récupéré | Les documents réellement envoyés au LLM | Corriger l’index, le ranking ou les filtres |
| Erreurs et sorties intermédiaires | Où la logique déraille | Modifier le prompt, l’outil ou la validation |
Quelles métriques suivre vraiment ?
Je suis quatre familles de métriques, pas juste la latence. C’est le piège classique en LLM observability. On regarde le temps de réponse, on râle parce que c’est lent, et on passe à côté du vrai problème.
Les métriques de performance système me disent où le temps part vraiment. Je regarde le débit, donc le nombre de requêtes traitées sur une période donnée. Je suis la latence totale, du clic utilisateur jusqu’à la réponse finale. Je mesure aussi le time-to-first-token, c’est le temps avant que le premier mot arrive. Et je découpe le temps par span, c’est-à-dire par étape observable du workflow : appel au modèle, recherche RAG, appel API, post-traitement.
Les métriques de ressources et de coûts sont souvent les plus utiles quand le système commence à tourner à volume réel. Je suis les tokens en entrée, les tokens en sortie, le coût par exécution, puis le coût par utilisateur ou par tâche. Une hausse de coût, très souvent, ne vient pas du modèle lui-même. Elle vient d’un contexte trop large, d’un historique de conversation mal tronqué, ou d’un RAG qui remonte dix documents alors que deux suffisent.
Les métriques de qualité sont plus délicates, mais indispensables. Je regarde la pertinence de la réponse, la groundedness, donc le fait que la réponse soit bien appuyée par les données fournies, le taux de réponse correcte, le taux de réussite de tâche, et la présence d’une source fiable quand le système utilise du RAG. J’ai vu un client accuser le modèle d’halluciner, alors que le vrai souci venait du retrieval. Le bon document n’était jamais récupéré.
Les métriques d’intégration évitent de blâmer le LLM pour les erreurs du reste du système. Je suis le taux de succès des outils externes, le temps de réponse des API, les échecs de base vectorielle, les erreurs d’authentification et les erreurs de format. Une réponse lente peut juste venir d’un CRM qui met quatre secondes à répondre.
| Signal observé | Cause probable |
| Coût en hausse | Contexte trop large ou trop de tokens en sortie |
| Hallucination | Mauvais retrieval ou source absente |
| Réponse lente | Outil externe, API ou base vectorielle |
Ces métriques doivent aider à décider, pas remplir un dashboard joli mais inutile. Si une métrique reste subjective, comme “assez bon”, je la transforme en score ou en règle observable. Sinon, en production, elle ne sert à rien.
Comment agir sur les signaux ?
Un signal d’observabilité doit déclencher une décision concrète, sinon c’est juste du bruit. Un score de qualité, une latence anormale, un coût qui explose ou une réponse risquée, ça n’a d’intérêt que si derrière on sait quoi faire.
Le vrai sujet, c’est le passage de l’observation à l’action. Si je vois que le modèle hallucine, je peux corriger le prompt, ajouter une validation ou bloquer certaines réponses. Si je vois que le contexte est trop lourd, je réduis les documents envoyés au modèle. Si les réponses sont mauvaises malgré un bon prompt, je regarde le retrieval, c’est-à-dire la partie qui va chercher les bonnes informations dans une base documentaire avant de répondre.
Les actions possibles doivent être prévues dès le départ :
- Corriger un prompt qui produit des réponses floues ou instables.
- Réduire le contexte quand le modèle reçoit trop d’informations inutiles.
- Améliorer le retrieval quand les sources remontées ne sont pas pertinentes.
- Changer un outil externe si une API répond mal ou trop lentement.
- Ajouter une validation métier avant d’envoyer une réponse à l’utilisateur.
- Bloquer une réponse risquée, par exemple sur du juridique, du médical ou des données sensibles.
- Relancer un appel quand l’erreur est temporaire.
- Router vers un humain quand le modèle n’est pas assez sûr.
Le piège avec les LLM, c’est le non-déterminisme. Le même prompt peut produire une bonne réponse aujourd’hui et une mauvaise demain, sans changement de code. Le modèle peut évoluer, les données peuvent changer, l’utilisateur peut formuler sa demande autrement. C’est pour ça que je mets en place une collecte continue et des évaluations régulières. On ne teste pas juste au lancement, on surveille dans la durée.
Dans mes projets, je préfère définir les KPI avant la mise en production. Les KPI, ce sont les indicateurs clés de performance : taux d’erreur, coût moyen par requête, temps de réponse, taux d’escalade vers humain, taux de réponses bloquées, qualité perçue. Je compare aussi les versions de prompts, je trace les appels d’outils, je surveille les coûts, et j’anonymise ou je minimise les données sensibles quand c’est nécessaire.
En automatisation low code, surtout avec des scénarios orchestrés, j’instrumente chaque étape critique. J’ai déjà vu un assistant prendre une mauvaise décision parce qu’une étape intermédiaire avait renvoyé une donnée bancale. Le scénario avait l’air “vert”, mais la décision finale était mauvaise. Je préfère le voir tout de suite plutôt que le découvrir trois semaines plus tard dans un ticket client.
| Problème observé | Signal à regarder | Correction probable |
| Réponses inventées | Taux d’hallucination, sources absentes, faible score de confiance | Améliorer le retrieval, imposer les sources, bloquer si aucune preuve fiable |
| Coût trop élevé | Nombre de tokens, taille du contexte, appels répétés | Réduire le contexte, résumer avant appel, utiliser un modèle moins cher |
| Temps de réponse trop long | Latence modèle, latence API externe, nombre d’étapes | Mettre en cache, paralléliser, changer d’outil, simplifier le scénario |
| Mauvaise décision métier | Trace des étapes, sortie des outils, règles appliquées | Ajouter une validation, durcir les règles, router vers un humain |
| Données sensibles exposées | Logs, prompts, réponses, champs personnels | Anonymiser, minimiser les données, masquer les champs sensibles |
Et maintenant qu’est-ce que vous devez instrumenter en premier ?
Le LLM observability, ce n’est pas un dashboard de plus. C’est ce qui permet de comprendre pourquoi un assistant répond mal alors que tout semble fonctionner côté technique. Je regarde les traces, les spans, les métriques de coût, la qualité des réponses et la santé des outils connectés. Puis j’agis : prompt, retrieval, contexte, API, validation, routage humain si besoin. Le vrai sujet, c’est de rendre les échecs silencieux visibles. Si vous instrumentez tôt, vous évitez de piloter votre IA à l’intuition, et vous gagnez en fiabilité, en maîtrise des coûts et en confiance business.
FAQ
- Qu’est-ce que le LLM observability ?
Le LLM observability consiste à capturer ce que le modèle a reçu, les outils qu’il a appelés, le contexte utilisé, les étapes suivies et la réponse produite. L’objectif n’est pas seulement de savoir si le système marche, mais de comprendre pourquoi il a répondu comme ça. - Quelle différence entre monitoring et observabilité LLM ?
Le monitoring mesure des symptômes comme la latence, les erreurs ou le débit. L’observabilité ajoute le contexte : prompt, documents récupérés, appels d’outils, tokens, spans et qualité de sortie. C’est ce qui permet de remonter à la cause d’une hallucination ou d’une mauvaise décision. - Quels signaux faut-il instrumenter en priorité ?
Je commencerais par les traces complètes, les spans critiques, le temps de réponse, le time-to-first-token, les tokens consommés, le coût par exécution, les documents utilisés en RAG, les appels d’API et les scores de qualité comme la pertinence ou la groundedness. - Pourquoi les LLM sont difficiles à observer ?
Parce qu’ils sont non déterministes. La même logique peut donner une réponse différente selon le contexte, le prompt, les documents récupérés ou les paramètres du modèle. En plus, une partie des signaux est en langage naturel, donc plus difficile à mesurer qu’un simple code erreur. - OpenTelemetry est-il utile pour les applications LLM ?
Oui, surtout pour standardiser la collecte des traces, métriques et logs. OpenTelemetry aide à structurer l’observabilité au lieu de bricoler des logs maison partout. Pour un système LLM avec plusieurs outils, API et étapes de génération, c’est vite précieux.
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 webAnalyste et Formations Analytics, j’aide des équipes à instrumenter correctement leurs données, leurs workflows et leurs systèmes IA. J’ai accompagné des clients comme Logis Hôtel, Yelloh Village, BazarChic, la Fédération Française de Football ou Texdecor. Si vous voulez mettre de l’observabilité propre dans vos automatisations IA et vos assistants LLM, contactez-moi.
⭐ Analytics engineer, Data Analyst et Automatisation IA indépendant ⭐
- 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é (GTM server, 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.






