OpenAI-Fehler „Rate limit reached“: was sie bedeuten und wie man damit umgeht

Die OpenAI-API gibt 429 mit „Rate limit reached“ zurück, wenn Ihre Organisation mehr Anforderungen oder mehr Token pro Minute gesendet hat, als ihre Grenzwerte zulassen. Grenzwerte gelten für Ihre Organisation, nicht für jeden Benutzer. Diese Fehler sind temporär. Wenn Sie warten und die Anforderung erneut senden, ist sie in der Regel erfolgreich. Einige andere 429 Fehler von OpenAI betreffen die Abrechnung, und diese verschwinden nicht, wenn Sie warten. Weitere Informationen finden Sie unter Fehlercodes.

Wie OpenAIs Ratenlimit-Fehler aussehen

Status Fehler Was dies bedeutet Erneut versuchen?
429 rate_limit_exceeded, Anfragen pro Minute (RPM) Sie haben in einer Minute zu viele Anfragen gesendet. Ja, nach Retry-After
429 rate_limit_exceeded, Token pro Minute (TPM) Ihre Anfragen haben innerhalb einer Minute zu viele Token verbraucht. Die Meldung zeigt Ihr Limit, die Anzahl der von Ihnen verwendeten Token und wie viele von der Anfrage angefordert wurden. Ja, nach Retry-After. Kleinere Anfragen helfen.
429 slow_down (Typ rate_limit_error) Ihre Anfragen sind zu schnell gewachsen, auch wenn Sie sich innerhalb Ihrer RPM- und TPM-Grenzwerte befinden. Ja, mit einem niedrigeren Satz
503 server_is_overloaded (Typ service_unavailable_error) Die Server von OpenAI sind ausgelastet. Ja, mit längeren Verzögerungen jedes Mal
429 credit_balance_exhausted, Ausgabenlimit- oder Verwendungsgrenzwertfehler (Typ insufficient_quota) Ihr Guthaben ist aufgebraucht oder ein Limit wurde überschritten. Nein Siehe OpenAI insufficient_quota und credit_balance_exhausted.

Die meisten dieser Fehler haben denselben 429-Status, sodass Sie sie nicht allein nach Status unterscheiden können. Lesen Sie error.code im Antworttext.

Umgang mit OpenAI-Rate-Limit-Fehlern

  1. Überprüfen Sie error.code zuerst. Wenn es sich um einen Abrechnungscode wie credit_balance_exhausted handelt, versuchen Sie es nicht erneut und informieren Sie den Benutzer. Beim Wiederholen eines fehlgeschlagenen Abrechnungsvorgangs wird der Zugriff nicht wiederhergestellt.
  2. Folgen Sie Retry-After, wenn es vorhanden ist. Wenn sie fehlt, verwenden Sie exponentielle Backoffs mit Jitter, und beschränken Sie die Anzahl der Wiederholungen.
  3. Nach slow_down langsamer werden. Reduzieren Sie Ihre Anforderungsrate, und erhöhen Sie sie dann schrittweise. Die Faustregel von OpenAI über 1M-Eingabe-TPM besteht darin, den Datenverkehr um maximal 50% alle 15 Minuten zu erhöhen.
  4. Senden Sie weniger Token nach einem TPM-Fehler. Kürzere Eingabeaufforderungen und Antworten ermöglichen mehr Anfragen pro Minute.
  5. Nach einem 503 weiter zurückgehen. Erhöhen Sie die Verzögerung zwischen Wiederholungen, und überprüfen Sie die OpenAI-Statusseite.
  6. Teilen Sie dem Benutzer mit, was passiert. „Belegt, erneuter Versuch in 5 Sekunden“ schlägt einen Spinner, der nie endet.

