Zum Hauptinhalt springen

Fehler, Rate Limits & Zuverlässigkeit

Fortgeschritten
What you'll learn
  • Die HTTP-Fehlerübersicht lesen und wissen, welche Statuscodes wiederholt vs. behoben werden müssen
  • Transiente Fehler mit exponentiellem Backoff und Jitter, gedeckelt, wiederholen
  • Rate Limits mit retry-after, Glättung, Batching und günstigeren Modellen behandeln
  • Den eigenen Code gegen Modell-Deprecations und Migrationen absichern

Produktionscode spricht mit einem Netzwerkdienst und muss daher mit Fehlern rechnen. Ein wenig Struktur an dieser Stelle macht den Unterschied zwischen einer instabilen und einer verlässlichen Integration aus.

Die Fehlerübersicht

Typische HTTP-Status, die du behandeln wirst:

StatusBedeutungWas zu tun ist
400Ungültige AnfrageKorrigiere den Payload; nicht unverändert wiederholen
401Falscher/fehlender API-SchlüsselAnmeldedaten überprüfen
403Nicht erlaubtZugriff/Berechtigungen überprüfen
429RatenbegrenztZurückfahren und wiederholen (retry-after beachten)
500/529Serverfehler / überlastetMit Backoff wiederholen
Pro tip
  • Die SDKs stellen diese als typisierte Ausnahmen bereit, sodass du sauber verzweigen kannst, statt Strings zu parsen.

Wiederholungen mit Backoff

Bei transienten Fehlern (429, 5xx) wiederhole mit exponentiellem Backoff + Jitter, gedeckelt:

import time, random
for attempt in range(5):
try:
return client.messages.create(...)
except (RateLimitError, APIStatusError) as e:
if attempt == 4 or not should_retry(e):
raise
time.sleep(min(2 ** attempt + random.random(), 30))
Watch out
  • Viele SDKs wiederholen transiente Fehler automatisch — kenne die Voreinstellung deines Clients, bevor du eigene hinzufügst, sonst verdoppelst du womöglich die Wiederholungen.

Rate Limits

Limits gelten pro Account/Stufe (Anfragen und Tokens pro Minute). Wenn du eines erreichst, erhältst du 429 mit Timing-Hinweisen. Strategien, um unter der Obergrenze zu bleiben:

Guided walkthrough1 of 4
  1. Wenn du ein 429 erhältst, lies den Timing-Hinweis in der Antwort und warte so lange, bevor du erneut versuchst.

Siehe Ein Modell auswählen zur Wahl des richtigen Modells für umfangreiche Schritte.

Modellmigration

Modell-IDs sind datiert/versioniert und werden eingestellt. Schütze dich davor:

Key takeaways
  • 400/401/403 sind dein Fehler — korrigiere die Anfrage oder die Anmeldedaten, wiederhole nicht blind. 429 und 500/529 sind wiederholbar.
  • Wiederhole transiente Fehler mit exponentiellem Backoff + Jitter, gedeckelt (z. B. min(2 ** attempt + random(), 30)).
  • Bei 429: retry-after beachten, Spitzen glätten, Offline-Arbeit batchen und umfangreiche Schritte an ein günstigeres Modell weiterleiten.
  • Lies Modell-IDs aus einer Konfiguration, beobachte Deprecations und führe Evals beim Modellwechsel erneut aus.

Teste dich selbst

0/4
  1. Du erhältst ein 400 Ungültige Anfrage. Was solltest du tun?
  2. Welche Statuscodes sind diejenigen, die du mit Backoff wiederholen solltest?
  3. Warum Jitter zum exponentiellen Backoff hinzufügen?
  4. Was ist KEINE vorgeschlagene Rate-Limit-Strategie?

Weiter