L’observabilité de l’IA devient utile uniquement lorsque les ingénieurs peuvent agir dessus pendant un déploiement ou un incident. Un tableau de bord rempli de comptes de jetons et de percentiles de latence ne suffit pas si personne ne peut répondre à quelle requête la validation a échoué, pourquoi un mécanisme de repli s’est déclenché, ou si une hausse des coûts provient du trafic, des tentatives de nouvelle exécution ou d’un changement de modèle.
Cette checklist de mise en œuvre de l’observabilité de l’IA transforme le problème en cinq étapes ordonnées :
- Définir le contrat de télémétrie.
- Instrumenter chaque tentative du modèle.
- Valider la qualité et les coûts.
- Définir des objectifs de niveau de service et des alertes.
- Déployer avec une responsabilité claire et une gouvernance.
L’ordre compte. Les équipes qui commencent par les tableaux de bord découvrent souvent plus tard que leurs champs sont incohérents, que leurs traces masquent les nouvelles tentatives, ou que leur indicateur de succès compte des sorties inutilisables comme des requêtes saines.
Si vous avez d’abord besoin d’une vue d’ensemble plus large des signaux et de la conception des tableaux de bord, lisez le guide d’observabilité des API LLM. Cet article se concentre sur la séquence de mise en œuvre et sur les critères de sortie de chaque étape.
Checklist de mise en œuvre de l’observabilité de l’IA en un coup d’œil
| Étape | Livrable | Critère de sortie |
|---|---|---|
| 1. Contrat de télémétrie | Schéma versionné d’événements et de spans | La même requête peut être reliée entre l’application, la passerelle, la tentative du fournisseur, la validation et les enregistrements de coûts |
| 2. Instrumentation | Mesures, traces et événements structurés | Chaque tentative du modèle — y compris les nouvelles tentatives et les mécanismes de repli — apparaît séparément et comporte des dimensions bornées |
| 3. Validation | Pipeline de succès applicatif et de rapprochement des coûts | Une réponse 200 n’est pas considérée comme réussie tant que le contrat produit n’est pas validé |
| 4. SLO et alertes | Objectifs centrés sur l’utilisateur et runbooks | Chaque page d’alerte a un responsable nommé, un seuil et une première requête de diagnostic |
| 5. Déploiement et gouvernance | Déploiement progressif, rétention, accès et responsabilité du schéma | La télémétrie est utile en production sans exposer les prompts, les secrets ou une cardinalité incontrôlée |
Étape 1 : Définir le contrat de télémétrie avant de choisir les tableaux de bord
Commencez par les questions auxquelles les opérateurs doivent répondre, puis définissez l’enregistrement commun minimal qui les prend en charge. Le contrat doit survivre aux changements de fournisseur et au repli vers un autre modèle. Les champs spécifiques au fournisseur peuvent être ajoutés comme attributs facultatifs, mais ils ne doivent pas remplacer les noms internes stables.
Champs requis au niveau de la requête
Utilisez un seul request_id interne pour l’opération produit et un seul trace_id pour le traçage distribué. Ajoutez un attempt_id pour chaque appel au fournisseur.
{
"telemetry_schema_version": "1.0",
"request_id": "req_...",
"trace_id": "...",
"attempt_id": "attempt_1",
"environment": "production",
"feature": "support_reply",
"route_policy": "quality_primary_cost_fallback",
"provider": "provider_a",
"requested_model": "model_alias",
"response_model": "resolved_model_version",
"prompt_version": "support_reply_v12",
"attempt_number": 1,
"streaming": true,
"status": "completed",
"validation_status": "passed"
}
La réponse exacte du fournisseur peut utiliser des noms différents. Normalisez ces champs à la frontière afin que les tableaux de bord en aval n’aient pas besoin de requêtes distinctes pour chaque fournisseur.
OpenTelemetry maintient des conventions sémantiques pour l’IA générative pour les spans, les métriques et les événements. Utilisez-les lorsqu’elles conviennent, mais versionnez également votre contrat de télémétrie interne. Les conventions sémantiques peuvent évoluer, tandis que les requêtes d’incident et les comparaisons historiques doivent rester compréhensibles.
Séparer les dimensions bornées des preuves à forte cardinalité
Les métriques ont besoin d’étiquettes bornées. Parmi les bonnes dimensions, on trouve :
environmentfeatureprovidermodel_familyroute_policystatuserror_typevalidation_status
Conservez les identifiants de requête, les identifiants de trace, les identifiants de requête du fournisseur, les identifiants utilisateur, les empreintes de prompt et les messages d’erreur dans les traces ou les journaux, et non dans les étiquettes de métriques. Sinon, un seul déploiement peut créer des millions de séries temporelles et rendre le système de supervision plus lent ou plus coûteux que l’application qu’il observe.
Décider explicitement du mode de confidentialité
Ne faites pas de la capture brute des prompts la valeur par défaut. Définissez une politique au niveau du champ avec au moins trois modes :
| Mode | Contenu stocké | Utilisation typique |
|---|---|---|
| Métadonnées uniquement | Versions, compteurs, hachages, timing, routage, résultat de validation | Télémétrie de production par défaut |
| Échantillonné et expurgé | Échantillons sélectionnés de prompt/sortie après filtrage des secrets et des données personnelles | Débogage et revue de qualité |
| Capture brute restreinte | Charge utile chiffrée avec rétention courte et accès audité | Flux de travail exceptionnels d’incident ou d’évaluation |
La fiche pratique OWASP sur la journalisation recommande d’exclure ou de protéger les données sensibles telles que les jetons d’accès, les mots de passe et les informations personnelles. Appliquez le même principe à la télémétrie IA : ne supposez jamais qu’un backend d’observabilité constitue une archive de prompts appropriée.
Critères de sortie de l’étape 1
- Un schéma versionné existe pour les événements de requête, de tentative, de validation et de coût.
- Les nouvelles tentatives et les solutions de repli utilisent des valeurs
attempt_iddistinctes. - Les libellés des métriques sont bornés.
- La capture des prompts et des sorties dispose d’un mode de confidentialité explicite.
- Les champs spécifiques au fournisseur sont mappés vers des champs internes stables.
- La responsabilité du schéma et la revue des changements sont attribuées.
Étape 2 : instrumentez le chemin complet de la requête, pas un seul appel SDK
La trace doit commencer à l’opération visible par l’utilisateur et se poursuivre à travers la récupération, le routage, chaque tentative du modèle, la validation, l’exécution des outils et la persistance. N’instrumenter que l’appel SDK final masque les décisions qui provoquent la plupart des incidents en production.
Une hiérarchie de spans utile ressemble à ceci :
POST /assistant/run
├── load_context
├── select_route
├── model_attempt 1
│ ├── stream_first_token
│ └── tool_call weather_lookup
├── validate_output
├── model_attempt 2 fallback
│ └── stream_first_token
└── persist_result
Enregistrez la latence par composant
Une durée de bout en bout ne peut pas distinguer le délai réseau, le temps de génération du fournisseur, l’attente en file, la validation ou l’exécution des outils. Au minimum, capturez :
- Durée totale visible pour l’utilisateur
- Délai de passerelle ou de file d’attente
- Durée de la tentative chez le fournisseur
- Temps jusqu’au premier jeton pour les réponses en flux continu
- Temps entre le premier et le dernier jeton
- Durée de validation
- Durée de l’appel à l’outil
Pour le streaming, définissez précisément l’horloge du premier jeton. Déclenchez-la lorsque votre service accepte la requête, et non après la fin du routage, si la métrique est censée représenter l’expérience utilisateur.
Rendez visibles les nouvelles tentatives et les solutions de repli
Une réponse réussie après trois tentatives n’est pas équivalente à une réussite dès la première tentative. Émettez un span par tentative et incluez :
- Numéro de tentative
- Motif de nouvelle tentative ou de repli
- Catégorie d’erreur précédente
- Durée du backoff
- Fournisseur et modèle sélectionnés
- État du disjoncteur
- Si un contenu partiel a été émis
Le streaming partiel nécessite une attention particulière. Si des octets ont déjà atteint le client, rejouer silencieusement une requête vers un autre modèle peut dupliquer le contenu ou créer des actions d’outil incohérentes. La trace doit montrer si le système s’est arrêté, a concilié ou a continué. Utilisez le playbook de routage de repli pour les API LLM pour définir ce comportement avant d’activer le basculement automatisé.
Émettez des métriques à partir d’événements normalisés
Générez les métriques à partir des enregistrements normalisés de requête et de tentative plutôt que d’ajouter des compteurs ponctuels dans chaque intégration. Un ensemble minimal de métriques est :
ai_requests_total
aio_attempts_total
ai_request_duration_seconds
ai_time_to_first_token_seconds
ai_input_tokens_total
ai_output_tokens_total
ai_validation_failures_total
ai_fallbacks_total
ai_estimated_cost_usd_total
Les objets d’utilisation des fournisseurs peuvent différer, en particulier pour les jetons mis en cache ou les jetons de raisonnement. Conservez l’objet d’utilisation brut dans un stockage de diagnostic restreint lorsque cela est approprié, mais mappez les champs nécessaires au reporting inter-fournisseurs vers un enregistrement de coût commun.
Critères de sortie de l’étape 2
- Une trace relie l’opération du produit à chaque tentative du modèle.
- Les latences du premier token et de bout en bout ont des points de début et de fin documentés.
- Les nouvelles tentatives, les solutions de repli et les décisions du disjoncteur sont visibles.
- Les appels d’outil ont des spans enfants et des champs de résultat.
- Les métriques sont dérivées d’événements normalisés et versionnés.
- Les tests de charge confirment que la télémétrie ne crée pas de latence ou de cardinalité inacceptables.
Étape 3 : valider le succès de l’application et réconcilier les coûts
Le succès du transport n’est qu’une couche de la santé globale. Une réponse d’IA peut renvoyer HTTP 200 tout en échouant au contrat produit parce qu’elle est vide, mal formée, refusée, non prise en charge ou dangereuse à exécuter.
Définir une machine d’état de succès validé
Utilisez des états explicites plutôt qu’un seul booléen :
received
→ transport_succeeded
→ parsed
→ contract_validated
→ business_rule_validated
→ accepted
Les échecs doivent s’arrêter à l’étape appropriée, par exemple :
transport_failed
parse_failed
schema_failed
tool_policy_failed
business_rule_failed
cancelled
timed_out
Cela permet à l’équipe de distinguer la disponibilité du fournisseur de la qualité de l’application. Votre dénominateur principal de fiabilité devrait généralement être les opérations utilisateur acceptées, et non les réponses brutes du fournisseur.
Ajouter d’abord des validateurs déterministes
Avant de construire une évaluation subjective du modèle, mettez en œuvre des vérifications qui produisent des résultats reproductibles :
- Analyse JSON ou de schéma
- Présence des champs requis
- Noms d’outils autorisés et types d’arguments
- Présence des citations lorsque la fonctionnalité les exige
- Gestion de l’état de refus
- Limites de longueur et de format de la sortie
- Règles métier telles que des identifiants, dates, devises ou valeurs d’énumération valides
Associez les évaluations hors ligne échantillonnées à la télémétrie de production avec un identifiant d’échantillon stable. Ne placez pas de texte d’évaluation non borné dans les étiquettes de métriques. Pour les changements de modèle, utilisez un flux de travail de test d’invites multi-modèles reproductible afin que la latence et le coût soient comparés en parallèle du taux de sortie acceptée.
Calculer le coût par tâche acceptée
Le coût en jetons par requête est utile, mais le coût par tâche acceptée est la meilleure mesure opérationnelle :
cost_per_accepted_task =
total_cost_of_all_attempts / accepted_user_operations
Incluez les tentatives échouées, les nouvelles tentatives, les solutions de repli et les sorties rejetées dans le numérateur. Sinon, les problèmes de fiabilité apparaissent comme une érosion inexpliquée de la marge.
Conservez deux états de coût :
- Coût estimé calculé immédiatement à partir de l’utilisation de la réponse et d’une table de prix versionnée.
- Coût réconcilié mis à jour plus tard à partir de la facturation du fournisseur ou des exports d’utilisation lorsqu’ils sont disponibles.
Stockez la price_version ou l’horodatage effectif utilisé pour chaque estimation. Sans cela, il devient impossible d’expliquer les variations historiques de coût après une mise à jour tarifaire. Pour la conception finance et opérations, consultez le guide de gestion des dépenses des API IA.
Critères de sortie de l’étape 3
- Le succès accepté est distinct du succès HTTP.
- Les validateurs déterministes couvrent le contrat produit critique.
- Les échantillons d’évaluation peuvent être reliés aux requêtes de production.
- Le coût inclut chaque tentative, y compris les sorties rejetées.
- Le coût estimé et le coût rapproché sont des champs distincts.
- Les versions de prix sont conservées pour l’analyse historique.
Étape 4 : Définir des SLO et des alertes autour des résultats utilisateur
Les alertes doivent décrire le préjudice pour l’utilisateur ou un risque opérationnel en évolution rapide. Une seule erreur du fournisseur ne nuit pas toujours à l’utilisateur si le mécanisme de repli réussit dans le budget de latence. À l’inverse, un fournisseur pleinement disponible peut quand même produire des résultats inutilisables.
Commencez par quatre indicateurs de niveau de service
| SLI | Exemple de définition | Pourquoi c’est important |
|---|---|---|
| Taux de succès validé | Opérations acceptées / opérations éligibles | Capture les résultats utilisables, pas seulement les codes d’état |
| Taux de succès au premier essai | Opérations acceptées sans nouvelle tentative ni repli / opérations éligibles | Détecte la dégradation cachée avant que les utilisateurs ne voient des échecs |
| Latence visible par l’utilisateur | Durée de bout en bout pour les opérations acceptées | Mesure l’expérience après le routage et la validation |
| Coût par tâche acceptée | Coût de toutes les tentatives / opérations acceptées | Relie les décisions de fiabilité à l’économie unitaire |
Définissez les objectifs par fonctionnalité et par niveau de risque. Un assistant de codage synchrone, un classificateur de documents en arrière-plan et un flux de support de paiement ne devraient pas partager le même objectif de latence ou de validation.
Utilisez des alertes de burn rate et de changement
Les seuils statiques génèrent du bruit. Associez-les à des fenêtres et à des références :
- Burn rapide : le succès validé chute fortement sur 5 à 15 minutes.
- Burn lent : le budget d’erreur s’épuise sur plusieurs heures.
- Alerte de changement : le succès au premier essai baisse après un déploiement ou une mise à jour de la politique de routage.
- Anomalie de coût : le coût par tâche acceptée augmente alors que le trafic reste stable.
- Anomalie de routage : la part de repli ou la combinaison de fournisseurs change de manière inattendue.
- Anomalie de qualité : les échecs de schéma, de politique d’outil ou de règle métier dépassent la valeur de référence.
Chaque alerte doit renvoyer vers une première vue de diagnostic montrant la version de déploiement, la politique de routage, le fournisseur, le modèle, la catégorie d’erreur, l’étape de validation, le nombre de nouvelles tentatives et l’écart de coût.
Rédigez les runbooks avant le déclenchement d’alertes
Pour chaque alerte, définissez :
- Qui en est responsable.
- Quel impact utilisateur elle implique.
- Quelle requête ou vue de trace ouvrir en premier.
- Quels changements récents inspecter.
- Quelle atténuation sûre est autorisée : retour arrière, désactiver un routage, réduire la concurrence, ouvrir un circuit, ou passer à un repli vérifié.
- Quelles preuves clôturent l’incident.
Critères de sortie de l’étape 4
- Les SLO sont définis par fonctionnalité ou par niveau de risque.
- Le succès validé et le succès au premier essai sont tous deux visibles.
- Les alertes utilisent des fenêtres, des références ou le burn du budget d’erreur.
- Les anomalies de coût et de repli disposent d’alertes dédiées.
- Chaque alerte renvoie vers un runbook et une première requête de diagnostic.
- La responsabilité des alertes est testée lors d’un exercice d’astreinte.
Étape 5 : Déployer l’observabilité avec une gouvernance
L’instrumentation est une modification de production. Déployez-la progressivement, mesurez sa surcharge et faites du cycle de vie des données une partie de l’implémentation — et non une politique ajoutée plus tard.
Utiliser un déploiement progressif
- Local et test : vérifiez les noms de champs, les spans parent-enfant, la rédaction et les validateurs avec des invites synthétiques.
- Télémétrie fantôme : émettez des événements au format de production sans déclencher d’alertes ni affecter les décisions de routage.
- Petit canary : activez la télémétrie pour une part limitée du trafic de production et examinez la cardinalité, le coût d’ingestion et l’exhaustivité des traces.
- Déploiement de fonctionnalité : étendez par fonctionnalité produit ou par route, et non sur l’ensemble des charges de travail d’un seul coup.
- Activation opérationnelle : activez les rapports SLO et les alertes uniquement après l’existence de données de référence et de runbooks.
Mesurez la surcharge de télémétrie pendant le canary. Incluez le batching côté client, les échecs de l’exportateur, la pression sur la file d’attente et ce qui se passe lorsque le backend d’observabilité est indisponible. Les requêtes du modèle ne doivent pas échouer parce qu’un exportateur de télémétrie non critique est en panne.
Gérer la rétention et l’accès
Définissez la rétention par classe de données :
- Les métriques agrégées peuvent généralement être conservées plus longtemps.
- Les métadonnées de requête doivent avoir une période de rétention opérationnelle documentée.
- Les échantillons expurgés doivent avoir une rétention plus courte et un accès plus restreint.
- Les prompts bruts ou les sorties brutes, si cela est autorisé, nécessitent une finalité explicite, le chiffrement, des journaux d’audit, un comportement de suppression et des procédures d’incident.
Conservez les clés API et les identifiants des fournisseurs hors de tout chemin de télémétrie. Suivez un modèle de gestion sécurisée des clés API qui stocke les secrets côté serveur et empêche la sérialisation des en-têtes ou des variables d’environnement dans les événements.
Traiter le schéma et les tableaux de bord comme du code
Versionnez le schéma de télémétrie, les règles de validation, les définitions SLO, les tableaux de bord et les alertes avec l’application. Un changement de politique de routage doit mettre à jour à la fois l’implémentation et l’observabilité dans la même version.
Attribuez un responsable pour :
- L’évolution du schéma
- Les règles de rédaction
- Les tableaux de prix de coût
- Les versions des validateurs
- La conformité des tableaux de bord
- L’ajustement des alertes
- Les revues de rétention et d’accès aux données
Critères de sortie de l’étape 5
- Les étapes de shadow et de canary sont terminées sans capture dangereuse d’invites.
- Le comportement de surcharge de télémétrie et d’échec de l’exportateur a été testé.
- La rétention et l’accès basé sur les rôles sont documentés par classe de données.
- Les secrets et les en-têtes d’autorisation sont exclus.
- Les schémas, validateurs, tableaux de bord et alertes sont sous contrôle de version.
- Un responsable nommé examine les changements de télémétrie après les mises à jour du modèle ou du routage.
Plan de déploiement sur 30 jours de l’observabilité de l’IA
| Période | Priorité | Résultat |
|---|---|---|
| Jours 1–5 | Contrat et confidentialité | Schéma v1, dictionnaire des champs, modes de confidentialité, tests de masquage |
| Jours 6–12 | Instrumentation du parcours de requête | Traces de bout en bout, spans par tentative, métriques normalisées |
| Jours 13–18 | Validation et coût | États de succès acceptés, validateurs déterministes, versions de tarification |
| Jours 19–24 | SLO et runbooks | Objectifs au niveau des fonctionnalités, tableaux de bord, requêtes d’alerte, mesures d’atténuation |
| Jours 25–30 | Canary et gouvernance | Résultats de surcharge, règles de rétention, responsabilité, activation en production |
Le calendrier est délibérément séquentiel. Si le contrat de télémétrie change au cours de la dernière semaine, suspendez l’activation des alertes et corrigez d’abord le schéma. Déclencher des pages sur des données incohérentes crée une fausse confiance.
Erreurs courantes de mise en œuvre
Compter un HTTP 200 comme un succès
Correction : Ajoutez la validation de l’analyse, du contrat, de la politique d’outil et des règles métier avant que l’opération ne devienne accepted.
Masquer les tentatives de relance dans un seul span de modèle
Correction : Créez un span enfant et un enregistrement de coût par tentative. Conservez la raison de la nouvelle tentative ou du repli.
Consigner chaque prompt par défaut
Correction : Par défaut, limitez la télémétrie aux métadonnées. N’ajoutez du contenu échantillonné et masqué que pour un cas d’usage explicite.
Utiliser des identifiants de requête comme étiquettes de métriques
Correction : Conservez les identifiants à forte cardinalité dans les traces et les journaux. Utilisez des dimensions bornées pour les métriques.
Estimer le coût sans versions de tarification
Correction : Associez la version de la grille tarifaire ou l’horodatage effectif à chaque estimation et rapprochez ensuite.
Déclencher des alertes sur les erreurs du fournisseur sans contexte utilisateur
Correction : Déclenchez des pages sur le succès validé, la latence, la consommation du budget d’erreur et les changements de coût dangereux. Utilisez les erreurs du fournisseur comme diagnostic sauf si elles entraînent un impact utilisateur.
Foire aux questions
Qu’est-ce que l’observabilité de l’IA ?
L’observabilité de l’IA est la pratique qui consiste à relier les requêtes du modèle aux résultats applicatifs au moyen de métriques, traces, événements structurés, résultats de validation, décisions de routage, utilisation des jetons et coût. Elle va au-delà de la surveillance classique des API, car une requête d’IA peut être techniquement réussie tout en étant inutilisable pour le produit.
Que doit inclure un tableau de bord d’observabilité de l’IA ?
Commencez par le taux de succès validé, le taux de réussite au premier essai, la latence de bout en bout, le délai jusqu’au premier jeton, la part des relances et des repliements, les échecs de validation, l’utilisation des jetons et le coût par tâche acceptée. Ajoutez des vues fournisseur et modèle pour le diagnostic, mais gardez le tableau de bord principal aligné sur les fonctionnalités visibles par l’utilisateur.
Faut-il consigner les prompts et les sorties du modèle ?
Pas par défaut. Utilisez une télémétrie limitée aux métadonnées pour les opérations de production normales. Si des échantillons de contenu sont nécessaires, appliquez le masquage, l’échantillonnage, le chiffrement, une rétention courte, des contrôles d’accès et une finalité explicite. Ne consignez jamais de secrets ni d’en-têtes d’autorisation.
Comment surveiller les réponses IA en streaming ?
Mesurez le délai jusqu’au premier jeton, le délai entre le premier et le dernier jeton, l’état d’annulation, les octets ou jetons émis, et vérifiez si un contenu partiel a atteint l’utilisateur avant une défaillance. Définissez un comportement sûr pour les relances et les repliements une fois le streaming commencé.
Comment doit être surveillé le coût des API IA ?
Enregistrez les entrées, les sorties, le cache et les autres usages signalés par le fournisseur lorsqu’ils sont disponibles ; calculez une estimation immédiate à l’aide d’un tableau de prix versionné ; puis rapprochez-la des données de facturation du fournisseur. Suivez le coût par tâche acceptée afin que les tentatives échouées et les sorties rejetées restent visibles.
Où faut-il instrumenter une passerelle multi-modèle ?
Instrumentez à la fois l’opération applicative et la passerelle. L’application sait si la sortie était utile ; la passerelle sait quel modèle, fournisseur, routage, tentative de relance, solution de repli et enregistrement d’utilisation l’ont produite. Utilisez des identifiants de requête et de trace partagés pour relier les deux couches.
Mettre la checklist en pratique
Le moyen le plus rapide d’obtenir une observabilité IA utile n’est pas d’installer davantage de tableaux de bord. Il s’agit de s’accorder sur ce que signifie une opération utilisateur réussie, de tracer chaque tentative qui y contribue et de rendre visibles la qualité, le coût et les décisions de routage dans la même chaîne de preuves.
Flatkey fournit un chemin compatible avec OpenAI vers plusieurs modèles d’IA via une seule clé API et un seul endpoint. Si votre équipe évalue une architecture multi-modèle, commencez par le guide d’intégration Flatkey, puis appliquez cette checklist à la première fonctionnalité de production. Vous pouvez également consulter l’accès actuel aux modèles et les tarifs avant de définir les bases de coût et les routes de repli.



