Langfuse : observer ses LLM locaux (traces, prompts, évals)
Une application bâtie sur un LLM tombe en panne autrement qu'un logiciel classique : rien ne plante, la réponse est simplement moins bonne qu'hier. Sans trace de ce qui a été envoyé au modèle et de ce qu'il a répondu, on débogue à l'aveugle. Langfuse est une plateforme d'observabilité conçue pour ça, open source et auto-hébergeable, ce qui la rend cohérente avec une installation locale : les traces de vos conversations restent chez vous.
#Pourquoi observer un LLM local
Quand une réponse déçoit, trois causes sont possibles et une seule est visible sans instrumentation : le prompt final envoyé au modèle n'était pas celui que vous croyiez, les passages récupérés par la recherche documentaire étaient hors sujet, ou le modèle lui-même a échoué. Sans enregistrement, on change le prompt au hasard jusqu'à ce que ça aille mieux, sans jamais savoir pourquoi.
L'argument est le même en local qu'en ligne, à une différence près : la facture n'est plus l'indicateur qui vous alerte. Personne ne reçoit de relevé quand une chaîne d'agents part en boucle sur votre propre carte graphique ; c'est la latence et la chaleur qui le disent. L'observabilité remplace ce signal de prix par des mesures : nombre de tokens, durée, taux d'échec, qualité.
#Ce que Langfuse enregistre
Ton ChatGPT privé et gratuit sur ta machine en 1 heure — LM Studio, Ollama, Open WebUI, tes documents, sans cloud.
- Espace en ligne à vie
- PDF + fichiers
- Remboursé 30 j
- Traces
- Le déroulé complet d'une requête utilisateur : chaque étape, dans l'ordre, avec sa durée. C'est l'unité de base.
- Observations
- À l'intérieur d'une trace : les appels au modèle avec leur prompt exact et leur réponse, les étapes de récupération documentaire, les appels d'outils.
- Sessions et utilisateurs
- Le regroupement des traces par conversation et par personne, pour suivre un parcours plutôt qu'un appel isolé.
- Scores
- Une note attachée à une trace : pouce levé d'un utilisateur, résultat d'une évaluation automatique, annotation manuelle.
- Prompts
- Les gabarits de prompt, versionnés, récupérés par l'application à l'exécution plutôt qu'écrits en dur dans le code.
#L'installer chez soi
Langfuse s'auto-héberge avec Docker Compose. La pile ne se limite pas à un conteneur : outre l'application web, elle comprend un worker pour les traitements différés, une base relationnelle pour la configuration, un stockage analytique pour le volume de traces, un cache et un stockage objet. C'est plus lourd qu'un simple tableau de bord, et c'est la conséquence directe de ce qu'on lui demande : ingérer beaucoup d'événements et les interroger vite.
Sur une machine qui héberge déjà un modèle, dimensionnez d'abord pour le modèle. Une pile d'observabilité qui prend deux gigaoctets de mémoire vive n'est pas un problème en soi ; elle le devient quand ces deux gigaoctets manquent au chargement d'un modèle de 27 milliards de paramètres.
#Le brancher à Ollama ou vLLM
Langfuse n'est pas un serveur d'inférence et ne s'intercale pas dans le trafic : c'est votre application qui lui envoie les traces. Trois chemins existent selon la façon dont vous appelez votre modèle.
- 01Par le SDK, dans votre code
- 02Par une intégration de framework
- 03Par une passerelle d'API
Dans les trois cas, le point à vérifier est que le prompt réellement transmis soit enregistré, et pas seulement la question de l'utilisateur. C'est précisément l'écart entre les deux qui explique la plupart des mauvaises réponses d'un système de recherche documentaire.
- Centraliser ses appels avec une passerelle compatible OpenAI
- Déployer vLLM pour servir plusieurs utilisateurs
- Appeler Ollama depuis Python
#Gérer et versionner les prompts
Sortir les prompts du code est le bénéfice que les équipes constatent en premier. Le gabarit vit dans Langfuse, l'application le récupère à l'exécution, et chaque modification crée une version. Corriger une formulation ne demande plus de redéployer, et surtout la trace indique quelle version a produit quelle réponse : quand la qualité chute après un changement, on sait lequel accuser.
#Jeux de test et évaluation
Les traces réelles alimentent des jeux de test : vous marquez les cas intéressants — les échecs surtout — et ils deviennent une collection contre laquelle rejouer une nouvelle version de prompt ou un autre modèle. C'est ce qui permet de répondre sérieusement à « est-ce que le modèle de 14 milliards de paramètres suffit ? » au lieu d'en discuter.
Les scores viennent de trois sources : les utilisateurs, une annotation humaine dans l'interface, ou un modèle qui juge la réponse d'un autre selon une grille. Cette dernière méthode est utile et biaisée : un juge a ses préférences, il favorise les réponses longues et bien tournées. Elle sert à comparer deux versions, pas à décerner une note absolue.
#Ce que ça coûte et ce que ça ne fait pas
- Ça ne rend pas un modèle meilleur
- L'observabilité mesure, elle ne corrige rien. Elle vous dit où chercher.
- Ça stocke vos conversations
- Même auto-hébergé, le contenu des prompts est écrit sur disque. Prévoyez une politique de rétention et le masquage des données sensibles.
- C'est une pile à maintenir
- Sauvegardes, mises à jour, migrations de schéma. Pour une expérimentation personnelle, c'est disproportionné.
- Ça arrive tard, souvent
- Le bon moment pour l'installer est avant la mise en service, pas après la première panne silencieuse.
#FAQ
Langfuse est-il gratuit ?+
Fonctionne-t-il avec un modèle local ?+
Mes prompts partent-ils sur internet ?+
Quelle différence avec des logs classiques ?+
Faut-il un GPU pour Langfuse ?+
Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.