Anthropic 529 overloaded_error: co to znamená a jak ho zpracovat

Claude API vrací 529 s typem chyby overloaded_error, když je API dočasně přetížené. Podle Anthropic k tomu může dojít, když rozhraní API zaznamená vysoký provoz napříč všemi uživateli. Vaše žádost je v pořádku. Rozhraní API je zaneprázdněné, takže žádost byla odmítnuta. Když vaše organizace překročí vlastní limity sazeb, získáte místo toho 429. Tělo odpovědi má stejný tvar jako každá jiná chyba rozhraní Claude API: nejvyšší úroveň typeerrorobjektu error s type a messagea request_id můžete poskytnout podporu Anthropic. Další informace najdete v tématu Chyby rozhraní Clauda API.

529, 429 nebo limit výdajů: jak je rozlišit

Rozhraní Claude API používá podobné chyby pro velmi různé problémy. Některé zmizí, když počkáte. To nezmizí až do příštího měsíce.

Response error.type retry-after Co to znamená Co dělat
529 overloaded_error Použijte ho, pokud tam je Rozhraní API je přetížené pro všechny uživatele. Počkejte a zkuste to znovu několikrát.
429 rate_limit_error Yes Vaše organizace prošla svými požadavky, vstupními tokeny nebo výstupními tokeny za minutu nebo se příliš rychle zrychli a dosáhla limitu zrychlení. Počkejte tak dlouho, jak uvádí retry-after
429 rate_limit_error, s error.details.error_code nastaveným na enforced_spend_limit_reached No Vaše organizace dosáhla měsíčního limitu útraty ve vašem tarifu využití. Nezkoušejte to znovu. Využití se pozastaví do 00:00 UTC prvního dne následujícího měsíce nebo dokud nepřejdete na vyšší úroveň.
400 invalid_request_error No Dosáhli jste limitu výdajů, který jste nastavili ve své organizaci nebo pracovním prostoru Zvyšte nebo odeberte limit

Chyba 429 kvůli limitu útraty má stejný typ chyby jako omezení rychlosti, takže kód, který opakuje pokus každé rate_limit_error, stále selhává. Anthropic uvádí, že opakované pokusy selžou, dokud se neobnoví přístup, včetně automatického opakování sady SDK. Podrobnosti najdete v článku Dosažení limitu výdajů.

Jak pracovat s 529

  1. Před opakováním zkontrolujte stavový kód. 529 a 429 vyžadují různé čekací doby a 429 bez retry-after nevyžaduje vůbec žádné opakování.
  2. Omezte příspěvky do plánu 529. Zkuste to znovu s exponenciální prodlevou a náhodným zpožděním a po několika pokusech přestaňte. Pokud má odpověď hlavičku retry-after, počkejte místo toho po tuto dobu.
  3. Nechte SDK provést první opakované pokusy. Oficiální sady SDK Anthropic ve výchozím nastavení opakují chyby připojení, omezení rychlosti a chyby 5xx dvakrát, s exponenciálním zpožděním a respektují retry-after, pokud je přítomen. Počet můžete změnit pomocí max_retries (maxRetriesv TypeScriptu). Když sada SDK skončí s opakovanými pokusy, váš kód obdrží chybu.
  4. Zastavte opakované pokusy při dosažení limitu útraty. Pokud odpověď 429 nemá žádnou retry-after hlavičku, řekněte to uživateli a upozorněte sami sebe.
  5. Informujte uživatele. Zařaďte práci do fronty a zkuste to znovu později, nebo místo obecné chyby zobrazte jasnou zprávu „Systém je vytížený, zkuste to znovu za minutu“.

V sadě Python SDK kód 429 vyvolá anthropic.RateLimitError a jakýkoli stav 500 nebo vyšší, včetně 529, vyvolá anthropic.InternalServerError:

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")

Jak otestovat, že aplikace zpracovává chybu 529

Na chybu 529 při vývoji narazíte jen zřídka. Závisí to na síťovém provozu od každého uživatele Claude API, takže to nemůžete vyvolat. Způsob, jakým testujete, rozhoduje o tom, jestli chyby zjistíte dříve, než je najdou vaši uživatelé.

Approach Co najdete Co vám chybí
Počkejte na produkční prostředí Skutečná přetížení Vše, dokud na něj uživatel neklikne
Namockujte API v testech nebo nechte programovacího agenta napsat mock Jestli se spouští vaše chybová větev Skutečné stavové kódy a těla chyb služby Anthropic a zásady opakování vaší sady SDK. Vaše aplikace také potřebuje testovací přepínač pro přístup k mocku.
Volejte skutečné rozhraní API, dokud se nezdaří Skutečné chování Na vyžádání nemůžete vyvolat chybu 529 a limit útraty nemůžete bezpečně vyvolat vůbec.
Zachyťte skutečný provoz vaší aplikace a vraťte 529 a 429 na vyžádání Skutečné adresy URL, vaše skutečné SDK, strategie opakování a vlastní formát chyb společnosti Anthropic V aplikaci se nic nemění, takže netestuje váš kód samostatně. Na to si nechte jednotkové testy.

Vyzkoušejte si ji v aplikaci

Dev Proxy zachytává požadavky vaší aplikace na https://api.anthropic.com a vrací chyby ve formátu chyb Anthropic, zatímco vaše aplikace pořád volá skutečnou adresu URL. Stáhněte si předvolbu a spusťte Dev Proxy:

devproxy config get anthropic-throttling
devproxy --config-file "~dataFolder/configs/anthropic-throttling/.devproxy/devproxyrc.json"
Preset Co vrací
anthropic-throttling Náhodně 1 ze 4 429 rate_limit_error odpovědí (požadavky, vstupní tokeny, výstupní tokeny a limit zrychlení) nebo odpověď 529 overloaded_error. U odpovědí 429 nastaví retry-after Dev Proxy a řekne vám, kdy vaše aplikace znovu volá rozhraní API příliš brzy.
anthropic-random-errors Náhodně jedna z chyb ze seznamu chyb rozhraní Clauda API, včetně chyb 400, 401, 402, 403, 404, 409, 413, 429, 500, 504 a 529 pro 50% požadavků

Žádná předvolba nezahrnuje limit útraty 429. Chcete-li tento postup otestovat, přidejte do souboru anthropic-errors.json předvolby odpověď bez hlavičky retry-after:

{
  "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" }
    }
  }
}

Aby každá žádost selhala, abyste viděli, co se stane, když sada SDK vyčerpá opakované pokusy, spusťte Dev Proxy pomocí --failure-rate 100. Další informace najdete v tématu Četnost selhání žádostí o změnu. Pokud chcete nainstalovat Dev Proxy, přečtěte si téma Nastavení Dev Proxy.

Další kroky

Viz také