LLM-API-Observability ist die Praxis, jeden Modellaufruf in genĂŒgend strukturierte Nachweise zu verwandeln, um vier Produktionsfragen zu beantworten:
- War die Anfrage erfolgreich?
- Wie lange hat der Nutzer gewartet?
- Was hat die Anfrage verbraucht und gekostet?
- Warum hat das System dieses Modell, einen Retry oder einen Fallback gewÀhlt?
Gewöhnliches HTTP-Monitoring ist notwendig, aber nicht ausreichend. Ein 200 OK kann dennoch ungĂŒltiges JSON, eine leere Antwort, eine abgelehnte Antwort, einen fehlerhaften Tool-Aufruf oder eine Ausgabe enthalten, die gegen den Anwendungskontrakt verstöĂt. Eine Anfrage kann auĂerdem nach drei Versuchen erfolgreich sein und dabei stillschweigend viermal mehr kosten als erwartet.
Das praktische Ziel ist nicht, jeden Prompt zu protokollieren. Es geht darum, einen kleinen, konsistenten Telemetrievertrag zu schaffen, der Anwendungsergebnisse mit Modell, Provider, Route, Latenz, Token-Nutzung, Retries und Kosten verknĂŒpft â ohne Nutzerdaten preiszugeben.
Dieser Leitfaden zeigt, wie Sie diesen Vertrag mit Metriken, Traces, strukturierten Logs, Service-Level-Objectives, Dashboards und Alerts aufbauen.
Was LLM-API-Observability erklÀren muss
Ein nĂŒtzliches Observability-System ermöglicht es einem Engineer im On-Call, schnell von einem Symptom zu einer Ursache zu gelangen.
| Produktionsfrage | Benötigte Nachweise |
|---|---|
| Warum ist die Latenz angestiegen? | End-to-End-Dauer, Provider-Dauer, Wartezeit in der Warteschlange, Zeit bis zum ersten Token, Modell, Region, Anzahl der Retries |
| Warum sind die Kosten gestiegen? | Eingabe-Token, Ausgabe-Token, gecachte Token, wenn verfĂŒgbar, Preis-Snapshot des Modells, Versuche, angenommene Task-Rate |
| Warum sehen Nutzer schlechte Ergebnisse? | Ergebnis des Output-Validators, Schema-Fehler, Ablehnungsstatus, Tool-Call-Ergebnis, Bewertungs-Score, Prompt-Version |
| Warum wurde Traffic auf ein anderes Modell verschoben? | Routing-Policy, ausgewÀhltes Ziel, Fallback-Grund, Zustand des Circuit Breakers, Provider-Fehler |
| Ist der Vorfall provider-spezifisch? | Provider, Modell, Konto oder Deployment, Region, Statuscode, Provider-Request-ID |
| Können wir eine Anfrage reproduzieren? | Interne Request-ID, Trace-ID, bereinigter Input-Fingerprint, Prompt-Version, Modellparameter |
Die erste Designregel ist einfach: Messen Sie den Anwendungskontrakt, nicht nur den Transportkontrakt.
Die fĂŒnf Telemetrie-Ebenen
LLM-API-Monitoring wird einfacher, wenn Sie fĂŒnf Ebenen trennen, statt jedes Signal in ein einziges Dashboard zu zwĂ€ngen.
1. Request-Metriken
Metriken zeigen Trends und liefern die Grundlage fĂŒr Alerts. Erfassen Sie ZĂ€hler und Histogramme fĂŒr:
- Anzahl der Requests
- End-to-End-Latenz
- Zeit bis zum ersten Token bei Streaming-Antworten
- Latenz des Providers oder Modellaufrufs
- Erfolgreiche, fehlgeschlagene, abgebrochene und zeitĂŒberschrittene Requests
- HTTP-429- und 5xx-Antworten
- Retry- und Fallback-Versuche
- Eingabe-, Ausgabe- und gecachte Token
- GeschÀtzte und abgeglichene Kosten
Metriken sollten begrenzte Labels haben. Gute Labels sind provider, model, route, environment, status und error_type. Vermeiden Sie Labels mit hoher KardinalitÀt wie User-IDs, Request-IDs, Prompt-Text oder vollstÀndige URLs.
2. Verteilte Traces
Ein Trace erklÀrt den Weg einer einzelnen Anfrage durch Ihre API, die Queue, die Retrieval-Schicht, Tool-Aufrufe, das Gateway und den Modellanbieter.
Eine praktische Trace-Hierarchie sieht so aus:
POST /support/reply
âââ retrieve_customer_context
âââ llm.route
â âââ llm.attempt provider_a/model_primary
â âââ llm.attempt provider_b/model_fallback
âââ validate_structured_output
âââ persist_draft
Jeder Modellversuch sollte sein eigener Span sein. Wenn zwei Anbieter ausprobiert werden, muss der Trace zwei Versuche zeigen, statt beide in einem undurchsichtigen llm.call-Span zu verbergen.
Die semantischen Konventionen fĂŒr Generative AI von OpenTelemetry bieten einen nĂŒtzlichen gemeinsamen Wortschatz fĂŒr Gen-AI-Spans, Metriken und Events. Behandeln Sie die Version der Konvention als Teil Ihres Telemetrie-Schemas, damit Sie bei Ănderungen der Attribute gezielt migrieren können.
3. Strukturierte Logs
Logs erfassen einzelne Entscheidungen und diagnostischen Kontext, der als Metrik-Label zu teuer oder zu detailliert wÀre.
NĂŒtzliche Events sind unter anderem:
llm.request.startedllm.route.selectedllm.retry.scheduledllm.fallback.selectedllm.response.validatedllm.request.completedllm.request.failed
Jedes Event sollte dieselben Korrelationsfelder enthalten: request_id, trace_id, route, model, provider, prompt_version und attempt.
4. QualitÀts- und Vertrags-Signale
QualitĂ€t lĂ€sst sich nicht aus Statuscodes ableiten. FĂŒgen Sie, wo immer möglich, deterministische Validatoren hinzu:
- JSON wurde erfolgreich geparst
- Erforderliche Schemafelder sind vorhanden
- Tool-Name und Argumente sind zulÀssig
- Die Zitatenliste ist vorhanden, wenn sie erforderlich ist
- Die AusgabelÀnge liegt innerhalb der Produktgrenzen
- Abbruch- oder Sicherheitsstatus wird erkannt
- GeschĂ€ftsregelprĂŒfungen bestehen
FĂŒr subjektive Aufgaben fĂŒgen Sie spĂ€ter Stichproben-Ergebnisse der Bewertung hinzu. Halten Sie Online-Anfrage-Telemetrie und Offline-Evaluation ĂŒber eine stabile Request- oder Sample-ID zusammengefĂŒhrt.
Bevor Sie ein Produktionsmodell ersetzen, verwenden Sie einen reproduzierbaren Workflow zur Bewertung von KI-Modellen, statt sich allein auf aggregierte Latenz und Tokenpreis zu verlassen.
5. Kosten und GeschÀftsergebnisse
Token-Zahlen sind Nutzungssignale, keine GeschĂ€ftsergebnisse. Verbinden Sie die Modellnutzung mit der Einheit, die fĂŒr Ihr Produkt relevant ist:
- Kosten pro akzeptierter Support-Antwort
- Kosten pro abgeschlossenem Coding-Task
- Kosten pro generiertem Produktbild, das von einem Reviewer freigegeben wurde
- Kosten pro angereichertem qualifizierten Lead
- Kosten pro erfolgreicher strukturierter Extraktion
Die nĂŒtzlichste Formel ist:
effektive Kosten pro akzeptierter Aufgabe = Gesamtkosten des Modells / akzeptierte Aufgaben
Das macht falsche Einsparungen sichtbar. Ein gĂŒnstigeres Modell, das mehr Retries, Validierungsfehler oder manuelle Nacharbeit verursacht, kann die effektiven Kosten erhöhen.
Ein minimales Telemetrie-Contract fĂŒr jeden Modellaufruf
Beginnen Sie mit einem versionierten Ereignisschema. Die genauen Feldnamen können Ihrem Observability-Stack folgen, aber die Konzepte sollten stabil bleiben.
{
"schema_version": "llm-observability.v1",
"timestamp": "2026-07-30T09:00:00Z",
"request_id": "req_internal_01",
"trace_id": "7c4b...",
"environment": "production",
"feature": "support_reply",
"route": "support-default",
"provider": "provider-a",
"model": "model-primary",
"prompt_version": "support-reply-v12",
"attempt": 1,
"stream": true,
"status": "success",
"http_status": 200,
"latency_ms": 1840,
"time_to_first_token_ms": 410,
"input_tokens": 1640,
"output_tokens": 284,
"cached_input_tokens": 900,
"estimated_cost_usd": 0.0068,
"validator": "bestanden",
"fallback_reason": null,
"provider_request_id": "redacted-or-scoped-value"
}
Machen Sie rohe Prompts und Antworten nicht zu erforderlichen Feldern. Speichern Sie sie nur, wenn ein klarer Bedarf, eine genehmigte Aufbewahrungsrichtlinie, angemessene Zugriffskontrollen und ein sicherer Redaktionspfad vorhanden sind.
Metriken, die auf das erste Dashboard gehören
Beginnen Sie nicht mit 40 Panels. Erstellen Sie ein operatives Dashboard, das beantwortet, ob Benutzer gĂŒltige Ergebnisse innerhalb des Latenz- und Kostenbudgets erhalten.
Traffic und Erfolg
- Anfragen pro Minute
- Transport-Erfolgsrate
- Validierte Erfolgsrate
- Abbruchrate
- Timeout-Rate
- Retry-VerstÀrkungsfaktor
- Fallback-Rate
Validated success rate sollte das primĂ€re VerfĂŒgbarkeitsignal sein:
validierte Erfolgsrate = Anfragen, die den Anwendungskontrakt bestehen / berechtigte Anfragen
Das ist strenger und nĂŒtzlicher als 2xx responses / requests.
Latenz
Verfolgen Sie Verteilungen statt Durchschnittswerte:
- End-to-End-p50-, p95- und p99-Latenz
- Provider-Call-p50-, p95- und p99-Latenz
- Zeit bis zum ersten Token p50 und p95
- Warteschlangen-Wartezeit p95
- Tool-AusfĂŒhrungszeit p95
- Validierungsdauer p95
Trennen Sie Streaming- und Non-Streaming-Routen. Eine Streaming-Anfrage kann sich mit einer guten Zeit bis zum ersten Token reaktionsschnell anfĂŒhlen, selbst wenn die gesamte Abschlusszeit lang ist.
ZuverlÀssigkeit
- 429-Rate nach Provider und Modell
- 5xx-Rate nach Provider und Modell
- Netzwerkfehler-Rate
- Rate fehlerhafter oder schemaungĂŒltiger Antworten
- Rate von Tool-Call-Fehlern
- Offener Zustand des Circuit Breakers
- Rate ausgeschöpfter Retry-Budgets
Wenn Ratenlimits eine hĂ€ufige Ursache sind, verwenden Sie eine begrenzte LLM-Retry-Strategie fĂŒr RPM- und TPM-Limits statt unkoordinierter Retries in jedem Anwendungs-Worker.
Nutzung und Kosten
- Input- und Output-Tokens nach Feature
- Tokens pro akzeptierter Aufgabe
- GeschÀtzte Kosten pro Anfrage
- Kosten pro akzeptierter Aufgabe
- Retry-Kosten
- Fallback-Kostendifferenz
- TĂ€gliche Ausgaben im Vergleich zum Budget
- KostenschÀtzung im Vergleich zur Provider-Rechnung oder zum Usage-Export
Behalte sowohl estimated_cost als auch reconciled_cost bei. Der erste ermöglicht eine nahezu Echtzeit-Ăberwachung; der zweite korrigiert SchĂ€tzungen, nachdem autoritative Abrechnungsdaten eingetroffen sind.
Wie Retries und Fallback-Routing nachverfolgt werden
Retries und Fallbacks sind die Stellen, an denen grundlegendes Monitoring meist versagt. Wenn alle Versuche ein einziges Statusfeld teilen, kann eine teure und beeintrÀchtigte Anfrage gesund aussehen.
Erfasse fĂŒr jeden Versuch diese Felder:
| Feld | Warum es wichtig ist |
|---|---|
attempt |
Zeigt die VerstÀrkung und die Reihenfolge der Entscheidungen |
target_id |
Identifiziert Anbieter, Deployment, Region und Modell ohne Geheimnisse |
reason |
Unterscheidet Timeout, 429, 5xx, Validierungsfehler und Policy-Routing |
remaining_budget_ms |
Beweist, dass der Router die dem Nutzer sichtbare Frist eingehalten hat |
safe_to_repeat |
Macht Idempotenzentscheidungen explizit |
output_started |
Verhindert unsicheres Fallback, nachdem Streaming-Ausgabe den Client erreicht hat |
contract_compatible |
BestĂ€tigt, dass das nĂ€chste Ziel das erforderliche Schema, die Tools und die ModalitĂ€t unterstĂŒtzt |
Ein produktionsreifes LLM-API-Fallback-Routing-Playbook sollte die Entscheidungsrichtlinie definieren. Observability sollte dann belegen, dass der Router ihr gefolgt ist.
TypeScript-Instrumentierungsmuster
Das folgende Beispiel hĂ€lt die Telemetrie unabhĂ€ngig von einem bestimmten Modell-SDK. Es zeichnet einen ĂŒbergeordneten Route-Span und fĂŒr jeden Versuch einen untergeordneten Span auf.
import { context, SpanStatusCode, trace } from "@opentelemetry/api";
const tracer = trace.getTracer("ai-gateway");
type ModelAttempt = {
provider: string;
model: string;
reason: "primary" | "retry" | "fallback";
};
export async function runModelRoute(
attempts: ModelAttempt[],
callModel: (attempt: ModelAttempt) => Promise<{
text: string;
usage?: { inputTokens?: number; outputTokens?: number };
providerRequestId?: string;
}>,
) {
return tracer.startActiveSpan("llm.route", async (routeSpan) => {
routeSpan.setAttribute("app.llm.route", "support-default");
routeSpan.setAttribute("app.llm.attempt_limit", attempts.length);
try {
for (const [index, attempt] of attempts.entries()) {
const result = await tracer.startActiveSpan(
"llm.attempt",
{ attributes: {
"gen_ai.system": attempt.provider,
"gen_ai.request.model": attempt.model,
"app.llm.attempt": index + 1,
"app.llm.reason": attempt.reason,
} },
context.active(),
async (attemptSpan) => {
const startedAt = performance.now();
try {
const response = await callModel(attempt);
const valid = response.text.trim().length > 0;
attemptSpan.setAttribute("app.llm.validated", valid);
attemptSpan.setAttribute(
"gen_ai.usage.input_tokens",
response.usage?.inputTokens ?? 0,
);
attemptSpan.setAttribute(
"gen_ai.usage.output_tokens",
response.usage?.outputTokens ?? 0,
);
attemptSpan.setAttribute(
"app.llm.latency_ms",
performance.now() - startedAt,
);
if (!valid) {
throw new Error("response_validation_failed");
}
attemptSpan.setStatus({ code: SpanStatusCode.OK });
return response;
} catch (error) {
attemptSpan.recordException(error as Error);
attemptSpan.setStatus({
code: SpanStatusCode.ERROR,
message: (error as Error).message,
});
return null;
} finally {
attemptSpan.end();
}
},
);
if (result) {
routeSpan.setAttribute("app.llm.selected_attempt", index + 1);
routeSpan.setStatus({ code: SpanStatusCode.OK });
return result;
}
}
throw new Error("llm_route_exhausted");
} catch (error) {
routeSpan.recordException(error as Error);
routeSpan.setStatus({
code: SpanStatusCode.ERROR,
message: (error as Error).message,
});
throw error;
} finally {
routeSpan.end();
}
});
}
In der Produktion fĂŒgen Sie Ihre MetrikzĂ€hler und strukturierten Log-Events zusammen mit den Spans hinzu. Erfassen Sie auĂerdem nach Möglichkeit die Request-IDs des Anbieters; sie sind oft unerlĂ€sslich, wenn ein Vorfall an einen Modellanbieter eskaliert wird. Halten Sie diese Kennungen aus öffentlichen Fehlermeldungen heraus.
Logs ohne Prompt-Leakage
Der sicherste Standard ist metadata-first Logging.
StandardmĂ€Ăig protokollieren
- Interne Request- und Trace-IDs
- Provider-Request-ID
- Feature- und Routenname
- Provider, Modell und Deployment-Alias
- Version der Prompt-Vorlage
- Parameter wie Temperature und maximale Ausgabe-Tokens
- Token-Nutzung
- Latenz und Zeit bis zum ersten Token
- Fehlerklasse und Retry-Entscheidung
- Ergebnis des Validators
- Bereinigte Tool-Namen
StandardmĂ€Ăig nicht protokollieren
- Roh-Prompts oder -Antworten
- API-SchlĂŒssel oder Authorization-Header
- Kundengeheimnisse
- Abgerufene Dokumente
- Tool-Argumente, die personenbezogene oder regulierte Daten enthalten
- VollstÀndige Dateipfade oder DatenbankdatensÀtze
- Signierte URLs
Wenn die Erfassung von Inhalten fĂŒr Debugging oder Evaluierung notwendig ist, erfassen Sie diese separat, schwĂ€rzen Sie sie vor der Speicherung, beschrĂ€nken Sie den Zugriff, verschlĂŒsseln Sie sie und setzen Sie eine kurze Aufbewahrungsfrist. Der Leitfaden zur sicheren Verwaltung von API-SchlĂŒsseln behandelt die angrenzenden Kontrollen fĂŒr Geheimnisse, Logging, Rotation und Incident Response.
SLOs fĂŒr LLM-gestĂŒtzte Funktionen
Ein Service-Level-Objective fĂŒr ein LLM sollte die fĂŒr den Nutzer sichtbare Funktion beschreiben, nicht das Provider-Konto.
Beispiel-SLOs fĂŒr eine strukturierte Support-Antwortfunktion:
| SLO | Beispielziel |
|---|---|
| Validierte VerfĂŒgbarkeit | 99,5 % der berechtigten Requests liefern eine vertragskonforme Ausgabe |
| Interaktive Latenz | 95 % erzeugen das erste Token innerhalb von 1,5 Sekunden |
| VervollstÀndigungs-Latenz | 95 % sind innerhalb von 8 Sekunden abgeschlossen |
| Kostenleitplanke | 99 % bleiben unter der Kostenobergrenze pro Request |
| Fallback-EindÀmmung | Weniger als 3 % benötigen wÀhrend einer rollierenden Stunde ein Fallback |
Diese Zahlen sind Beispiele, keine universellen Zielwerte. Legen Sie sie anhand der Nutzererwartungen, der Aufgabenschwierigkeit, des Provider-Verhaltens und der StĂŒckkosten fest.
Nutzen Sie Error Budgets, um zu entscheiden, wann Feature-Releases verlangsamt, die Routenrichtlinie verschĂ€rft oder Traffic verschoben werden soll. Ein Provider kann sein eigenes VerfĂŒgbarkeitsziel erreichen, wĂ€hrend Ihr Produkt sein SLO verfehlt, weil Queueing, Tools, Validierung oder Fallback-Verhalten zusĂ€tzliche Fehler verursachen.
Auf Symptome alarmieren, Ursachen diagnostizieren
Alarmieren Sie einen Operator bei Auswirkungen auf Nutzer. Verwenden Sie Alarme mit niedrigerer PrioritĂ€t oder Dashboard-Anmerkungen fĂŒr wahrscheinliche Ursachen.
AlarmwĂŒrdige Symptome
- Die validierte Erfolgsrate unterschreitet das SLO
- Die p95-Zeit bis zum ersten Token ĂŒberschreitet den nutzerseitigen Schwellenwert
- Die Rate erschöpfter Routen steigt stark an
- Die Kosten pro akzeptierter Aufgabe ĂŒberschreiten die Leitplanke
- Eine kritische Funktion hat kein gesundes, vertragskompatibles Ziel
Diagnostische Signale
- Die 429-Rate eines Providers steigt
- Die Schema-Fehlerquote eines Modells Àndert sich
- Die Retry-VerstÀrkung nimmt zu
- Die Warteschlangenwartezeit wÀchst
- Der Circuit Breaker öffnet
- Die Token-Nutzung verschiebt sich nach einem Prompt-Release
Vermeiden Sie es, bei jedem Provider-5xx zu alarmieren. Wenn das Fallback funktioniert und Nutzer weiterhin gĂŒltige Antworten innerhalb des Latenzbudgets erhalten, kann das Ereignis eine Untersuchung erfordern, ohne die Person im Bereitschaftsdienst zu wecken.
Ein Betriebsmodell mit drei Dashboards
Dashboard 1: Nutzererlebnis
Zeigen Sie validierte VerfĂŒgbarkeit, Latenz, Zeit bis zum ersten Token, AufgabenerfĂŒllung und nutzerseitige Fehler nach Funktion an.
Dashboard 2: Routing und Provider
Zeigen Sie Traffic-Anteil, Provider-Fehler, Wiederholungen, Fallbacks, Circuit Breaker, Route-Erschöpfung und Latenz nach Modell und Ziel an.
Dashboard 3: Nutzung und Wirtschaftlichkeit
Zeigen Sie Tokens, geschÀtzte Ausgaben, abgeglichene Ausgaben, Kosten pro akzeptierter Aufgabe, Budgetabweichung und die wichtigsten Features nach Kosten an.
Behalten Sie Deployment- und Prompt-Version-Anmerkungen in allen drei Dashboards bei. Andernfalls kann eine Regression, die unmittelbar nach einem Release beginnt, wie eine zufÀllige Provider-Varianz aussehen.
Rollout-Checkliste
- Definieren Sie ein versioniertes Event-Schema.
- Generieren Sie an der Produktgrenze eine interne Request-ID.
- Geben Sie den Trace-Kontext durch Queues, Tools und Modellaufrufe weiter.
- Erstellen Sie fĂŒr jeden Modellversuch einen Child-Span.
- Protokollieren Sie Provider-Request-IDs, wenn sie zurĂŒckgegeben werden.
- FĂŒgen Sie eine deterministische Validierung der Ausgabe hinzu.
- Verfolgen Sie GrĂŒnde fĂŒr Wiederholungen und Fallbacks explizit.
- Berechnen Sie die geschÀtzten Kosten aus einer versionierten Preistabelle.
- Gleichen Sie SchĂ€tzungen mit maĂgeblichen Nutzungs- oder Abrechnungs-Exports ab.
- Erstellen Sie zuerst ein Dashboard fĂŒr ein Benutzerergebnis, bevor Sie Provider-Dashboards erstellen.
- Setzen Sie ein SLO fĂŒr validierten Erfolg und Latenz.
- SchwĂ€rzen oder schlieĂen Sie Prompts, Antworten, Geheimnisse und sensible Tool-Daten aus.
- FĂŒhren Sie Fehlertests fĂŒr Timeout, 429, 5xx, fehlerhafte Ausgabe und Route-Erschöpfung aus.
- PrĂŒfen Sie die Label-Cardinality, bevor Sie Metriken in der Produktion aktivieren.
- Samplen Sie Traces nach Risiko: Bewahren Sie Fehler und langsame Anfragen stĂ€rker auf als routinemĂ€Ăige Erfolge.
HĂ€ufige Observability-Fehler
Jedes 200 als Erfolg behandeln
FĂŒgen Sie Vertrags-Validatoren hinzu und berichten Sie validierten Erfolg separat.
Roh-Prompts fĂŒr jede Anfrage protokollieren
Das verursacht Probleme bei Datenschutz, Sicherheit, Aufbewahrung und Kosten. Bevorzugen Sie Metadaten und kontrolliertes Sampling.
Wiederholungen in einer einzigen Dauer verstecken
Erstellen Sie einen Span und ein Event pro Versuch, damit Operatoren die VerstÀrkung sehen können.
Modellnamen als einzige Route-IdentitÀt verwenden
Verfolgen Sie Provider, Deployment- oder Konto-Alias, Region und Route-Policy. Dasselbe Modell kann sich je nach Ziel unterschiedlich verhalten.
Warnungen auf durchschnittliche Latenz auslösen
Durchschnitte verschleiern Probleme im Tail. Verwenden Sie p95 und p99 und trennen Sie die Zeit bis zum ersten Token von der gesamten Abschlusszeit.
GeschÀtzten Kosten ewig vertrauen
Preistabellen, Cache-Behandlung und Provider-Abrechnung können sich Àndern. Gleichen Sie SchÀtzungen mit Abrechnungsdaten ab und erfassen Sie die Version der Preistabelle.
Telemetry-Labels unbegrenzt wachsen lassen
Request-IDs und Kundenkennungen gehören in Traces oder Logs, nicht in Metrik-Labels.
Wo ein AI-API-Gateway hilft
Multi-Provider-Anwendungen benötigen sonst separate Adapter fĂŒr Authentifizierung, Modellbenennung, Wiederholungen, Nutzungsfelder, Fehler und Abrechnungs-Exports. Ein Gateway kann diese IntegrationsflĂ€che verringern, indem es der Anwendung eine stabile API-Grenze bietet und gleichzeitig Provider- und Modell-Details in der internen Telemetrie bewahrt.
Flatkey bietet einen API-SchlĂŒssel, einen OpenAI-kompatiblen Endpunkt und Zugriff auf Modelle ĂŒber groĂe Provider hinweg. Dadurch ist es möglich, den Telemetrie-Vertrag auf Anwendungsebene zu zentralisieren, selbst wenn Workloads unterschiedliche Text-, Bild- oder Videomodelle verwenden. Das Gateway ersetzt nicht die Observability auf Produktebene: Ihre Anwendung muss weiterhin das Feature, die Prompt-Version, das Validierungsergebnis, die fĂŒr den Nutzer sichtbare Latenz und das Ergebnis der akzeptierten Aufgabe erfassen.
Wenn Ihr Team Anbieter konsolidiert, beginnen Sie mit dem Leitfaden zur AI-API-Gateway-Architektur und ergÀnzen Sie dann das Telemetrie-Contract in diesem Artikel, bevor Sie produktiven Traffic umstellen.
HĂ€ufig gestellte Fragen
Was ist LLM-API-Observability?
LLM-API-Observability ist die Erfassung und Korrelation von Metriken, Traces, Logs, QualitĂ€tsprĂŒfungen, Nutzungs- und Kostendaten fĂŒr modellgestĂŒtzte Funktionen. Sie erklĂ€rt sowohl das Verhalten des Anbieters als auch, ob die Anwendung ein gĂŒltiges Benutzerergebnis zurĂŒckgegeben hat.
Was sollte ich fĂŒr eine LLM-API ĂŒberwachen?
Ăberwachen Sie die validierte Erfolgsrate, End-to-End-Latenz, Time-to-First-Token, Anbieter-Latenz, 429- und 5xx-Raten, Retries, Fallbacks, Token-Nutzung, geschĂ€tzte Kosten, Kosten pro akzeptierter Aufgabe und Fehler des Ausgabe-Contracts.
Sollten Prompts und Antworten in Traces gespeichert werden?
Nicht standardmĂ€Ăig. Speichern Sie zuerst Metadaten. Erfassen Sie Inhalte nur fĂŒr einen definierten Debugging- oder Evaluationszweck mit Maskierung, Zugriffskontrollen, VerschlĂŒsselung, Sampling und einer Aufbewahrungsrichtlinie.
Was ist der Unterschied zwischen LLM-Monitoring und LLM-Observability?
Monitoring sagt Ihnen, dass eine bekannte Metrik einen Schwellenwert ĂŒberschritten hat. Observability liefert Ihnen genĂŒgend korrelierte Belege, um neue Fehlermodi ĂŒber die Anwendung, Route, den Anbieter, das Modell, die Tools und den Ausgabe-Contract hinweg zu untersuchen.
Wie berechne ich die LLM-Kosten pro Anfrage?
Multiplizieren Sie abrechenbare Einheiten fĂŒr Input, Output, gecachten Input, Medien oder andere Nutzungsarten mit einer versionierten Preistabelle und addieren Sie dann die Kosten fĂŒr Retries und Fallback-Versuche. Gleichen Sie die SchĂ€tzung mit Abrechnungsdaten des Anbieters oder Gateways ab.
Welche Request-ID sollte ich speichern?
Erstellen Sie Ihre eigene interne Request-ID und Trace-ID und speichern Sie auĂerdem die Provider-Request-ID, wenn die API eine zurĂŒckgibt. Die internen IDs verbinden Ihre Systeme; die Provider-ID hilft beim externen Support und bei der Eskalation von VorfĂ€llen.
Erstellen Sie den Telemetrie-Contract vor dem Vorfall
Der beste Zeitpunkt, um festzulegen, was ein Modellaufruf erfassen soll, ist bevor produktiver Traffic eintrifft. Beginnen Sie mit validiertem Erfolg, Latenzverteilungen, einem Span pro Versuch, begrenzten Metrik-Labels, Metadaten-First-Logs und Kosten pro akzeptierter Aufgabe. Testen Sie das System dann, indem Sie die Fehler erzwingen, von denen Sie erwarten, dass der Router sie behandeln muss.
Dieses Fundament verwandelt eine vage Meldung â âdie AI-Funktion ist langsam und teuerâ â in eine nachvollziehbare Entscheidung: welche Funktion, welche Route, welches Modell, welcher Versuch, welcher Fehler, wie viel Verzögerung und wie viel Kosten.
Informieren Sie sich ĂŒber die Flatkey-Preisgestaltung, wenn Sie bereit sind, Multi-Model-Routen hinter einer OpenAI-kompatiblen API zu vergleichen.



