Retour aux articles • IA • • 3 min de lecture

Langfuse : suivre ses coûts LLM

Auto-héberger Langfuse pour tracer les graphes d'appels multi-agents OpenTelemetry, la latence TTFT et le coût FinOps exact par modèle IA.

Langfuse : suivre ses coûts LLM

Dès qu’une architecture met en œuvre plusieurs modèles en parallèle (routage intelligent, Karpathy LLM Council, agents autonomes et sous-agents spécialisés), deux angles morts apparaissent rapidement : quel sous-agent dégrade la latence globale ? et quelle fonctionnalité consomme réellement le budget API mensuel ?

Langfuse (langfuse/langfuse) est la plateforme open-source de référence, auto-hébergeable en Docker, dédiée au traçage distribué (Tracing OpenTelemetry), à la gestion de versions de prompts et au pilotage FinOps des systèmes LLM.


Suivre ce que coûtent vraiment ses agents

Contrairement à un proxy synchrone qui ajoute de la latence sur le chemin critique des requêtes, le SDK Langfuse (ou l’exportateur OpenTelemetry standard) expédie les événements en arrière-plan par lots (batching asynchrone) vers l’instance locale :

Architecture & Flux : Langfuse : observabilité et FinOps des LLM

Chaque exécution complexe est décomposée en trois niveaux hiérarchiques :

  1. Trace : la requête globale de bout en bout (identifiant de session, utilisateur, fonctionnalité métier et statut final).
  2. Span : les étapes intermédiaires non-LLM (extraction AST, recherche vectorielle, appel d’API externe, validation de garde-fous).
  3. Generation : chaque appel exact à un modèle (Claude Opus, GPT, Gemini) avec le prompt envoyé, la réponse brute, le TTFT (Time-To-First-Token), le taux de Prompt Caching et le coût calculé au centime près.

Déploiement Docker et intégration Python

L’instrumentation d’un service Python existant s’effectue via un simple décorateur @observe() compatible avec asyncio :

# Démarrage de la stack Langfuse locale (PostgreSQL + ClickHouse + Web UI)
docker compose -f docker-compose.langfuse.yml up -d

# Vérification de l'état de santé de l'API d'ingestion locale
curl -s http://localhost:3000/api/public/health | jq .
Animation exécution CLI dans le terminal

–> L’analyse des traces dans Langfuse permet d’identifier immédiatement les boucles d’agents bavardes et de basculer les tâches de classification simples vers des modèles légers ou du cache local, réduisant la facture API de 40 % à 65 %.


Caractéristiques

Dimension d’ObservabilitéLogs Fichiers / stdoutFacturation Brute Cloud (OpenAI/GCP)Langfuse (Self-Hosted)
Graphe d’appels multi-agents imbriqués❌ Illisible en parallèle❌ Non corrélé✅ Arbre de Spans OpenTelemetry visuel
Imputation FinOps par feature / agent❌ Calcul manuelAgrégé par clé API uniquement✅ Coût exact par tag, user et étape
Mesure du TTFT & Prompt Cache Hit❌ AbsentPartiel✅ Métriques temps réel par modèle
Souveraineté des données (Zero-Cloud)✅ Locale❌ Cloud tiers✅ 100 % auto-hébergé (Docker)
Impact sur la latence applicative~0 ms0 ms~0 ms (Ingestion asynchrone en tâche de fond)
CommandeDescription
`@observe()`
Décorateur Python traçant automatiquement les entrées, sorties, temps d'exécution et erreurs d'une fonction.
`langfuse_context.update_current_trace(tags=[...])`
Attache des étiquettes métiers (ex: council, osint, bugfix) à la trace active pour le filtrage FinOps.
`langfuse.flush()`
Force l'envoi immédiat des événements en attente avant l'arrêt d'un script CLI court.
`GET /api/public/metrics/daily`
Endpoint REST retournant la consommation quotidienne de tokens et les coûts agrégés par modèle.