Naar de inhoud springen

Zoek in de documentatie

Typ om elke pagina van de documentatie te doorzoeken.

Documentatiemenu
Uitleg + How-toDoelgroep · Ontwikkelaars & beheerders

Observability

Traces, metrics en logs voor elke agentinteractie — via OpenTelemetry

Deze pagina is automatisch vanuit het Engels vertaald. Bij verschillen geldt het origineel.Het origineel in het Engels lezen

Waarom observability ingebouwd is

Agents zijn lastig te debuggen door logs te lezen: het interessante gedrag zit in geneste LLM-aanroepen, toolaanroepen en round-trips naar de database. Agent-Lab behandelt observability als een functie van het framework, niet als een losse toevoeging — elk HTTP-request, elke modelaanroep, elke SQL-query en elke uitgaande HTTP-hop wordt een span, geëxporteerd via de industriestandaard OpenTelemetry (met de semantische conventies van OpenLLMetry en OpenInference).

Omdat alles van begin tot eind OTLP is, werkt elke collector-compatibele backend — de Grafana-stack, Elastic, Langfuse, LangWatch of de bestaande APM van je bedrijf.

Wat er wordt geïnstrumenteerd

De setup staat in agent_lab/infrastructure/metrics/tracer.py. Als OTEL_EXPORTER_OTLP_ENDPOINT is ingesteld, wordt het volgende automatisch getraced:

Instrumentor Wat je ziet
FastAPI Eén server-span per request, met route, status en duur
HTTPX Elke uitgaande HTTP-aanroep die een agent of service doet
LangChain Elke LLM-/chain-aanroep met tokengebruik — de kern van agent-tracing
OpenAI Native OpenAI-aanroepen (OpenInference-conventies)
SQLAlchemy Elk database-statement (relationeel, vector search, checkpoints)

De identiteit van de resource komt uit SERVICE_NAME (standaard Agent-Lab) en SERVICE_VERSION (standaard snapshot). Ruispaden (/status/*, /docs, /openapi.json, favicons) worden door een aangepaste sampler weggefilterd.

Inschakelen

Geen codewijzigingen — alleen een endpoint. Als OTEL_EXPORTER_OTLP_ENDPOINT is ingesteld, gaan spans via OTLP/HTTP naar <endpoint>/v1/traces, /v1/metrics en /v1/logs. Als de variabele niet is ingesteld, staat tracing uit.

# Point the app at any OTLP/HTTP collector
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 uvicorn agent_lab.main:app --reload

Voor lokale ontwikkeling regelen twee vooraf geconfigureerde stacks alle koppelingen voor je (vanuit de repository van het framework):

docker compose -f compose-grafana.yml up --build      # collector + Prometheus + Tempo + Loki + Grafana
docker compose -f compose-opensearch.yml up --build   # collector + Data Prepper + OpenSearch + Dashboards

Elke stack bevat een eigen configuratie voor de OpenTelemetry Collector, respectievelijk onder otel/grafana/ en otel/opensearch/ — die bestanden zijn de referentie voor hoe traces, metrics en logs worden gerouteerd. Zie de Deploymenthandleiding voor productietopologieën.

Backends voor LLM-observability

Naast pure OTel sluit Agent-Lab aan op speciaal ontwikkelde platforms voor LLM-observability via een TracingBackend-abstractie (gekoppeld als DI-providers in agent_lab/core/container.py). Beide meegeleverde backends worden uitsluitend via omgevingsvariabelen ingeschakeld en schakelen zichzelf stilzwijgend uit als hun variabelen ontbreken, zodat de app altijd opstart.

Langfuse

Stel de drie variabelen uit je Langfuse-project in en elke trace wordt gespiegeld naar het OTLP-endpoint van Langfuse ({LANGFUSE_HOST}/api/public/otel/v1/traces) met langfuse.trace.*-attributen — prompts, completions, tokengebruik en kosten, klaar voor de simulatie-experimenten:

Variabele Doel
LANGFUSE_HOST Basis-URL van Langfuse
LANGFUSE_PUBLIC_KEY pk-lf-…
LANGFUSE_SECRET_KEY sk-lf-…

LangWatch

Variabele Doel
LANGWATCH_ENDPOINT LangWatch-endpoint
LANGWATCH_API_KEY API-sleutel voor LangWatch

LangWatch legt per bericht een langwatch.trace()-span vast; zo loggen de simulatiesuites de scores van de judge bij experimenten.

Referentiedashboards

Stack Handleiding UI
Grafana + Prometheus + Tempo + Loki otel/GRAFANA.md http://localhost:3000
OpenSearch Dashboards otel/OPENSEARCH.md http://localhost:5601

Beide handleidingen bevatten demo-opnames van de dashboards in actie.

Uitbreiden: je eigen backend

TracingBackend maakt deel uit van de publieke API. Maak er een subklasse van om spans door te sturen naar je eigen platform, en registreer die op je Container:

from agent_lab import Container, TracingBackend


class MyBackend(TracingBackend):
    ...  # export spans wherever your platform needs them


class MyContainer(Container):
    # replace or extend the shipped tracing_backends provider list
    ...

De Configuratiereferentie toont alle observability-gerelateerde variabelen in één tabel.