KI-API-Streaming: SSE und Timeouts
Verstehen Sie Chat- und Responses-Events, SSE-Parsing, erste effektive Ausgabe, phasenbezogene Timeouts und 499-Abbrüche.
KI-API-Streaming liefert Ereignisse bereits während der Generierung, statt auf den gesamten Response Body zu warten. Das verbessert die wahrgenommene Reaktionszeit, verkürzt aber nicht automatisch die Modelllatenz und verlangt einen Parser für das richtige Protokoll.
Chat Completions sendet Completion-Chunks, Responses typisierte Response-Events. Ein Client kann HTTP 200 erhalten und trotzdem nichts anzeigen, wenn er die falsche Struktur erwartet.
Ungepuffert beginnen
curl -N -sS https://modelflare.dev/v1/responses \
-H "Authorization: Bearer $MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"YOUR_RESPONSES_MODEL","input":"Explain SSE.","stream":true}'
Testen Sie denselben Request zunächst ohne Streaming. So werden Validierung und Stream-Parsing getrennt. Verwenden Sie eine Modell-ID aus Modelle & Preise.
SSE als Protokoll behandeln
Server-Sent Events sind gerahmte Datensätze, keine beliebigen JSON-Fragmente. Der Client muss Pufferung in HTTP, Proxy und UI verhindern, Teilreads zusammensetzen, Text-, Reasoning-, Tool-, Abschluss- und Fehlerereignisse verarbeiten, Abbruch und finale Nutzung erhalten und nach einem terminalen Event schließen.
Latenz in Phasen messen
| Messung | Bedeutung |
|---|---|
| Verbindung und Authentifizierung | Gateway erreichen und Key prüfen |
| Upstream-Header | Gewählte Route beginnt zu antworten |
| Erste effektive Ausgabe | Erstes nützliches Text-, Reasoning- oder Tool-Event |
| Erster sichtbarer Text | Erste für Nutzende sichtbare Ausgabe |
| Gesamtzeit | Abschluss, Fehler oder Abbruch |
Ein Tool Call kann vor sichtbarem Text nützliche Ausgabe liefern. Für den Betrieb ist deshalb die erste effektive Ausgabe aussagekräftiger; für UX zusätzlich der erste sichtbare Text.
Timeouts pro Phase
Trennen Sie Verbindungs-, Header- oder First-Output-, Idle- und Gesamt-Timeout. Reasoning- und Tool-Aufgaben benötigen eventuell länger bis zum sichtbaren Text. Budgets sollten aus realen Workloads stammen, nicht aus einem kurzen globalen Timeout.
Beendet Client, Browser oder Proxy die Verbindung, kann Modelflare 499 erfassen. Das belegt einen Downstream-Abbruch, nicht automatisch einen Modell- oder Kanalausfall. Vergleichen Sie Abort, Proxy-Timeout, erste Ausgabe, Modell, Gruppe und Zeitpunkt.
Wenn kein Text erscheint
- Mit "stream": false wiederholen.
- Endpunktunterstützung des Modells bestätigen.
- Rohereignisse vor der UI erfassen.
- Nach Tool- oder Reasoning-Events ohne Text suchen.
- Pufferung in Zwischenstationen ausschließen.
- Terminal-Event im Parser prüfen.
- Status, Timing und Abbruch im Request-Datensatz vergleichen.
Funktioniert Non-Streaming und kommen Rohereignisse an, liegt der Fehler meist in Parsing oder Darstellung. Andernfalls hilft der KI-API-Fehlerleitfaden. Zur Formatwahl: Responses API vs Chat Completions.