Skip to main content

Ü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.
Verwenden Sie einen der beiden Wege allein oder beide zusammen – mit Weitergabe des W3C-Trace-Kontexts werden sie pro Request zu einem einzigen Langfuse-Trace zusammengeführt (siehe Ein Trace von Ende zu Ende). 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:
Aktivieren Sie dann den Exporter von GoModel:
In einer Shell sind die Anführungszeichen wichtig: Der Header-Wert enthält ein Leerzeichen. Lassen Sie sie in einer Docker-.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.
Der Basic-Auth-Header enthält bei jedem Export Ihren Langfuse-Secret-Key. Verwenden Sie einen https://-Endpunkt, sofern Langfuse nicht auf demselben Host läuft; GoModel gibt beim Start eine Warnung aus, wenn Auth-Header mit einem unverschlüsselten Endpunkt außerhalb von Loopback konfiguriert sind.

Was in Langfuse erscheint

Jeder Gateway-Request wird zu einem Trace: ein POST /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:
Jede Generation zeigt dann die Request-Nachrichten als Input und die Response als Output, einschließlich Tool Calls und Tool-Ergebnissen. Bilder und Dateien erscheinen nur mit ihrem Typ, und sehr langer Text wird gekürzt; siehe Erfassung von Prompts und Completions.
Die Erfassung von Inhalten sendet jeden gesampelten Prompt und jede gesampelte Completion an Langfuse. Lassen Sie sie deaktiviert, wenn diese Daten das Gateway nicht verlassen dürfen; das Audit-Log zeichnet sie stattdessen in Ihrem eigenen Speicher auf.

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:
Langfuse zeichnet für jeden Aufruf, auch beim Streaming, die Nachrichten, die Completion und die Token-Nutzung auf und bepreist sie anhand seines Modellkatalogs. Da die Base-URL auf GoModel zeigt, erreicht ein einziger Client jeden konfigurierten Provider über Modell-IDs mit Provider-Präfix (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 einen traceparent-Header, dann ordnet GoModel seine Spans unter dem Trace des Aufrufers ein.
Der resultierende einzelne Trace verschachtelt den Anwendungs-Span, die SDK-Generation mit dem Prompt, den Server-Span von GoModel und die Provider-Generation – was der Benutzer gefragt hat, was es gekostet hat und wie das Gateway geroutet hat, in einer Ansicht. Beide Generationen in diesem Trace enthalten die Token-Nutzung des Aufrufs, daher addiert Langfuse die Kosten doppelt zur Summe des Traces. Wenn Sie sich auf Kosten auf Trace-Ebene verlassen, filtern Sie Kostenansichten auf eine der beiden Generationen, oder senden Sie die Traces des Gateways an ein separates Langfuse-Projekt.
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) – mit parentbased_* 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.
Zuletzt geändert am 24. Oktober 2026