AI-API-Latenzmetriken: TTFT, erste Antwort und Ausgabegeschwindigkeit

Request-Timeline für Upstream-Headers, erstes SSE Event, erste wirksame Antwort, sichtbaren Text, Gesamtlatenz und Output Speed.

AI-API-Latenz ist keine einzelne Zahl. Bei einem Streaming Request sollten Upstream-Headers, erstes nicht leeres SSE Event, erster wirksamer Inhalt oder Action, erster sichtbarer Text und Completion getrennt erfasst werden. Diese Meilensteine beantworten unterschiedliche Fragen und dürfen nicht alle „TTFT“ heißen.

Für einen Text-Chat ist Time to First Visible Text meist die Nutzerlatenz. In Reasoning- oder Tool-Workflows können Function Arguments schon früher ein wirksames Ergebnis darstellen. Generation Speed wird erst nach Ausgabebeginn gemessen.

Vor der Benennung eine Request-Timeline erstellen

Alle Zeitpunkte müssen denselben monotonen Clock und Origin verwenden:

t0  Gateway empfängt Request
t1  Gateway startet Upstream Request
t2  Upstream Response Headers treffen ein
t3  Erstes nicht leeres SSE Event
t4  Erster wirksamer Inhalt oder Action
t5  Erster sichtbarer Text Delta
t6  Upstream Body endet oder schließt
t7  Gateway Handler endet

Nicht jeder Request besitzt alle Punkte. Fehlende Werte bleiben absent und werden nicht als 0 gespeichert.

Feld Messung Wichtige Grenze
auth_ms Token- und Nutzerprüfung Lokale Phase
distribution_ms Channel Selection und Routing Lokale Phase
body_read_ms Lesen des Request Body Erkennt langsamen Upload vor Routing
upstream_headers_ms Upstream Start bis Headers Origin ist Upstream Start
first_sse_event_ms Gateway Receipt bis erstes Event Kann nur Metadata sein
first_response_ms Bis zu wirksamem Inhalt oder Action Text, Reasoning, Function Arguments
first_text_delta_ms Bis zu sichtbarem Text Fehlt bei reinen Tool Calls
upstream_done_ms Bis Upstream Body schließt Close ist nicht zwingend Erfolg
total_handler_ms Bis letzter Relay-Punkt Gateway-nahe E2E-Dauer
visible_output_tps Tokens / sichtbares Fenster Nutzerdiagnose, kein System-TPS

Dauern mit verschiedenen Origins dürfen nicht voneinander abgezogen werden.

TTFT hat mehrere praktische Bedeutungen

Der NVIDIA-NIM-Benchmarking-Guide zählt Netzwerk, Queueing und Prompt Prefill typischerweise zu TTFT und schließt leere Initialantworten aus. Moderne Streams können vor sichtbarem Text Metadata, Reasoning, Function Arguments, Tool Input oder Heartbeats senden.

Name Empfohlene Bedeutung Zweck
Time to Headers Request Start bis Upstream Headers Netzwerk und Admission
Time to First Event Bis erstes nicht leeres SSE Event Transport-Liveness
Time to First Effective Response Bis nützlicher Inhalt oder Action Agent- und Reasoning-Reaktion
Time to First Visible Text Bis renderbarer Text Chat-Nutzererlebnis

Ein Dashboard mit „TTFT“ muss offenlegen, welche Definition gemeint ist.

Reaktionszeit und Generierung trennen

end_to_end_latency = final_response_time - request_start_time
visible_generation_window = final_response_time - first_visible_text_time
visible_output_tps = output_tokens / visible_generation_window_seconds

Inter-token Latency schließt TTFT aus und teilt die Restzeit meist durch output_tokens - 1. SSE Events dürfen nicht als Tokens gezählt werden: Ein Event kann null, einen oder mehrere Tokens enthalten.

Früher Text mit niedrigem TPS startet schnell und wird dann zäh; später Text mit hohem TPS wirkt blockiert und endet schnell. Per-user TPS und Aggregate Throughput sind ebenfalls verschieden.

