feat(monitoring): add Langfuse LLM observability integration
Langfuse v3 Token & Cost Tracking Fix + Config Externalization
Problem
Les traces Langfuse s'affichaient mais:
- Les tokens affichaient
-au lieu des valeurs - Le cout total etait toujours
$0.00 - Le modele affichait
defaultau lieu degpt-5 - Valeurs hardcodees dans docker-compose.langfuse-v3.yml
Root Cause
- Le SDK Langfuse v3 utilise
usage_detailsau lieu deusage - Le format attendu est
{input, output, total}et non{prompt_tokens, completion_tokens} - Les couts doivent etre passes via
cost_details - Credentials PostgreSQL et healthcheck host hardcodes
Solution
- Format des tokens corrige:
usage_detailsavec{input, output, total} - Calcul des couts ajoute via
cost_details(GPT-5 pricing: $0.005/1K input, $0.015/1K output) - Nouvelle API SDK v3:
start_observation(as_type='generation')au lieu destart_generation - Externalisation docker-compose: PostgreSQL credentials et healthcheck host
Fichiers modifies
| Fichier | Modification |
|---|---|
Integration/monitoring/langfuse_client.py |
Nouvelle API v3, usage_details, cost_details |
Agent/.env |
Suppression duplication variables Langfuse |
docker-compose.langfuse-v3.yml |
Externalisation PostgreSQL credentials et healthcheck |
Integration/.env |
Ajout LANGFUSE_DB_USER, LANGFUSE_DB_PASSWORD, LANGFUSE_DB_NAME, CLICKHOUSE_HEALTHCHECK_HOST |
Variables externalisees
| Variable | Valeur | Description |
|---|---|---|
LANGFUSE_DB_USER |
langfuse |
User PostgreSQL Langfuse |
LANGFUSE_DB_PASSWORD |
langfuse |
Password PostgreSQL Langfuse |
LANGFUSE_DB_NAME |
langfuse |
Database name PostgreSQL |
CLICKHOUSE_HEALTHCHECK_HOST |
localhost |
Host interne healthcheck conteneur |
Resultat
| Avant | Apres |
|---|---|
Tokens: -
|
Tokens: 500 -> 1,500 (total 2,000)
|
Cost: $0.00
|
Cost: $0.025
|
Note technique
Le modele affiche default dans l'UI Langfuse (bug SDK OpenTelemetry). Les tokens et couts sont correctement affiches.
Checklist
-
Tokens affiches correctement (input/output/total) -
Couts calcules automatiquement -
Pas de hardcoding -
Logging au lieu de print -
Code nettoye -
docker-compose externalise -
.env mis a jour