Skip to content

feat(monitoring): add Langfuse LLM observability integration

zakariae yahya a demandé de fusionner feature/accounts-folders vers develop

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 default au lieu de gpt-5
  • Valeurs hardcodees dans docker-compose.langfuse-v3.yml

Root Cause

  1. Le SDK Langfuse v3 utilise usage_details au lieu de usage
  2. Le format attendu est {input, output, total} et non {prompt_tokens, completion_tokens}
  3. Les couts doivent etre passes via cost_details
  4. Credentials PostgreSQL et healthcheck host hardcodes

Solution

  1. Format des tokens corrige: usage_details avec {input, output, total}
  2. Calcul des couts ajoute via cost_details (GPT-5 pricing: $0.005/1K input, $0.015/1K output)
  3. Nouvelle API SDK v3: start_observation(as_type='generation') au lieu de start_generation
  4. 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

Rapports de requête de fusion