Langfuse auto-hébergé : traces, prompts, évaluations et coûts
Déployer Langfuse v4 chez soi avec Docker Compose, y tracer une application Gemini et un agent ADK, versionner les prompts, comparer deux versions sur un jeu de données avec un juge LLM et suivre le coût de chaque appel.

Langfuse auto-hébergé : traces, prompts, évaluations et coûts
La Mutuelle Arvea (fictive, 900 salariés) a mis un assistant à disposition de ses 140 conseillers. Trois semaines plus tard, le responsable du service client transmet une réclamation : un conseiller a annoncé un délai de résiliation faux, « parce que l'assistant l'a dit ». Personne ne peut dire quelle question a été posée, quelle fiche a été retrouvée, quelle version du prompt tournait ce jour-là, ni combien coûte l'outil par conseiller. La DSI refuse par ailleurs d'envoyer les conversations, qui contiennent des données d'adhérents, vers un SaaS hors de son contrôle.
Ce projet construit la réponse : une instance Langfuse hébergée par l'équipe, dans laquelle chaque appel de modèle est tracé, rattaché à un conseiller et à une conversation, relié à la version du prompt qui l'a produit et chiffré en dollars. Les changements de prompt passent par une expérience mesurée avant d'atteindre la production.
Capture réelle du 2026-10-15 : un tour de l'agent ADK. L'agent cherche une procédure, n'en trouve pas, ouvre un ticket. Chaque appel au modèle affiche sa durée et son coût.
Ce que vous livrez
| Livrable | Où le voir |
|---|---|
| Langfuse v4.59 auto-hébergé : 6 conteneurs, secrets générés, organisation, projet et clés créés au démarrage | make up, http://localhost:3000 |
| Une application Gemini instrumentée à la main (génération, usage, lien vers le prompt) | leçon 2, src/assistant/appli_gemini.py |
| Un agent ADK instrumenté par OpenTelemetry (OpenInference), avec utilisateurs et sessions | leçon 3, src/assistant/agent_adk.py |
| Un prompt versionné (v1 en production, v2 en staging) avec repli local si Langfuse tombe | leçon 4 |
| Un jeu de 8 questions, une expérience v1 contre v2 notée par un évaluateur déterministe et un juge LLM, promotion automatique si v2 gagne | leçon 5 |
| Des prix de modèles déclarés (réflexion et cache compris) et un coût par appel, par conseiller, par expérience | leçon 6 |
Architecture
flowchart LR
subgraph APP["Votre code (Python)"]
G["Appli Gemini<br/>(génération manuelle)"]
A["Agent ADK<br/>(OpenInference)"]
E["Expériences<br/>+ juge LLM"]
end
subgraph LF["Langfuse auto-hébergé (docker compose -p lab-langfuse)"]
W["langfuse-web :3000<br/>UI + API + OTLP"]
K["langfuse-worker<br/>ingestion, coûts"]
PG[("PostgreSQL<br/>prompts, datasets, comptes")]
CH[("ClickHouse<br/>observations, scores")]
R[("Redis<br/>files d'attente, cache")]
S3[("MinIO (S3)<br/>événements bruts, médias")]
end
G -->|"OTLP/HTTP"| W
A -->|"OTLP/HTTP"| W
E -->|"OTLP/HTTP"| W
W --> S3
W --> R
R --> K
K --> CH
K --> PG
W --> PG
W --> CH
GEM["API Gemini"]
G --> GEM
A --> GEM
E --> GEM
Stack et coût
| Élément | Choix | Pourquoi |
|---|---|---|
| Langfuse | v4.59.0, fichier Compose officiel épinglé + surcharge du lab | v4 est la version courante ; le SDK v5 exige un serveur ≥ 4.59.0 |
| SDK Python | langfuse 4.15.6 | dernière version compatible avec les dépendances OpenTelemetry d'ADK 2.10 (leçon 3) |
| Modèle de l'assistant | gemini-3.5-flash-lite | 0,30 USD / 2,50 USD par million de tokens entrée / sortie |
| Juge | gemini-3.8-flash | un juge plus capable que le modèle jugé |
| Agent | Google ADK 2.10 + openinference-instrumentation-google-adk | intégration documentée par Langfuse |
Coût mesuré : make e2e complet (4 questions de démonstration, 16 réponses évaluées, 16 jugements) a coûté 0,029 USD le 2026-10-15, dont 0,026 USD pour le juge. Langfuse lui-même ne coûte que la machine : 2,6 Go de RAM mesurés pour les 6 conteneurs après le test complet.
Prérequis
- Docker 24+ avec Compose v2.24 ou plus récent, 4 Go de RAM libres, ports 3000 et 9090 disponibles.
- Python 3.10+,
make,openssl. - Une clé API Gemini (Google AI Studio). Le palier payant est conseillé : une expérience enchaîne une trentaine d'appels.
- Avoir déjà écrit un agent ADK simple et une requête
generate_content.
Programme
| Module | Leçon | À la fin, cette commande marche |
|---|---|---|
| 1. Déployer | Déployer Langfuse avec Docker Compose | make up → « prêt », connexion à l'UI |
| 2. Instrumenter | Tracer une application Gemini | make run → traces avec usage et prompt |
| Tracer un agent ADK, ses sessions et ses utilisateurs | make run → arbre agent / outils / appels | |
| 3. Améliorer | Gérer des prompts versionnés | make seed → v1 production, v2 staging |
| Jeux de données, expériences et juge LLM | make eval → v2 promue ou refusée sur mesure | |
| 4. Exploiter | Coûts, rétention et passage en production | make e2e vert, make down vérifié |
الموارد
- example.env.example2 KB
- ymldocker-compose.lab.yml1 KBعرض
- ymldocker-compose.yml13 KBعرض
- mdREADME.md2 KBعرض
- txtrequirements.txt1 KBعرض
المراجع
- Langfuse : déploiement Docker Compose (v4)langfuse.com
- Langfuse : initialisation sans interface (headless)langfuse.com
- Langfuse : intégration Google ADK (OpenTelemetry)langfuse.com
- Langfuse : relier les prompts aux traceslangfuse.com
- Langfuse : expériences via le SDKlangfuse.com
- Langfuse : suivi des tokens et des coûtslangfuse.com
- Tarifs de l'API Geminiai.google.dev
- OpenInference : instrumentation Google ADKgithub.com