Anthropic 529 overloaded_error: Was dies bedeutet und wie man damit umgeht

Die Claude-API gibt overloaded_error mit dem Fehlertyp 529 zurück, wenn die API vorübergehend überlastet ist. Laut Anthropic kann es passieren, wenn die API über alle Nutzer hinweg stark ausgelastet ist. Ihre Anfrage ist in Ordnung. Die API ist ausgelastet, sodass sie die Anfrage abgelehnt hat. Wenn Ihre Organisation ihre eigenen Rate-Limits überschreitet, erhalten Sie stattdessen eine 429. Der Response-Body hat dieselbe Form wie jeder andere Claude-API-Fehler: ein type auf oberster Ebene vom Typ error, ein error-Objekt mit type und message und ein request_id-Objekt, das Sie dem Anthropic-Support geben können. Weitere Informationen finden Sie unter Claude-API-Fehler.

529, 429 oder Ausgabenlimit: wie man sie unterscheidet

Die Claude-API verwendet ähnlich aussehende Fehler für sehr unterschiedliche Probleme. Einige gehen weg, wenn Sie warten. Es geht erst nächsten Monat weg.

Antwort error.type retry-after Was dies bedeutet Was zu tun ist
529 overloaded_error Verwenden Sie es, wenn es vorhanden ist. Die API wird für alle Benutzer überlastet. Wieder deaktivieren und wiederholen
429 rate_limit_error Yes Ihre Organisation hat ihre Anfragen, Eingabetoken oder Ausgabetoken pro Minute überschritten oder zu schnell hochgefahren und eine Beschleunigungsgrenze erreicht. Warten Sie so lange, wie von retry-after angegeben
429 rate_limit_error, mit error.details.error_code, festgelegt auf enforced_spend_limit_reached No Ihre Organisation hat die monatliche Ausgabengrenze der Nutzungsebene erreicht. Versuchen Sie es nicht erneut. Die Verwendung wird bis 00:00 UTC am ersten Tag des nächsten Monats angehalten oder bis Sie zu einer höheren Tarifstufe wechseln.
400 invalid_request_error No Ihre Nutzung hat die von Ihnen für Ihre Organisation oder Ihren Arbeitsbereich festgelegte Ausgabengrenze erreicht Limit erhöhen oder entfernen

Ein Ausgabenlimit 429 hat den gleichen Fehlertyp wie ein Ratenlimit, sodass Code, der es alle rate_limit_error erneut versucht, weiterhin fehlschlägt. Anthropic Hinweise, dass Wiederholungen fehlschlagen, bis der Zugriff fortgesetzt wird, einschließlich der automatischen Wiederholungen des SDK. Ausführliche Informationen finden Sie unter Erreichen ihrer Ausgabenobergrenze.

Umgang mit einer 529

  1. Überprüfen Sie den Statuscode, bevor Sie den Vorgang wiederholen. A 529 und a 429 need different waits, and a 429 without retry-after need no retry at all.
  2. Zurück auf eine 529. Wiederholen Sie den Vorgang mit exponentiellem Backoff und zufälligem Jitter, und beenden Sie nach einigen Versuchen. Wenn die Antwort über einen retry-after Header verfügt, warten Sie stattdessen so lange.
  3. Lassen Sie das SDK die ersten Retry-Versuche ausführen. Die offiziellen Anthropic SDKs wiederholen Verbindungsfehler, Ratelimits und 5xx-Fehler standardmäßig zweimal mit exponentiellem Backoff und berücksichtigen retry-after, wenn es vorhanden ist. Sie können die Anzahl mit max_retries (maxRetries in TypeScript) ändern. Wenn das SDK keine Wiederholungen mehr ausführt, erhält Ihr Code den Fehler.
  4. Versuchen Sie nicht mehr, eine Ausgabengrenze einzugeben. Wenn ein 429 keine retry-after Kopfzeile hat, teilen Sie dem Benutzer mit, und benachrichtigen Sie sich selbst.
  5. Halten Sie den Benutzer auf dem Laufenden. Stellen Sie die Arbeit in die Warteschlange, und versuchen Sie es später erneut, oder zeigen Sie eine meldung "beschäftigt, versuchen Sie es in einer Minute erneut" anstelle eines generischen Fehlers an.

Im Python SDK löst ein 429 anthropic.RateLimitError aus, und jeder Status von 500 oder höher, einschließlich 529, löst anthropic.InternalServerError aus:

