Back to deblo
deblo

Observabilité : tracer chaque appel LLM en production

AILog trace chaque appel LLM. SystemSetting permet la configuration sans redéploiement. ExerciseResult mesure l'apprentissage. Le tableau de bord admin derrière la route masquée.

Juste A. Gnimavo (Thales) & Claude | March 26, 2026 3 min deblo
EN/ FR/ ES
debloobservabilitéailogadminmonitoringsuivi-coûts

On ne peut pas améliorer ce qu'on ne peut pas mesurer. C'est vrai pour tout produit logiciel, mais c'est particulièrement vrai pour les produits IA où le comportement principal -- ce que le modèle dit, combien de temps il prend, combien il coûte -- est fondamentalement non déterministe.

Nous journalisons tout. Chaque appel API LLM. Chaque invocation d'outil. Chaque mouvement de crédit. Chaque résultat d'exercice. Chaque action admin.

Le modèle AILog

Au centre de notre système d'observabilité se trouve la table AILog. Elle enregistre chaque appel API LLM via OpenRouter : model_used, has_images, input_tokens, output_tokens, response_time_ms et error.

Pour un seul message utilisateur qui déclenche 3 itérations d'outils (boucle agentique), nous créons 3 entrées AILog -- une par appel LLM. Cette granularité nous permet d'analyser le comportement par itération.

Le tableau de bord admin

Le tableau de bord admin à /admin-7f3a9c2d/ fournit une vue en temps réel de la santé de la plateforme : nouveaux utilisateurs et utilisateurs actifs, répartition élève/professionnel, conversations et messages totaux, revenus, répartition par classe et matière, sessions vocales. Le hash dans l'URL (7f3a9c2d) rend l'URL admin indevinable.

Configuration dynamique : SystemSetting

Un store clé-valeur simple avec des valeurs encodées en JSON qui nous permet de changer le comportement de la plateforme sans déployer de code :

  • root_prompt : le prompt système pour le mode élève
  • llm_model : le nom du modèle pour les conversations texte
  • credit_costs : les coûts en crédits par action
  • maintenance_mode : un booléen qui retourne une page de maintenance

ExerciseResult : analytique d'apprentissage

Pour une plateforme éducative, la métrique la plus importante n'est pas la latence ou le coût -- c'est si les élèves apprennent. Le modèle ExerciseResult suit les résultats individuels de quiz : matière, classe, difficulté, sujet et si la réponse était correcte.

Le CreditLedger comme piste d'audit

Chaque mouvement de crédit est journalisé dans le CreditLedger. Ce n'est pas juste du suivi financier -- c'est une piste d'audit complète de l'économie de la plateforme.

Suivi des coûts

La métrique d'observabilité la plus critique pour un produit IA est le coût. La table AILog nous permet de calculer les coûts exacts par modèle, par jour, et de repérer les anomalies immédiatement.

Nous n'utilisons pas d'outil de suivi de coûts dédié comme Helicone ou Langfuse. À notre échelle actuelle, la table AILog et de simples agrégations SQL nous donnent tout ce dont nous avons besoin.

Ce que nous surveillons quotidiennement

Chaque matin : nouveaux utilisateurs, conversations actives, revenus, coûts LLM, taux d'erreur et latence. L'observabilité pour les produits IA est fondamentalement différente de celle des logiciels traditionnels : le comportement est stochastique, donc il faut une journalisation plus granulaire et plus de revue humaine.

Nous avons construit cette observabilité dès le premier jour. La table AILog était l'un des premiers modèles créés, avant même d'avoir une interface de chat fonctionnelle. Parce que sans observabilité, construire avec des LLM signifie brûler de l'argent et dégrader la qualité sans même le savoir.


Ceci est l'article 20 de 20 dans la série « Comment nous avons construit Deblo.ai ». Merci de nous avoir suivis.

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles

Thales & Claude deblo

Le Step Zero ne suffisait pas : comment valider un constructeur sans valider le runtime a fait tomber toutes les sessions vocales de Déblo l’heure où nous avons livré le streaming caméra temps réel

La phase 14 a livré Déblo Eyes — streaming caméra temps réel via LiveKit vers Gemini Live native audio. Le premier deploy a fait tomber toutes les sessions vocales en production en quatre-vingt-dix secondes parce que notre Step 0 avait validé le constructeur sans exercer le runtime. Le build log de comment Déblo a eu des yeux, ce qu’un pré-vol incomplet a coûté, et quels points de polish ont été livrés ou reportés.

33 min May 20, 2026
debloclaude-opus-4.7claude-codegemini-live +25
Thales & Claude deblo

Le tiret cadratin qui a tué la production : comment un slogan marketing dans un header HTTP a fait tomber le chat de Déblo pendant 24 heures

Deux jours avant la soumission App Store, tout le produit chat de Déblo s’est cassé silencieusement. Pas de spinner, pas de toast, aucune erreur dans l’UI — juste un silence radio. L’incident de 24 heures se résumait à un seul « é » dans la valeur d’un header HTTP qui levait une UnicodeEncodeError avant qu’aucune requête vers OpenRouter ne quitte le backend. Post-mortem d’une fausse hypothèse, d’une trace Sentry, et d’un fix de six lignes qui a débloqué le lancement.

30 min May 19, 2026
debloclaude-opus-4.7claude-codeincident +19
Thales & Claude deblo

Six heures, d’une page blanche à la review Apple — Comment nous avons soumis Déblo à l’App Store, en direct

Marche à marche en direct de la soumission de Déblo à l’App Store iOS en six heures : ce que les validateurs d’Apple ont rejeté (un superscript Unicode), ce que nous avons corrigé (un Promotional Text gaspillé sur des marques tierces), et les rouages de l’ASO iOS que presque tout le monde rate.

30 min May 13, 2026
debloclaude-opus-4.7claude-codeapp-store +16