Das OpenAI-Python SDK versucht bei Verbindungsfehlern und Antworten 408, 409, 429 und 5xx standardmäßig 2 Mal erneut, mit einem kurzen exponentiellen Backoff. Sie können sie mit max_retries ändern. Wenn die Wiederholungsversuche ausgeschöpft sind, löst das SDK RateLimitError für ein 429 und InternalServerError für ein 503 aus, daher sollte Ihr Code dennoch darauf vorbereitet sein:

import openai
from openai import OpenAI

client = OpenAI(max_retries=3)

BILLING_CODES = {
    "credit_balance_exhausted",
    "organization_spend_limit_exceeded",
    "project_spend_limit_exceeded",
    "organization_usage_limit_exceeded",
}


def summarize(text: str) -> str | None:
    try:
        response = client.responses.create(model="gpt-4.1", input=text)
        return response.output_text
    except openai.RateLimitError as error:
        if error.code in BILLING_CODES:
            raise  # Retrying won't help: alert and tell the user
        return None  # Still throttled after retries: show "busy, try again"
    except openai.InternalServerError:
        return None

So testen Sie, ob Ihre App mit OpenAI-Ratenbegrenzungen umgeht

Sie stoßen bei der Entwicklung selten an ein OpenAI-Ratenlimit. Sie sind der einzige Benutzer, und Ihre Prompts sind kurz. Die Art und Weise, wie Sie die Behandlung von Ratenbeschränkungen testen, entscheidet also, ob Sie die Fehler finden, bevor Ihre Benutzer dies tun.

Approach Was Sie finden Was Ihnen fehlt
Warten auf Produktion Tatsächliche Ausfälle Alles, bis ein Benutzer es auslöst
Mocke die API in deinen Tests, oder lass deinen Coding-Agenten den Mock schreiben Ob Ihre Wiederholungsverzweigung ausgeführt wird OpenAIs tatsächliche Fehlertexte und -codes sowie die Wiederholungsrichtlinie Ihres SDK. Ihre App benötigt außerdem einen reinen Testschalter, um den Mock zu erreichen.
Rufen Sie die echte API auf, bis sie Sie drosselt Tatsächliches Verhalten Sie können keinen bestimmten Fehler bei Bedarf auslösen, und jede Anfrage kostet Tokens
Fangen Sie den tatsächlichen Datenverkehr Ihrer App ab und geben Sie OpenAI-Fehler bei Bedarf zurück Echte URLs, Ihr reales SDK, Ihre Wiederholungsrichtlinie und OpenAIs eigenes Fehlerformat Nichts in Ihrer App ändert sich, sodass Ihre App Ihren Code nicht isoliert testet. Bewahren Sie sich das für Ihre Unit-Tests auf.

Probieren Sie sie mit Ihrer App aus

Dev Proxy fängt die Anfragen Ihrer App an api.openai.com ab und gibt OpenAI-Fehler zurück, während Ihre App weiterhin die tatsächlichen URLs aufruft. Die openai-throttling Voreinstellung schlägt bei den meisten Anfragen mit einer zufälligen Auswahl aus TPM- und RPM-rate_limit_exceeded, slow_down, credit_balance_exhausted und 503server_is_overloaded-Fehlern im eigenen Format von OpenAI fehl. Die 429 Antworten bei der Ratenbegrenzung umfassen einen Retry-After Header, und wenn Ihre App vor Ablauf dieser Zeit erneut versucht, meldet Dev Proxy dies.

Laden Sie die Voreinstellung herunter, und starten Sie Dev Proxy damit:

devproxy config get openai-throttling
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json"

Führen Sie dann Ihre App wie gewohnt aus, und beobachten Sie, was sie tut. Zum Installieren von Dev Proxy siehe Einrichten von Dev Proxy.

Informationen zum Testen, wie sich Ihre App verhält, wenn sie das Token-Limit pro Minute erreicht, basierend auf den von Ihren Anfragen verwendeten Prompt- und Completion-Token, finden Sie unter Tokenlimits für Sprachmodelle testen.

Nächste Schritte

Siehe auch