import anthropic

client = anthropic.Anthropic(max_retries=4)


def summarize(text: str) -> str | None:
    try:
        message = client.messages.create(
            model="claude-sonnet-5",
            max_tokens=1024,
            messages=[{"role": "user", "content": f"Summarize:\n\n{text}"}],
        )
    except anthropic.RateLimitError as e:
        if "retry-after" not in e.response.headers:
            # Spend cap: every retry fails until access resumes
            alert_admin(e)
            return None
        raise
    except anthropic.InternalServerError as e:
        if e.status_code == 529:
            # Overloaded after all SDK retries: queue the job for later
            queue_for_later(text)
            return None
        raise
    return next(block.text for block in message.content if block.type == "text")

So testen Sie, ob Ihre App einen 529 verarbeitet

Sie sehen selten eine 529, während Sie sich entwickeln. Es hängt vom Datenverkehr von jedem Claude-API-Benutzer ab, sodass Sie ihn nicht auslösen können. Die Art und Weise, wie Sie testen, entscheidet, ob Sie die Fehler finden, bevor Ihre Benutzer dies tun.

Approach Was Sie finden Was Sie verpassen
Warten auf Produktion Tatsächliche Überladungen Alles, bis ein Benutzer darauf klickt
Mocken Sie die API in Ihren Tests, oder lassen Sie Ihren Coding-Agenten den Mock schreiben Ob Ihr Fehlerzweig ausgeführt wird Die echten Statuscodes und Fehlerantworten von Anthropic und 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 ein Fehler auftritt Tatsächliches Verhalten Sie können einen 529-Fehler nicht bei Bedarf auslösen, und Sie können ein Ausgabenlimit überhaupt nicht sicher erreichen.
Fangen Sie den realen Datenverkehr Ihrer App ab und geben Sie bei Bedarf HTTP-Statuscodes 529 und 429 zurück. Echte URLs, Ihre echte SDK, Ihre Wiederholungsrichtlinie und Anthropics eigenes Fehlerformat Nichts in Ihrer App ändert sich, sodass Ihr Code nicht isoliert getestet wird. Heben Sie sich dafür Ihre Unit-Tests auf.

Probieren Sie es in Ihrer App aus

Dev Proxy fängt die Anfragen Ihrer App an https://api.anthropic.com ab und gibt Fehler im Fehlerformat von Anthropic zurück, während Ihre App die echte URL aufruft. Laden Sie eine Voreinstellung herunter, und starten Sie Dev Proxy damit:

devproxy config get anthropic-throttling
devproxy --config-file "~dataFolder/configs/anthropic-throttling/.devproxy/devproxyrc.json"
Voreinstellung Was es zurückgibt
anthropic-throttling Nach dem Zufallsprinzip 1 von 4 429 rate_limit_error-Antworten (Anforderungen, Eingabetoken, Ausgabetoken und Beschleunigungsgrenzwert) oder ein 529 overloaded_error. Bei 429-Antworten setzt Dev Proxy retry-after und teilt Ihnen mit, wann Ihre App die API erneut zu früh aufruft.
anthropic-random-errors Bei 50 % der Anfragen wird zufällig einer der Fehler aus der Claude-API-Fehlerliste zurückgegeben, einschließlich 400, 401, 402, 403, 404, 409, 413, 429, 500, 504 und 529.

Keine Voreinstellung enthält ein Ausgabenlimit 429. Um diesen Pfad zu testen, fügen Sie eine Antwort ohne retry-after-Kopfzeile zur anthropic-errors.json-Datei der Voreinstellung hinzu:

{
  "statusCode": 429,
  "headers": [
    { "name": "content-type", "value": "application/json" }
  ],
  "body": {
    "type": "error",
    "error": {
      "type": "rate_limit_error",
      "message": "You have reached your API usage limits.",
      "details": { "error_code": "enforced_spend_limit_reached" }
    }
  }
}

Damit jede Anforderung fehlschlägt, sodass Sie sehen, was geschieht, wenn das SDK keine Wiederholungsversuche mehr übrig hat, starten Sie Dev Proxy mit --failure-rate 100. Weitere Informationen finden Sie unter Fehlerrate bei Änderungsanforderungen. Informationen zum Installieren von Dev Proxy finden Sie unter Einrichten von Dev Proxy.

Nächste Schritte

Siehe auch