Surveillance des LLM en production : métriques, qualité, coûts, sécurité
Surveillance des LLM en production : SLI pour la latence, les erreurs, les tokens, le fondement des réponses et la sécurité, ainsi que des alertes d’observabilité permettant de détecter tôt tout déclin discret de la qualité.
Sources: LLM Monitoring in Production: Metrics, Quality, Cost, and Safety
Ce guide reconstitue le parcours allant des matières premières à un système opérationnel pour : la surveillance des LLM en production : métriques, qualité, coûts et sécurité. L’accent est mis sur des étapes exécutables, des vérifications explicites et du code que vous pouvez intégrer directement dans un dépôt sans devoir deviner son intention. Pour une vue d’ensemble, définissez les entrées, le responsable de l’étape et les critères d’achèvement avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans avoir à deviner l’état caché. Documentez conjointement le parcours normal et celui de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non livrés font partie intégrante du produit, et non d’une mise en forme ultérieure.
Pour une application LLM, il ne s’agit pas seulement d’appeler un modèle : il faut définir les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu, sans avoir à deviner l’état caché. Préférez des unités petites et testables aux scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité plutôt qu’un processus embrouillé. Suivez la latence, le taux d’erreurs, le coût en tokens, le degré de fiabilité et les cas de non-conformité en matière de sécurité en tant qu’indicateurs SLI de premier ordre.
Commencez par une surveillance normale en production
Pour commencer avec une surveillance de production normale, définissez les entrées, le responsable de l’étape et les critères de fin avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Nommez les artefacts, définissez des vérifications de succès et refusez toute exécution partielle silencieuse. Suivez la latence, le taux d’erreurs, le coût des tokens, le degré de fondement et les cas de sécurité comme des indicateurs SLI de premier ordre.
La pile de surveillance qui compte vraiment
Pour la pile de surveillance qui compte réellement, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Enregistrez les temps d’exécution ainsi que le coût des jetons ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le parcours passe d’un environnement de démonstration à des environnements partagés. Suivez la latence, le taux d’erreurs, le coût des jetons, le degré de fiabilité et les incidents liés à la sécurité en tant qu’indicateurs SLI de premier plan. Pour la pile de surveillance qui compte réellement, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Documentez conjointement le parcours optimal et les procédures de récupération. Les tentatives de réexécution, les contrôles humains et la gestion des messages non livrés font partie intégrante du produit, et non d’améliorations apportées ultérieurement.
Le coût par requête est souvent la mauvaise métrique
Pour que le coût par requête soit bien considéré comme la mauvaise métrique, il faut définir les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Préférez des unités petites et testables aux scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité plutôt qu’un processus embrouillé. Alertez en cas de changement dans la distribution, et pas seulement en cas d’échecs graves. La dégradation silencieuse de la qualité est le mode d’échec le plus coûteux.
Enregistrez suffisamment de contexte pour reproduire un échec
Afin de disposer de suffisamment de contexte pour reproduire une panne, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu, sans avoir à deviner l’état caché. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Nommez les artefacts, définissez des vérifications de succès et refusez toute exécution partielle silencieuse. Alertez en cas de déviation dans la distribution, et non seulement en cas de pannes graves. La dégradation silencieuse de la qualité est le mode de panne le plus coûteux.
trace_id
request_id
session_id
timestamp
application_version
prompt_template_id
prompt_template_version
retrieval_pipeline_version
tool_schema_version
requested_model
returned_model
generation_parameters
input_tokens
output_tokens
time_to_first_output
total_generation_time
total_request_time
retrieval_query
retrieval_filters
retrieved_document_ids
retrieved_document_versions
retrieval_scores
reranker_scores
tool_name
tool_status
tool_duration
tool_retry_count
tool_side_effect_id
input_guardrail_result
output_guardrail_result
policy_reason
quality_scores
human_review_status
user_feedback
task_outcome
Ne transformez pas l’observabilité en fuite de confidentialité
Afin de ne pas transformer l’observabilité en fuite de confidentialités, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Enregistrez les temps d’exécution ainsi que le coût des tokens ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe d’un environnement de démonstration à des environnements partagés. Alertez en cas de changement dans la distribution, et non seulement en cas d’échecs graves. Une dégradation silencieuse de la qualité constitue le mode d’échec le plus coûteux. Afin de ne pas transformer l’observabilité en fuite de confidentialités, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Documentez conjointement le parcours optimal et les procédures de récupération. Les tentatives de réexécution, les contrôles humains et la gestion des messages non livrés font partie intégrante du produit, et non d’améliorations apportées ultérieurement.
La qualité ne peut être réduite à un seul score universel
Puisque la qualité ne peut être réduite à un seul score universel, il convient de définir les entrées, le responsable de l’étape et les critères de fin avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Préférez des unités petites et testables aux scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité plutôt qu’un processus embrouillé. Incluez des exemples de traçages dans un ensemble d’évaluation afin que les imprévus en production deviennent des tests hors ligne.
Utilisez des juges basés sur des LLM, mais ne les vénérez pas
Pour les juges utilisant des LLM, mais sans en faire une idole, il convient de définir les entrées, le responsable de l’étape et les critères de sortie avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu, sans avoir à deviner l’état caché. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Donnez des noms aux artefacts, définites des vérifications de succès et refusez les terminaisons partielles silencieuses. Incluez des exemples de traces dans l’ensemble d’évaluation afin que les imprévus en environnement de production deviennent des tests hors ligne.
La récupération et la génération doivent être surveillées séparément
La récupération et la génération doivent être surveillées séparément ; il convient de définir les entrées, le responsable de l’étape ainsi que les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu, sans avoir à deviner l’état caché. Enregistrez les temps d’exécution ainsi que le coût des tokens ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts permet d’éviter des factures inattendues lorsque le processus passe de l’environnement de démonstration à des environnements partagés. Mesurez le taux de rappel sur un ensemble fixe de questions avant d’ajuster les prompts ; le changement fréquent des prompts ne résout que rarement un système de récupération insuffisant. La récupération et la génération doivent être surveillées séparément ; il convient de définir les entrées, le responsable de l’étape ainsi que les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu, sans avoir à deviner l’état caché. Documentez conjointement le parcours optimal et les procédures de récupération ; les tentatives de relance, les contrôles humains et la gestion des messages non traités font partie intégrante du produit.
Pas de polissage ultérieur.Le suivi des agents est un suivi des actions
Puisque le suivi des agents correspond au suivi des actions, il convient de définir les entrées, le responsable de l’étape et les critères de fin avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Préférer des unités petites et testables aux scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité plutôt qu’un processus embrouillé. Maintenir l’état du graphe simple et typé. Les blocs imbriqués masquent le fait que tel nœud a écrit telle champ et empêchent la reprise après interruption.
Les retours des utilisateurs sont utiles, mais bruyants
Les retours des utilisateurs sont utiles, mais bruyants ; il convient donc de définir les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu, sans avoir à deviner l’état caché. Considérez cette phase comme un contrat entre les entrées et les sorties validées. Donnez des noms aux artefacts, définites des vérifications de succès, et refusez les terminaisons partielles silencieuses. Suivez la latence, le taux d’erreurs, le coût des tokens, le degré de fondement et les cas de sécurité comme des indicateurs de performance de premier ordre.
Surveillez les sous-ensembles, et non seulement les moyennes globales
Pour les tronçons de suivi, et non seulement les moyennes globales, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Enregistrez les temps d’exécution ainsi que le coût des jetons ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce du coût évite des factures inattendues lorsque le parcours passe d’un environnement de démonstration à un environnement partagé. Séparez la politique de segmentation de la politique de récupération. Modifier l’une ne doit pas obliger à réécrire l’autre lorsque les métriques de qualité évoluent. Pour les tronçons de suivi, et non seulement les moyennes globales, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Documentez ensemble le parcours optimal et le parcours de récupération. Les tentatives de réexécution, les contrôles humains et la gestion des messages non livrés font partie du produit, et non d’améliorations ultérieures.
Les alertes doivent conduire à des décisions.
Les alertes doivent conduire à des décisions
Pour que les alertes mènent effectivement à des décisions, il convient de définir les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu, sans avoir à deviner l’état caché. Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité et non un processus embrouillé. Alertez en cas de changement dans la distribution, et pas seulement en cas d’échecs graves. La dégradation silencieuse de la qualité est le mode d’échec le plus coûteux.
Définir les objectifs de niveau de service pour le LLM
Pour définir les objectifs de niveau de service du service Define LLM, il convient de préciser les entrées, le responsable de chaque étape ainsi que les critères d’achèvement avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu, sans avoir à deviner l’état interne. Considérez cette phase comme un contrat entre les entrées et les sorties validées. Donnez des noms aux artefacts, définites des vérifications de succès et refusez les terminaisons partielles silencieuses. Alertez en cas de déviation dans la distribution, et non seulement en cas d’échecs manifestes. La dégradation silencieuse de la qualité constitue le mode d’échec le plus coûteux.
Intégrez la surveillance et l’évaluation dans un seul cycle de feedback
Pour faire du suivi et de l’évaluation des builds un seul cycle de feedback, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Enregistrez les temps d’exécution ainsi que le coût des tokens ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe d’un environnement de démonstration à des environnements partagés. Alertez en cas de changement dans la distribution, et non seulement en cas d’échecs graves. Une dégradation silencieuse de la qualité est le mode d’échec le plus coûteux. Pour faire du suivi et de l’évaluation des builds un seul cycle de feedback, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Documentez ensemble le parcours normal et les procédures de récupération. Les tentatives de réexécution, les contrôles humains et la gestion des messages non livrés font partie intégrante du produit, et non d’améliorations apportées ultérieurement.
Un plan de déploiement pratique
Pour un plan de déploiement pratique, définissez les entrées, le responsable de chaque étape ainsi que les critères d’achèvement avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Préférez des unités petites et testables aux scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité plutôt qu’un processus embrouillé. Incluez des exemples de traçages dans un ensemble d’évaluation afin que les imprévus en production deviennent des tests hors ligne.
La véritable finalité du suivi des LLM
Pour atteindre le véritable objectif du suivi des LLM, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Nommez les artefacts, définissez des vérifications de succès et refusez toute exécution partielle silencieuse. Incluez des exemples de traces dans un ensemble d’évaluation afin que les imprévus en production deviennent des tests hors ligne.
Liste de contrôle opérationnelle
Pour la liste de contrôle opérationnelle, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché.
Gardez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans avoir à lire l’ensemble du système.
Alerte en cas de changement dans la distribution, et non seulement en cas de pannes graves. Le déclin silencieux de la qualité est le mode de panne le plus coûteux.
Rédigez un guide opérationnel succinct : comment rotater les clés, comment vider la file d’attente, comment revenir en arrière après la dernière ingestion.
Dokumentez à la fois le parcours normal et celui de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages échoués font partie intégrante du produit, et non d’améliorations ultérieures.
Alerte en cas de changement dans la distribution, et non seulement en cas de pannes graves. Le déclin silencieux de la qualité est le mode de panne le plus coûteux.
Au préalable de promouvoir l’ensemble des composants, figez les versions, conservez une transcription exemplaire pour le parcours critique, et vérifiez les étapes de retrait en arrière. Les environnements partagés nécessitent des limites de débit, des vérifications de location, ainsi qu’un responsable clair pour la rotation des secrets. Préférez une fiabilité banale à de brillantes démonstrations ponctuelles.
Pour la note de renforcement 0, définissez les entrées, le responsable de l’étape et les critères de fin avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Donnez des noms aux artefacts, définites des vérifications de succès et refusez toute exécution partielle silencieuse.
Pour la note de renforcement 1, définissez les entrées, le responsable de l’étape et les critères de fin avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans avoir à lire l’ensemble du système.
Pour la note de renforcement 2, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Préférez des unités petites et testables aux scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité plutôt qu’un processus embrouillé.
Pour la note de renforcement 3, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Enregistrez les temps d’exécution ainsi que le coût des tokens ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe de l’environnement de démonstration à des environnements partagés.
Pour la note de renforcement 4, définissez les entrées, le responsable de l’étape et les critères de fin avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Documentez ensemble le parcours idéal et le parcours de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non traités font partie du produit, et non d’une amélioration ultérieure.