Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Auf einen Blick
Ziel: Testen, wie Ihre App OpenAI-Ratelimit- und Überladungsfehler behandelt
Zeit: 10 Minuten
Plugins:GenericRandomErrorPlugin, RetryAfterPlugin
Voraussetzungen:Einrichten des Dev-Proxys
Ihre App arbeitet in der Entwicklung und schlägt dann in der Produktion mit 429 Too Many Requests fehl. OpenAI-Ratenbeschränkungen hängen von der Nutzungsstufe Ihrer Organisation, Ihrem Modell und allen anderen Personen ab, die dieselbe Organisation verwenden, sodass Sie sie nicht zuverlässig gezielt erreichen können. Dev Proxy gibt die gleichen Fehler zurück, die die OpenAI-API zurückgibt, sodass Sie sehen können, welche Auswirkungen dies auf Ihre App hat, bevor Ihre Benutzer sie bemerken.
Was OpenAI zurückgibt
Nicht jeder OpenAI-Fehler bedeutet „Erneut versuchen“. Ihre App muss sie unterscheiden.
| Status | error.code |
Was dies bedeutet | Was Ihre App tun sollte |
|---|---|---|---|
| 429 | rate_limit_exceeded |
Sie haben Ihren Grenzwert für Anfragen pro Minute (RPM) oder Token pro Minute (TPM) erreicht. | Warten Sie, bis die Zeit in der Retry-After Kopfzeile angezeigt wird, und versuchen Sie es dann erneut. |
| 429 | slow_down |
Ihre Anfragerate ist zu schnell gestiegen, auch wenn Sie sich innerhalb Ihrer Limits befinden. | Warten Sie Retry-After, reduzieren Sie Ihre Anforderungsrate und erhöhen Sie sie schrittweise. |
| 429 | credit_balance_exhausted |
Ihre Organisation hat kein Prepaid-Guthaben mehr. | Versuchen Sie es nicht erneut. Ein erneuter Versuch stellt den Zugriff nicht wieder her. Informieren Sie den Benutzer, oder benachrichtigen Sie einen Administrator. |
| 503 | server_is_overloaded |
Das Modell verfügt derzeit nicht über genügend Kapazität. | Warten Sie ggf. auf Retry-After, und versuchen Sie es dann erneut mit zunehmenden Verzögerungen. |
Die vollständige Liste finden Sie in der OpenAI-Dokumentation unter Fehlercodes .
Important
Alle drei Fehler in den 429 Zeilen verwenden denselben Statuscode. Wenn Ihre App bei jedem 429-Fehler erneut versucht, versucht sie Abrechnungsfehler immer wieder erneut, die sich nie beheben. Überprüfen Sie error.code, um zu entscheiden, was zu tun ist.
Wissen Sie, was das OpenAI SDK für Sie tut
Die offiziellen OpenAI-SDKs für Python und JavaScript versuchen Anfragen bei 408-, 409-, 429- und 5xx-Antworten sowie bei Verbindungsfehlern standardmäßig 2 Mal mit exponentiellem Backoff erneut. Sie können dies mit der max_retries Option in Python und maxRetries in JavaScript ändern.
SDK-Wiederholungsversuche decken kurze Ausfälle ab. Ihre App muss immer noch entscheiden, was passiert, wenn die Wiederholungsversuche aufgebraucht sind, und wie mit Fehlern umgegangen wird, die durch Wiederholen nicht behoben werden. In Python wirft eine 429 RateLimitError und eine 503 wirft InternalServerError, also beide behandeln.
Tip
Um genau zu sehen, was Ihr Fehlerbehandlungscode empfängt, legen Sie max_retries=0 (Python) oder maxRetries: 0 (JavaScript) fest, während Sie testen. Aktivieren Sie anschließend die SDK-Wiederholungen wieder.
OpenAI-Ratenlimits simulieren
Dev Proxy verfügt über eine Voreinstellung für die in der Tabelle aufgeführten OpenAI-Fehler. Laden Sie es herunter:
devproxy config get openai-throttling
Starten Sie Dev Proxy mit der Voreinstellung:
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json"
Bei 90 % der Anfragen an https://api.openai.com/* schlägt die Voreinstellung mit einem zufälligen Fehler aus der Tabelle fehl. Bei Drosselungsantworten wird der Retry-After Header festgelegt und der RetryAfterPlugin verwendet, um zu überprüfen, ob Ihre App so lange wartet, bevor sie die API erneut aufruft.
Stellen Sie sicher, dass Ihre App ihre Anfragen über Dev Proxy sendet und dem Dev Proxy-Zertifikat vertraut. Informationen zu Node.js finden Sie unter Verwenden Sie Dev Proxy mit Node.js-Anwendungen. Informationen zu anderen Laufzeiten finden Sie unter Problembehandlung für Dev Proxy.
Führen Sie Ihre App aus, und überprüfen Sie Folgendes:
- Nach einem
rate_limit_exceeded- oderslow_down-Fehler wartet die App auf dieRetry-AfterZeit. Wenn die API zu früh aufgerufen wird, meldet Dev Proxy dies und drosselt die Anforderung. - Nach einem
credit_balance_exhaustedFehler ruft Ihre App die API nicht mehr auf und zeigt eine klare Meldung an. - Nach einem
server_is_overloadedFehler versucht Ihre App es nach einer Verzögerung erneut und, wenn keine Wiederholungsversuche mehr übrig sind, wird stattdessen ein Fallback verwendet oder eine eindeutige Meldung anstelle einer Stapelablaufverfolgung angezeigt. - Mit Ihrer App gehen keine Änderungen verloren. Beispielsweise wird nach dem Fehler eine lange Chatunterhaltung oder ein Batchauftrag fortgesetzt.
Verwenden Sie die --failure-rate Option, um zu ändern, wie oft Anfragen fehlschlagen. Zum Beispiel, um jede Anfrage fehlschlagen zu lassen:
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json" --failure-rate 100
Tokengrenzwerte für Azure OpenAI und andere Anbieter simulieren
Die Voreinstellung gibt Fehler nach dem Zufallsprinzip zurück, unabhängig davon, wie viele Token Ihre App verwendet. Um Anforderungen basierend auf der tatsächlichen Tokenverwendung zu drosseln, z. B. um zu sehen, was passiert, wenn eine lange Unterhaltung über Ihren TPM-Grenzwert geht, verwenden Sie LanguageModelRateLimitingPlugin. Es funktioniert mit jeder openAI-kompatiblen API, einschließlich Azure OpenAI und lokalen Modellen. Weitere Informationen finden Sie unter Tokenlimits für das Test-Sprachmodell.
Nächster Schritt
Erfahren Sie, wie Sie tokenbasierte Grenzwerte simulieren.
Siehe auch
- Meine App mit Sprachmodellfehlern testen – Unerwartete Sprachmodellantworten simulieren
- Fehler mit OpenAI-APIs simulieren – Erstellen Ihrer eigenen OpenAI-Fehlerdatei
- Testen, dass meine Anwendung die Drosselung ordnungsgemäß verarbeitet – Drosselung für jede API
- Voreinstellungen verwenden - Arbeiten mit Voreinstellungen
- RetryAfterPlugin – Überprüfen des Wiederholungsverhaltens