Reasoning und Tools können vor Text erscheinen

Bei reinem Text liegen first_response_ms und first_text_delta_ms nahe beieinander. Function Arguments nach 1,8 Sekunden und sichtbarer Text nach 6,4 Sekunden bedeuten: Das System hat früh eine Action, der Nutzer aber noch keine Prosa.

  • Terminal Agents können First Effective Action verwenden;
  • reine Chat-UIs sollten First Visible Text messen;
  • Tool APIs benötigen eventuell keinen sichtbaren Text;
  • frühe SSE Envelopes beweisen Verbindung, nicht nützlichen Fortschritt.

Der AI API Streaming Guide erklärt Parsing, Cancellation und Idle Timeout. Erst nach der Unterscheidung von Envelope und Output sind Metriken sinnvoll.

Langsame Phasen in fester Reihenfolge diagnostizieren

Symptom Metrik Prüfen
Langsam vor Headers upstream_headers_ms Netzwerk, Admission, Queue, Route, Region
Headers schnell, Output spät first_response_ms Model Queue, Prefill, Reasoning, Inflight
Event schnell, Output spät SSE→Response Gap Metadata, Heartbeat, Reasoning Startup
Action schnell, Text spät Response→Text Gap Tool/Reasoning, Composition
Text schnell, Generierung langsam visible_output_tps Decode, Contention, Long Context
Upstream normal Lokale Felder Auth, Policy, Client Upload

Keine einzelne Metrik beweist die Ursache; Route, Region, Provider und Load werden gemeinsam benötigt.

Drei synthetische Traces lesen

Trace A: Warten auf Upstream Headers

Metrik Wert
upstream_headers_ms 6.100 ms
first_response_ms 6.350 ms
first_text_delta_ms 6.400 ms
total_handler_ms 9.200 ms
visible_output_tps 42

Der Großteil liegt vor den Headers. Route, Admission, Netzwerk, Region und Last sind vor der UI zu prüfen.

Trace B: Action vor sichtbarem Text

Metrik Wert
upstream_headers_ms 240 ms
first_response_ms 2.900 ms
first_text_delta_ms 8.700 ms
total_handler_ms 10.200 ms
visible_output_tps 55

Eine Action existiert nach 2,9 Sekunden, Text 5,8 Sekunden später. Reasoning oder Tools sind zu untersuchen; ein längerer Header Timeout hilft nicht.

Trace C: Schneller Start, langsame Generierung

Metrik Wert
upstream_headers_ms 260 ms
first_response_ms 420 ms
first_text_delta_ms 430 ms
total_handler_ms 20.430 ms
visible_output_tps 9,8

Der Text startet schnell, läuft aber fast 20 Sekunden. Output Length, Context, Channel, Inflight und Provider vergleichen. Ein First-output Timeout erkennt dieses Muster nicht.

Latenz nur unter kontrollierten Bedingungen vergleichen

Modell und Route, Token-Verteilungen, Streaming, Reasoning Effort, Tools, Region, Network Path, Concurrency, Sampling, Max Output, Warmup, Retry Policy, Sample Size und Percentile Method dokumentieren.

p50, p95 und p99 statt eines Durchschnitts vergleichen und Fehler sichtbar lassen. Verschiedene Prompts, Ausgabelängen oder Parallelität dürfen nicht als Modell-Speed-Ranking dargestellt werden.

Diagnostic Metadata statt Inhalt speichern

Request ID, Timestamp, Model, Group, Channel Reference, Status, Token Counts, Timing Fields, Event Counts, Inflight, grobe Region und Klassifikatoren wie upstream_headers_slow reichen häufig aus.

Prompts, Responses, API Keys oder Klartextidentitäten sind nicht erforderlich. Auch Metadata braucht Retention und Access Control.

Eine Untersuchung beginnt mit der Timeline, verwendet Reliable AI API Routing für die Route jedes Attempts und AI API Error Troubleshooting für den Endstatus. So lassen sich Admission, Model Startup, Reasoning/Tool, sichtbare Generierung und lokaler Overhead trennen.