Langfuse pour Claude : auto-hébergé dans l'UE
Auto-héberger Langfuse dans l'UE et tracer Claude sur Bedrock et Vertex : Docker Compose ou Helm, prix Cloud UE, code OpenTelemetry et RGPD des traces de prompts.
TL;DR
Langfuse est une plateforme open source de traçage, d’évaluation et de gestion des prompts. Pour Claude dans l’UE, deux voies : l’auto-héberger (licence MIT, Postgres, ClickHouse, Redis, S3) ou utiliser Langfuse Cloud UE en Irlande. Instrumentez AnthropicBedrock ou AnthropicVertex avec OpenTelemetry. Les traces contiennent des prompts : traitez-les dès le départ comme des données personnelles.
Qu’apporte Langfuse à une application Claude ?
Langfuse enregistre chaque appel à Claude sous forme de trace : prompt, réponse, latence, tokens et coût, rattachés à l’étape applicative qui l’a déclenché. S’y ajoutent le versionnage des prompts, les évaluations et les jeux de données. Pour une équipe européenne, l’intérêt principal est simple : toute la plateforme peut tourner dans votre propre réseau.
La documentation Langfuse liste six domaines : observabilité, gestion des prompts, évaluation (LLM-as-a-judge, évaluateurs en code, retours utilisateurs, annotation manuelle), jeux de données, tableaux de bord qualité, coût et latence, et un playground. Tout cela figure dans l’édition open source. La page tarifaire de l’auto-hébergement indique que l’édition gratuite inclut toutes les fonctions et API cœur, sans limite d’usage, sous licence MIT.
Le propriétaire a changé cette année. Le 16 janvier 2026, Langfuse a annoncé son arrivée chez ClickHouse, en précisant qu’aucun changement de licence n’est prévu et que Langfuse Cloud garde les mêmes points de terminaison et les mêmes contrats. La LICENSE indique désormais copyright 2023-2026 ClickHouse, Inc. Tout ce qui est hors de ee/, web/src/ee/ et worker/src/ee/ est sous MIT. Le code de ces dossiers exige une clé commerciale.
Cette séparation compte pour la conformité. La page sur la clé de licence range les politiques de conservation, les journaux d’audit, le masquage côté serveur et le RBAC par projet dans l’Enterprise Edition. Nous revenons plus bas sur ce que cela implique pour le RGPD. Si vos appels à Claude passent d’abord par une passerelle, notre guide LiteLLM montre le proxy qui alimente Langfuse avec un seul callback.
Comment auto-héberger Langfuse dans l’UE ?
Langfuse auto-hébergé compte six composants : un conteneur web, un conteneur worker, Postgres, ClickHouse, Redis ou Valkey et un stockage objet compatible S3. Docker Compose lance l’ensemble sur une VM en quelques minutes. Langfuse précise que ce montage n’offre ni haute disponibilité, ni mise à l’échelle, ni sauvegarde. La production passe par Kubernetes avec Helm ou par des bases managées.
La présentation de l’architecture décrit le rôle de chaque brique :
| Composant | Contenu ou rôle | Valeur Compose |
|---|---|---|
| Langfuse Web | interface et API | langfuse/langfuse:4, port 3000 |
| Langfuse Worker | traite les événements en asynchrone | langfuse/langfuse-worker:4 |
| Postgres | données transactionnelles : utilisateurs, organisations, projets, clés API | Postgres 17 |
| ClickHouse | traces, observations, scores | ClickHouse 25.12 |
| Redis / Valkey | file d’attente et cache | Redis 7 |
| S3 / stockage objet | tous les événements entrants, contenus multimodaux, gros exports | MinIO |
Les prompts se retrouvent donc à deux endroits : ClickHouse et le stockage objet. Les deux doivent résider dans votre région européenne, et les deux doivent être sauvegardés.
Pour une première instance, le guide Docker Compose recommande au moins 4 cœurs et 16 Gio de mémoire, par exemple une t3.xlarge, et environ 100 Gio de stockage :
- Cloner le dépôt :
git clone https://github.com/langfuse/langfuse.git && cd langfuse. - Remplacer chaque valeur marquée
# CHANGEMEdansdocker-compose.yml. GénérerENCRYPTION_KEYavecopenssl rand -hex 32. Les valeurs par défaut commepostgres:postgresouminiosecretsont des espaces réservés, pas des mots de passe. - Lancer
docker compose up. - Ouvrir
http://localhost:3000, créer une organisation et un projet, puis copier la clé publique et la clé secrète depuis les paramètres du projet. - Avant d’exposer la VM, vérifier les ports. Dans le fichier Compose, l’interface (3000) et MinIO (9090) écoutent sur toutes les interfaces. Postgres, ClickHouse et Redis sont liés à 127.0.0.1.
En production, le chart Helm s’installe avec helm repo add langfuse https://langfuse.github.io/langfuse-k8s puis helm install langfuse langfuse/langfuse -n langfuse. Il faut Kubernetes 1.28 ou plus récent, cert-manager et l’opérateur ClickHouse. Le chart embarque Postgres, ClickHouse, Valkey et SeaweedFS. Langfuse recommande de remplacer SeaweedFS par S3, Google Cloud Storage ou Azure Blob Storage en production. Nous irions plus loin avec un Postgres managé, ce que recommande aussi le guide de sauvegarde.
Comment tracer Claude sur Bedrock et Vertex ?
Combinez le SDK Python de Langfuse avec l’instrumenteur OpenTelemetry pour Anthropic. L’instrumenteur enveloppe messages.create dans le SDK Anthropic, et AnthropicBedrock comme AnthropicVertex utilisent cette même ressource Messages. Un seul appel à instrument() trace donc Claude sur Bedrock, sur Vertex et sur l’API directe, sans toucher aux points d’appel.
L’intégration Anthropic de Langfuse recommande opentelemetry-instrumentation-anthropic. Le code source du paquet enveloppe aussi le client Messages bêta de Bedrock. Le SDK Langfuse repose sur OpenTelemetry : le span Claude apparaît dans le span @observe de votre propre fonction. LANGFUSE_BASE_URL pointe vers votre instance, ou vers https://cloud.langfuse.com pour Langfuse Cloud UE.
# pip install -U "anthropic[bedrock,vertex]" langfuse opentelemetry-instrumentation-anthropic
# env: LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY, LANGFUSE_BASE_URL=https://langfuse.interne.example.fr
from anthropic import AnthropicBedrock, AnthropicVertex
from langfuse import get_client, observe
from opentelemetry.instrumentation.anthropic import AnthropicInstrumentor
langfuse = get_client()
AnthropicInstrumentor().instrument()
bedrock = AnthropicBedrock(aws_region="eu-west-3")
vertex = AnthropicVertex(project_id="mon-projet", region="eu")
@observe()
def resumer(ticket: str, route: str = "bedrock") -> str:
if route == "bedrock":
msg = bedrock.messages.create(
model="eu.anthropic.claude-sonnet-5",
max_tokens=512,
messages=[{"role": "user", "content": ticket}],
)
else:
msg = vertex.messages.create(
model="claude-sonnet-5",
max_tokens=512,
messages=[{"role": "user", "content": ticket}],
)
return msg.content[0].text
print(resumer("Le client demande pourquoi la facture 4711 a été débitée deux fois."))
langfuse.flush() # un script court doit vider le tampon avant de quitter
Deux détails de modèle gardent l’appel à Claude lui-même en Europe. Sur Bedrock, la fiche modèle Sonnet 5 indique que eu.anthropic.claude-sonnet-5 garde les données dans les régions UE, alors que global. route dans le monde entier. Paris (eu-west-3) figure parmi les régions source de ce profil. Sur Google Cloud, Anthropic documente region="eu" comme point de terminaison multirégional UE. Les points de terminaison régionaux précis n’y servent que Sonnet 4.6 et antérieurs. Les deux options UE coûtent 10 % de plus que le global. Le côté Google est détaillé dans notre guide Claude sur Vertex AI en Europe.
Si vos applications passent déjà par LiteLLM, inutile d’installer le SDK dans chaque service. La page LiteLLM de Langfuse ajoute callbacks: ["langfuse_otel"] sous litellm_settings, avec LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY et LANGFUSE_OTEL_HOST. L’hôte d’exemple y est https://us.cloud.langfuse.com. Remplacez-le par votre propre point de terminaison ou par https://cloud.langfuse.com, sinon votre passerelle européenne enverra les traces en Oregon.
Langfuse Cloud UE ou auto-hébergé : combien ça coûte ?
Langfuse auto-hébergé ne coûte rien en licence et n’a pas de plafond d’usage, mais vous payez la VM ou le cluster et les personnes qui l’exploitent. Langfuse Cloud UE démarre gratuitement et facture les unités au-delà du volume inclus. Sous quelques millions d’unités par mois, le Cloud revient en général moins cher. L’auto-hébergement gagne sur le contrôle, pas sur le prix.
Une unité, selon la page tarifaire, est tout point de donnée de traçage : une trace, une observation (span, événement, génération) ou un score.
| Offre | Prix mensuel | Unités incluses | Accès aux données | Remarques |
|---|---|---|---|---|
| Hobby | 0 USD | 50k | 30 jours | 2 utilisateurs, pas d’unités en plus |
| Core | 29 USD | 100k | 90 jours | utilisateurs illimités |
| Pro | 199 USD | 100k | 3 ans | rapports SOC 2 Type II et ISO 27001 |
| Enterprise | 2 499 USD | 100k | 3 ans | option région HIPAA |
| Auto-hébergé OSS | 0 USD | illimité | jusqu’à suppression | MIT, support communautaire |
| Auto-hébergé Enterprise | sur devis | illimité | votre politique | conservation, journaux d’audit, SLA |
Les unités supplémentaires coûtent 8 USD les 100k jusqu’à 1 million, 7 USD jusqu’à 10 millions, 6,50 USD jusqu’à 50 millions et 6 USD au-delà. Un accord de traitement des données (DPA) est proposé sur toutes les offres Cloud.
Notre exemple chiffré, avec nos propres hypothèses : 20 000 appels à Claude par jour, chacun produisant une trace et deux observations, soit environ 1,8 million d’unités par mois. En Core, cela donne 29 USD, plus 72 USD pour les unités jusqu’à 1 million, plus 56 USD pour les 800k suivantes, soit environ 157 USD par mois. Les tokens du même trafic coûtent bien davantage, voir notre comparatif des prix de l’API Claude.
Où se trouve le Cloud UE : les régions de données placent cloud.langfuse.com en Irlande, sur AWS eu-west-1. Les régions sont totalement séparées et les copies de sauvegarde restent dans la même juridiction. La liste des sous-traitants ultérieurs, désormais hébergée par ClickHouse, cite AWS pour l’hébergement, AWS Bedrock pour les fonctions d’IA du produit et plusieurs outils de support américains, dont Salesforce, Pylon et Google Workspace. Passez cette liste en revue avec votre DPO avant d’envoyer des prompts de production.
Que change le RGPD pour les traces de prompts ?
Une trace stocke le prompt complet et la réponse complète. Si un utilisateur saisit un nom, un numéro client ou une réclamation, la trace contient des données personnelles au sens de l’article 4, point 1, du RGPD. Celui qui héberge Langfuse devient sous-traitant de ces données. Prévoyez masquage, conservation et suppression avant la première trace de production.
Quatre leviers, et leurs limites :
- Ne pas capturer le contenu. L’instrumenteur Anthropic d’OpenLLMetry journalise prompts et réponses par défaut.
TRACELOOP_TRACE_CONTENT=falsele désactive. Pour vos propres fonctions,@observe(capture_input=False, capture_output=False)ouLANGFUSE_OBSERVE_DECORATOR_IO_CAPTURE_ENABLEDfont de même. - Masquer côté client. La documentation du masquage décrit
maskpour les données passées par les API du SDK Langfuse, et le hook plus récentmask_otel_spans, qui modifie les attributs des spans d’instrumentations tierces avant l’export. Masquée côté client, la valeur brute ne quitte jamais votre processus. Le masquage côté serveur est une fonction Enterprise. - Conservation. La conservation des données se règle par projet, 3 jours minimum, et supprime chaque nuit les traces, observations, scores et médias trop anciens. Dans le Cloud, elle exige Pro ou Enterprise. En auto-hébergement, elle exige l’Enterprise Edition. Sans elle, Langfuse auto-hébergé conserve les données indéfiniment.
- Suppression sur demande. Renseignez un
userIdsur chaque trace.DELETE /api/public/tracessupprime les traces avec leurs observations et scores, en général en 15 minutes, sans confirmation. Langfuse l’indique pour l’auto-hébergement à partir de la v4.
La conséquence gênante : l’auto-hébergement OSS vous donne la localisation des données, pas la purge automatique. Soit vous achetez la clé Enterprise, soit vous écrivez et exploitez votre propre tâche nocturne de suppression via l’API. Nous ne recommandons la seconde option que si quelqu’un en est responsable par écrit. Pour le côté fournisseur de la même question, voyez notre comparatif RGPD et hébergement de Claude.
Exploiter en interne ou externaliser ?
Exploiter Langfuse en interne, c’est exploiter ClickHouse et Postgres en production, et c’est là que se trouve le vrai coût. Les conteneurs applicatifs sont simples. La croissance des disques, les montées de version majeure, la sauvegarde de deux bases et une tâche de purge ne le sont pas. Si personne dans l’équipe n’a exploité ClickHouse, un prestataire ou Langfuse Cloud UE est le choix le plus sûr.
Les tâches récurrentes d’une instance interne :
| Tâche | Pourquoi elle compte |
|---|---|
| Mises à jour | Les versions mineures migrent automatiquement au démarrage. Les versions majeures (v2 vers v3, v3 vers v4) ont leur guide. Avec les bases embarquées, le chart Helm doit d’abord passer de v1 à v2. |
| Sauvegardes | ClickHouse contient les traces : instantanés de volume ou sauvegardes natives vers S3. Postgres contient utilisateurs et clés API : service managé ou pg_dump. |
| Disque | Les traces s’accumulent. Compose n’alerte pas. Dimensionner et surveiller ClickHouse et le stockage objet. |
| Conservation et suppression | Clé Enterprise ou tâche de purge maison, avec un responsable nommé. |
| Secrets et accès | Changer les valeurs # CHANGEME, restreindre la lecture des traces, puisque les traces sont des prompts. |
Notre propre estimation, pas un chiffre de Langfuse : un pilote sur une VM demande quelques heures par mois à une personne. Une installation haute disponibilité sur Kubernetes, avec Postgres managé et S3, demande un ingénieur plateforme qui connaît ClickHouse et un responsable des sauvegardes désigné. C’est une part réelle d’un poste, pas une tâche annexe.
Externaliser a du sens si vous n’avez pas d’expérience Kubernetes ou ClickHouse, si les traces contiennent des données sensibles et qu’il vous faut une exploitation auditée, ou si l’observabilité n’est pas votre métier. Cela n’en a pas si vous exploitez déjà ClickHouse ou un Postgres managé pour d’autres systèmes, ou si la liste des sous-traitants de Langfuse Cloud UE passe déjà chez votre DPO.
Ce qu’il faut exiger d’un prestataire qui exploite Langfuse pour vous :
- Contrat de sous-traitance selon l’article 28 du RGPD. Le prestataire traite des prompts pour votre compte. L’article 28 impose un contrat et votre autorisation écrite préalable avant tout recours à un autre sous-traitant.
- Liste des sous-traitants ultérieurs avec leur localisation, y compris pour ClickHouse, le stockage objet et les outils de support.
- Modèle d’accès. Qui, chez lui, peut ouvrir une trace, comment cet accès est journalisé, et si les journaux d’audit (fonction Enterprise) sont activés.
- SLA et fenêtre de mise à jour, y compris la gestion des versions majeures de Langfuse.
- Conservation et suppression configurées par projet, avec la preuve que la tâche nocturne tourne.
- Réversibilité. Un export documenté des données ClickHouse et Postgres et une attestation de suppression en fin de contrat.
FAQ
Langfuse est-il gratuit en auto-hébergement ?
Oui. La plateforme cœur est sous licence MIT, sans limite d’usage, avec toutes les fonctions cœur : traçage, évaluations, gestion des prompts, jeux de données. Les politiques de conservation, les journaux d’audit, le masquage côté serveur et le RBAC par projet exigent une clé Enterprise payante. L’infrastructure reste à votre charge.
Combien coûte Langfuse Cloud pour une application Claude ?
Core coûte 29 USD par mois avec 100k unités incluses, puis 8 USD par tranche de 100k jusqu’à 1 million et 7 USD les 100k au-delà. Dans notre exemple de 20 000 appels par jour à trois unités chacun, cela fait environ 157 USD par mois.
Où est hébergé Langfuse Cloud UE ?
Sur cloud.langfuse.com, en Irlande, sur AWS eu-west-1. Langfuse affirme que les régions sont totalement séparées et que les copies de sauvegarde restent dans la même juridiction. La liste des sous-traitants inclut des outils de support américains que votre DPO doit examiner.
Langfuse Cloud UE ou auto-hébergé : que choisir ?
Le Cloud UE si le DPA et la liste des sous-traitants vous conviennent et que l’expérience ClickHouse vous manque. L’auto-hébergement si les traces doivent rester dans votre réseau, ou si vous exploitez déjà ClickHouse et Postgres. L’édition OSS auto-hébergée n’a pas de purge automatique.
Langfuse trace-t-il les clients AnthropicBedrock et AnthropicVertex ?
Oui, via opentelemetry-instrumentation-anthropic. Le paquet enveloppe messages.create du SDK Anthropic, que les deux clients utilisent. Appelez AnthropicInstrumentor().instrument() après get_client(), et flush() avant la fin d’un script court.
Peut-on tenir les prompts complètement hors de Langfuse ?
Oui. Réglez TRACELOOP_TRACE_CONTENT=false pour l’instrumenteur Anthropic et désactivez la capture des entrées et sorties sur @observe. Vous gardez l’arbre des traces et les durées, sans le texte qui fait des traces des données personnelles.
Sources
- Langfuse : vue d'ensemble de l'auto-hébergement (1 octobre 2026)
- Langfuse : déploiement Docker Compose (1 octobre 2026)
- Langfuse : Kubernetes (Helm) (1 octobre 2026)
- Langfuse : mises à jour en auto-hébergement (1 octobre 2026)
- Langfuse : sauvegardes (1 octobre 2026)
- Langfuse : clé de licence et fonctions Enterprise (1 octobre 2026)
- Langfuse : tarifs Cloud (1 octobre 2026)
- Langfuse : tarifs auto-hébergement (1 octobre 2026)
- Langfuse : régions de données (1 octobre 2026)
- Sous-traitants ultérieurs de Langfuse Cloud (1 octobre 2026)
- Langfuse : conservation des données (1 octobre 2026)
- Langfuse : suppression des données (1 octobre 2026)
- Langfuse : masquage (1 octobre 2026)
- Langfuse : intégration Anthropic (1 octobre 2026)
- Langfuse : intégration LiteLLM (1 octobre 2026)
- Langfuse : arrivée chez ClickHouse (1 octobre 2026)
- langfuse/langfuse LICENSE (1 octobre 2026)
- OpenLLMetry : instrumentation Anthropic (1 octobre 2026)
- AWS : fiche modèle Claude Sonnet 5 (1 octobre 2026)
- Anthropic : Claude sur Google Cloud (1 octobre 2026)
- Règlement (UE) 2016/679 (RGPD) (1 octobre 2026)