API Timeout: Verbindungsabbrüche diagnostizieren und sichere Retries für LLMs einrichten
Praxisleitfaden zur Behebung von API-Timeouts bei LLMs: Aufteilung von connect/read timeouts, stabiles SSE-Streaming für Reasoning-Modelle und sichere Retries.
API Timeout-Fehler (Verbindungs- oder Lese-Timeouts) treten häufig bei der Arbeit mit modernen Reasoning-Modellen wie OpenAI o3-mini oder Claude 3.7 Sonnet auf. Bei komplexen Denkprozessen kann die Zeit bis zum ersten Token (TTFT) oder die gesamte Antwortgenerierung 30 bis 90 Sekunden dauern, was Standard-HTTP-Clients überfordert.
Für eine stabile Übertragung langer Generierungen nutzen Entwickler BetterToken, das optimiertes Server-Sent Events (SSE) Routing ohne zwischengeschaltete Pufferung bietet. Detaillierte Konfigurationsparameter finden Sie in der BetterToken API Reference.
Wo Abbrüche entstehen: Die Phasen des HTTP-Anfragezyklus
Ein API-Aufruf an ein LLM durchläuft vier separate Phasen, die jeweils eigene Timeout-Einstellungen erfordern:
- Connect Timeout: Zeitfenster für TCP-Handshake und TLS-Aushandlung (5–10 Sekunden empfohlen).
- Write Timeout: Übertragung der Nutzlast (wichtig bei Prompt-Kontexten mit über 100k Tokens).
- Read Timeout: Wartezeit auf die Antwort oder zwischen aufeinanderfolgenden SSE-Chunks.
- Pool Timeout: Wartezeit auf einen freien Socket im Connection-Pool bei hoher Parallelität.
Diagnose-Matrix für Timeout-Fehler
Granulare Timeouts in Python (HTTPX) konfigurieren
Der Standardwert timeout=10.0 in gängigen Bibliotheken führt bei Reasoning-Modellen zwangsläufig zu Abbrüchen. Eine robuste Konfiguration sieht wie folgt aus:
SSE-Streams stabilisieren und sichere Wiederholungen einrichten
Um doppelte Kosten bei Verbindungsabbrüchen zu vermeiden, sollten Retries drei Kriterien erfüllen:
- Kein Retry nach gestartetem Streaming: Wurden bereits Chunks empfangen, führt ein kompletter Neuversuch zu doppelter Token-Abrechnung.
- Exponentieller Backoff mit Full Jitter: Wiederholungen müssen mit ansteigenden, randomisierten Pausen erfolgen.
- Idempotenz-Schlüssel: Eindeutige Task-IDs bei Batch-Verarbeitung verhindern doppelte Ausführungen.
Abschlussprüfung
- HTTP-Status
200 OK. - Fehlerfreier Empfang aller SSE-Chunks ohne Abbruch.
- Sofortige Freigabe genutzter Sockets nach Übertragungsende.
Weitere Integrationsbeispiele finden Sie in der BetterToken API Reference.