Übersicht
Langfuse ist eine Open-Source-Plattform für LLM-Engineering: Traces, Token- und Kostenanalysen, Prompt-Management und Evals. Sie lässt sich auf zwei einander ergänzende Arten mit GoModel kombinieren:- Gateway-Traces. Der OpenTelemetry-Exporter von GoModel sendet für jeden Request einen Trace an den OTLP-Endpunkt von Langfuse. Jeder Client des Gateways ist abgedeckt, ohne den Anwendungscode anzufassen, und jeder Trace zeigt das Modell, den Provider, der es bereitgestellt hat, Latenz, Token-Nutzung und Kosten, Status sowie jeden Retry und jedes Failover. Prompts und Completions werden nur hinzugefügt, wenn Sie die Erfassung von Inhalten aktivieren.
- Anwendungs-Traces. Der OpenAI-Drop-in-Wrapper des Langfuse SDK, mit GoModel als Base-URL. Langfuse zeichnet vollständige Prompts, Completions und Token-Nutzung auf; GoModel liefert darunter Routing, Failover, Caching sowie ein eigenes Audit-Log und eine eigene Kostenerfassung.
App (Langfuse SDK) -> GoModel -> OpenAI/Anthropic/Gemini/..., wobei Traces von beiden
Stationen in Langfuse ankommen.
1. Gateway-Traces an Langfuse senden
Langfuse nimmt OTLP-Traces unter/api/public/otel entgegen, authentifiziert mit dem API-Key-Paar
eines Projekts. Kodieren Sie die Keys in Base64:
.env-Datei weg – dort würden sie Teil des Werts.
Behalten Sie das Standardprotokoll
http/protobuf bei: Der OTLP-Endpunkt von Langfuse spricht kein
gRPC. Die API-Keys finden Sie in Langfuse unter Project Settings -> API Keys; selbst gehostete
Deployments können sie auch mit den
LANGFUSE_INIT_*-Variablen
vorab bereitstellen. Wie Sie Langfuse selbst betreiben, beschreibt der
Docker-Compose-Schnellstart –
git clone https://github.com/langfuse/langfuse.git && cd langfuse && docker compose up,
UI auf Port 3000.
Was in Langfuse erscheint
Jeder Gateway-Request wird zu einem Trace: einPOST /v1/chat/completions-Span mit einer
verschachtelten Generation pro Provider-Aufruf, benannt nach Operation und Modell
(chat gpt-5-mini). Die Generation enthält das Modell, mit dem der Provider geantwortet hat, die
Input- und Output-Token-Anzahl und den Finish Reason, sodass Langfuse sie anhand seines
Modellkatalogs bepreist und seine Kosten- und Token-Dashboards füllt. Ihre Metadaten enthalten
außerdem gen_ai.provider.name und gomodel.provider.name (den exakten Provider aus Ihrer
Konfiguration). Ein Request mit Failover zeigt daher eine Generation pro
Versuch – welcher Provider mit welcher Fehlerklasse fehlgeschlagen ist und welcher geantwortet hat,
mit der Nutzung beim erfolgreichen Versuch.
Gestreamte Chat Completions, die Responses API und übersetzte /v1/messages-Aufrufe erhalten eine
Generation, die bis zum Ende des Streams dauert, mit derselben Nutzung. /v1/messages-Requests,
die GoModel nativ an einen Anthropic-Provider weiterleitet, erscheinen ohne Nutzung.
Langfuse berechnet Kosten anhand seiner eigenen Preisliste. Die
Kostenerfassung von GoModel wendet Ihre Preis-Overrides und
Cache-Tarife an, daher können die beiden Summen voneinander abweichen.
Prompts und Completions erfassen
Prompts und Completions bleiben außerhalb der Telemetrie, sofern Sie die Erfassung von Inhalten nicht aktivieren:2. Aus der Anwendung mit dem Langfuse SDK tracen
Um stattdessen aus der Anwendung zu tracen – etwa um Aufrufe in eigenen Spans zu gruppieren oder Langfuse-Prompt-Versionen anzuhängen –, instrumentieren Sie sie mit dem OpenAI-Wrapper von Langfuse und richten Sie ihn auf GoModel aus. In einer bestehenden App mit dem OpenAI SDK sind dafür zwei Zeilen zu ändern:openai/gpt-5-mini, gemini/gemini-2.5-flash,
virtuelle Modelle), und jeder Aufruf erhält weiterhin Failover,
Caching, Budgets und den Audit-Trail von GoModel. Der
JS/TS-Wrapper funktioniert genauso.
3. Ein Trace von Ende zu Ende
Sind beide Wege aktiviert, erzeugt ein LLM-Aufruf zwei getrennte Langfuse-Traces – den des SDK und den des Gateways. Geben Sie den W3C-Trace-Kontext weiter, um sie zusammenzuführen: Senden Sie mit dem Request einentraceparent-Header, dann ordnet GoModel seine Spans unter dem Trace des
Aufrufers ein.
Verifiziert mit Langfuse v4.27.0 (selbst gehostet über Docker Compose) und dem Langfuse Python SDK
4.15.1: Gateway-OTLP-Traces für gepufferten und gestreamten Chat über OpenAI, Anthropic und
Gemini, Failover-Spans, Prompt-Erfassung durch das SDK über GoModel sowie die Weitergabe des
Trace-Kontexts, die beides zusammenführt.
Fehlerbehebung
Hinweise
- Gateways mit hohem Traffic können Gateway-Traces sampeln
(
OTEL_TRACES_SAMPLER=parentbased_traceidratio,OTEL_TRACES_SAMPLER_ARG=0.1) – mitparentbased_*behalten Requests, deren Aufrufer seinen Trace gesampelt hat, ihre Gateway-Spans, sodass weitergegebene Traces vollständig bleiben. - Die vollständige Referenz des Exporters – YAML-Konfiguration, Endpunkte pro Signal, Sampler, Reload-Verhalten – finden Sie im OpenTelemetry-Leitfaden. Alles dort gilt auch hier; Langfuse ist lediglich das OTLP-Backend.
- Für Dashboards zu Request-Rate- und Latenz-Metriken kombinieren Sie dies mit Prometheus-Metriken – Langfuse enthält die Traces, Prometheus die Metriken.