Bien que la plateforme Langfuse gagne en popularité pour le débogage et le monitoring des applications basées sur des modèles de langage (LLM), l’écosystème .NET ne bénéficie pas encore d’un SDK officiel, contrairement à Python ou JavaScript/TypeScript. Cet article propose une solution alternative en exploitant le standard OpenTelemetry pour intégrer Langfuse à une application .NET, via un exemple concret utilisant une API ASP.NET Core Minimal et une instance locale de Langfuse déployée avec Docker.

L’architecture repose sur six conteneurs Docker pour Langfuse, tandis que le projet .NET nécessite plusieurs packages NuGet clés : OpenAI pour interagir avec des API compatibles OpenAI (ici, un modèle local qwen3:8b via Ollama, bien que facultatif), OpenTelemetry.Extensions.Hosting pour la base, OpenTelemetry.Exporter.OpenTelemetryProtocol pour l’export des traces, ainsi que des instruments spécifiques pour ASP.NET Core et la console. L’intégration centrale passe par un méthode d’extension (`AddLangfuseExporter`) configurant l’export des données vers Langfuse via un endpoint OTLP (OpenTelemetry Protocol), avec authentification par clé publique/secrète encodée en Base64.

La configuration OpenTelemetry dans l’application se fait via `AddOpenTelemetry`, où l’on définit un ActivitySource (source des traces) et des instrumentations pour ASP.NET Core. L’ajout explicite de la source avec `AddSource` est crucial : sans cette étape, OpenTelemetry ignorera les activités associées à ce nom. Un service dédié (`AiService`) illustre l’utilisation des traces en encapsulant les appels au LLM dans une Activity, avec des tags standardisés (`input`/`output`) que Langfuse interprète pour afficher les entrées/sorties dans son interface. Les exceptions sont également capturées pour enrichir le diagnostic.

Un appel HTTP simple (ex: `POST /api/aido/how%20are%20you`) déclenche le processus, retournant un Trace ID permettant de retrouver la trace dans l’interface Langfuse, où les interactions avec le LLM sont visualisées sous forme de timeline détaillée. Le code complet, incluant la gestion des dépendances et la configuration Docker, est disponible sur GitHub. Cette approche démontre qu’en l’absence de SDK natif, OpenTelemetry offre une intégration flexible et puissante pour surveiller les applications .NET avec Langfuse, tout en restant compatible avec d’autres outils d’observabilité.