Tomáš Kubica

Deep dive do observability AI agentů s Microsoft Agent Framework - tracing s open source nástroji Aspire Dashboard a Langfuse

Tracing AI agentů přes Aspire Dashboard a Langfuse: rychlý vývojářský pohled, anonymizace přes kolektor a specializovaná AI observability.

V prvním díle jsme probrali základní architekturu a důvody proč rád používám OpenTelemetry kolektor, abychom se minule mohli věnovat metrikám a jejich použití v Azure Monitor for Prometheus a Azure Managed Grafana. Dnes se ponoříme do trasování, nejdůležijší disciplíny pro observabilitu AI agentů, a začneme open source nástroji: Aspire Dashboard pro rychlý vývojářský pohled a Langfuse.

Open source tracing pro AI agenty

OpenTelemetry požírá svět observability a já mu nesmírně fandím. Po mnoha letech kombinace proprietárních nástrojů a přístupů s alternativní zoologickou open source SDK přišlo OpenTelemetry a má ambici pod jeden protokol, jedno SDK a API, sjednotit metriky, logy i trasovaní. Existuje řada backendů, které dělají vizualizace a mají datovou perzistenci, ale pro rychlé vývojářské zhodnocení situace jsou všechny těžkopádné, pomalé a drahé nebo požírající příliš mnoho zdrojů. Proto .NET tým vyvinul Aspire Dashboard, jednoduché řešení běžící v jediné odlehčeném kontejneru, kde můžete rychle a téměř v reálném čase vizualizovat OpenTelemetry.

Tady vidíme trasování z multi-tenant řešení ve stylu Magentic v Microsoft Agent Framework.

Přehled trace v Aspire Dashboard
Přehled trace v Aspire Dashboard

V mém případě jsem zapnul i logování jednotlivých textů a odpovědí.

Texty a odpovědi v Aspire trace
Texty a odpovědi v Aspire trace

Sbírám i vlastní atributy, například session ID, přihlášený uživatel, role uživatele, oddělení a tak podobně.

Vlastní atributy ve spanech Aspire Dashboardu
Vlastní atributy ve spanech Aspire Dashboardu

Jak se ale můžete přesvědčit v prvním díle tohoto seriálu, můj Open Telemetry kolektor mám nastaven tak, že je schopen filtrovat některá pole a pro jiná udělat hash a tím zamaskovat původní informaci. Mám vytvořenou další instanci Aspire, do které z OTEL kolektoru posílám filtrované a anonymizované informace. Všimněte si, že obsah konverzace vůbec nemám, user ID je zamaskované, ale stále mám potřebné technické informace jako jsou časy a spotřeba tokenů.

Anonymizovaný Aspire pohled bez obsahu konverzace
Anonymizovaný Aspire pohled bez obsahu konverzace

Takhle třeba vypadá volání nástroje.

Detail volání nástroje v Aspire trace
Detail volání nástroje v Aspire trace

Pro rychlé náhledy na monitoring data je Aspire Dashboard výborný - jednoduchý, malinkatý, rychlý.

Hledáte nástroj na trasování, který by byl open source a přímo specializovaný na AI scénáře? Langfuse je velmi populární, ale bohužel ani ten není plně otevřený co do governance projektu (není pod CNCF ani Apache Foundation ani Linux Foundation) a jde spíše o MIT core (nemáte tedy garanci, že vývoj půjde směrem vyhovujícím komunitě ani že nemůže dojít ke změně licence k méně otevřené - viz co se stalo s MongoDB, MySQL, Elastic, Redis, CentOS, Terraform apod.). Nicméně řešení je to velmi dobré a pojďme se na něj podívat.

Hned z úvodní obrazovky je vidět, že Langfuse není jen observabilita, ale zasahuje i do oblasti evaluace, které se v tomto seriálu dotkneme později.

Langfuse přehled projektu
Langfuse přehled projektu
Langfuse navigace k tracingu a evaluacím
Langfuse navigace k tracingu a evaluacím
Langfuse pohled na observability a datasets
Langfuse pohled na observability a datasets

Takhle vypadá konkrétní trasování - totéž, co jsme viděli u Aspire. Graficky je to jiné, ale principiálně základní informace jsou tam stejné.

Konkrétní trace v Langfuse
Konkrétní trace v Langfuse

Nicméně některé věci už nejsou přímo v datech, ale jsou odvozené - výborná je kalkulace spotřeby tokenů v penězích.

Kalkulace nákladů a tokenů v Langfuse
Kalkulace nákladů a tokenů v Langfuse

Samozřejmě opět můžeme hezky vidět samotnou konverzaci.

Konverzace v Langfuse trace
Konverzace v Langfuse trace
Detail zprávy v Langfuse trace
Detail zprávy v Langfuse trace

Langfuse napřímo parsuje některé známé parametry, například ID uživatele. Díky tomu rovnou dokáže dávat přehled uživatelů a jejich spotřeby tokenů.

Přehled uživatelů a tokenové spotřeby
Přehled uživatelů a tokenové spotřeby

To potom rozklikneme a vidíme jednotlivá trasování, session apod.

Detail uživatele a sessions v Langfuse
Detail uživatele a sessions v Langfuse
Jednotlivé traces v session
Jednotlivé traces v session

Langfuse jde i do evaluací, ale to si rozebereme později. Můžete tak zachycenou konverzaci vzít, přidat ji do nějaké datové sady, anotovat, zkoušet v simulátoru a tak podobně.

Langfuse datasets a evaluace
Langfuse datasets a evaluace

Za mě je Langfuse nejlepší trasovací nástroj zaměřený specificky na AI z kategorie těch open source. Přestože není plně otevřený co do governance, je to moje první volba pokud musím zůstat v self-managed světě. Jeho evaluační schopnosti rozebereme později a má taky svoje místo, byť projekty jako je DeepEval mu jsou velkou, byť trochu jinak zaměřenou, konkurencí.

Dnes jsme se tedy ponořili do open source variant - Aspire pro rychlý vývojářský náhled, Langfuse jako open source specializované řešení na AI. Další alternativy jsou v použití ne-specializovaných řešení určených pro vývojáře (univerzální systémy typu Azure Monitor Application Insights, Grafana Tempo, Dynatrace apod.) a v hostovaných řešeních zaměřených na AI scénáře. Na ty se podíváme příště - Azure Monitor a Azure AI Foundry. Co nabízí ve formě služby?

Aspire Dashboard

malý, rychlý a výborný pro vývojářský pohled téměř v reálném čase.

Anonymizace

stejný proud telemetrie lze přes OTEL kolektor poslat jednou plně a jednou očištěně.

Langfuse

specializovaný AI observability nástroj s tracingem, tokenovou ekonomikou a vazbou na evaluace.

Volba nástroje

Aspire na rychlý troubleshooting, Langfuse jako self-managed AI tracing varianta.

Další krok je podívat se na službové varianty - Azure Monitor a Azure AI Foundry.