Une application LLM sans traces est une boîte noire. On espère qu’elle fonctionne, mais on ne peut ni comprendre ses erreurs, ni l’améliorer de manière systématique. L’observabilité des prompts consiste à instrumenter chaque appel pour capturer un ensemble riche de métadonnées : le prompt final, le contexte injecté, la réponse, la latence, le coût, et le feedback utilisateur. Ces traces sont la matière première indispensable pour itérer, débugger et optimiser votre application.
la boucle d’amélioration par l’observabilité
Les traces ne sont pas juste des logs à archiver. Elles alimentent une boucle continue d’amélioration.
quoi tracer ?
Pour chaque appel à un LLM, il faut enregistrer un ensemble de données structurées.
Une table simple dans votre base de données est un excellent point de départ pour stocker ces traces.
CREATE TABLE llm_traces (
trace_id UUID PRIMARY KEY,
trace_timestamp TIMESTAMPTZ,
route_name TEXT,
user_id TEXT,
prompt_template_version TEXT,
final_prompt TEXT,
raw_response TEXT,
cost_eur NUMERIC,
input_tokens INT,
output_tokens INT,
latency_ms INT,
user_feedback INT -- ex: 1 pour utile, -1 pour pas utile, 0 pour pas de feedback
);
comment lire les traces et agir
Les traces collectées permettent de répondre à des questions business et opérationnelles cruciales.
- Quels sont les prompts les plus coûteux ? -> Identifier les cas d’usage qui consomment le plus de tokens pour les optimiser en priorité.
- Quelles sont les réponses les moins utiles ? -> Analyser les réponses avec un feedback utilisateur négatif pour réécrire les instructions du prompt.
- Quelle route est la plus lente ? -> Isoler les goulots d’étranglement pour ajuster la taille du modèle ou ajouter une couche de cache.
- Quels segments d’utilisateurs rencontrent le plus de problèmes ? -> Identifier des patterns d’échec pour des groupes d’utilisateurs spécifiques.
respecter la vie privée
Tracer les interactions est essentiel, mais doit se faire dans le respect de la vie privée des utilisateurs.
- Ne pas logger de PII en clair: Mettre en place des filtres pour détecter et masquer (ou anonymiser) les informations personnelles identifiables avant de les stocker.
- Rétention courte: Ne conserver les traces que le temps nécessaire. Mettre en place des politiques de suppression automatique.
- Accès limité: Limiter l’accès aux traces brutes à un nombre restreint de personnes habilitées.
la boucle de qualité continue
Les traces alimentent un processus régulier d’évaluation et de mise à jour.
- Golden sets: Constituez un jeu de données de test (“golden set”) à partir des traces réelles (anonymisées).
- Évaluation hebdomadaire: Exécutez automatiquement ce golden set sur la version actuelle de vos prompts pour détecter les régressions.
- Changelog: Maintenez un journal des changements des prompts et des modèles pour corréler les évolutions avec les métriques de performance.
pièges frequents
-
Symptôme: On a des téraoctets de logs, mais on ne sait pas quoi en faire.
- Cause: Logger pour logger, sans objectif clair.
- Correctif: Commencer par 3 questions simples auxquelles on veut répondre (ex: quel est le coût moyen ? quel est le taux de satisfaction ? quelle est la p95 de latence ?) et ne tracer que les données nécessaires pour y répondre.
-
Symptôme: Les traces contiennent des informations personnelles en clair.
- Cause: Absence de filtrage en amont.
- Correctif: Le masquage des PII n’est pas une option. Il doit être une étape obligatoire et automatisée avant toute écriture dans le store de traces.
-
Symptôme: Les analyses sont biaisées car on ne trace que les succès.
- Cause: Oublier de logger les erreurs, les timeouts ou les réponses bloquées par les garde-fous.
- Correctif: Tracer toutes les tentatives d’appel, y compris les échecs. Les erreurs sont souvent plus riches en enseignements que les succès.
faq
-
Ai-je besoin d’un outil d’observabilité LLM dédié ? Non, pas pour commencer. Une table dans PostgreSQL ou BigQuery et un dashboard simple suffisent amplement pour démarrer. Les outils spécialisés (LangSmith, Arize, etc.) deviennent pertinents lorsque vous devez gérer des milliers de traces par jour et automatiser la détection d’anomalies.
-
Combien coûte le stockage des traces ? Moins cher que de naviguer à l’aveugle. Le coût du stockage de texte est relativement faible. Une trace complète pèse quelques kilo-octets. Le coût de stockage est négligeable par rapport au coût des appels API et au coût d’opportunité de ne pas améliorer votre produit.