Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Claude API overloaded_error hibával tér vissza a 529 hibatípussal, ha az API átmenetileg túlterhelt. A Anthropic szerint ez akkor fordulhat elő, ha az API nagy forgalmat tapasztal az összes felhasználót érintően. A kérése rendben van. Az API foglalt volt, ezért a kérés el lett utasítva. Ha szervezete túllépi a saját lekérési korlátait, 429-et kap. A válasz törzse ugyanolyan felépítésű, mint minden más Claude API-hiba: egy legfelső szintű type of error, egy error objektum type és message mezővel, valamint egy request_id, amelyet megadhat az Anthropic ügyfélszolgálatának. További információ: Claude API-hibák.
529, 429 vagy költségkorlát: hogyan lehet megkülönböztetni őket
A Claude API hasonló kinézetű hibákat használ nagyon eltérő problémák jelölésére. Némelyik elmúlik, ha vársz. Nem múlik el a következő hónapig.
| Válasz | error.type |
retry-after |
Mit jelent ez? | Teendők |
|---|---|---|---|---|
529 |
overloaded_error |
Használja, ha ott van | Az API minden felhasználó számára túlterhelt | Várjon, majd próbálja újra néhányszor |
429 |
rate_limit_error |
Yes | A szervezet túllépte a percenkénti kérelmek, a bemeneti tokenek vagy a kimeneti tokenek számának korlátját, vagy túl gyorsan növelte a terhelést, és elérte a gyorsulási korlátot | Várjon addig, ameddig retry-after mondja |
429 |
rate_limit_error, a következőre error.details.error_code van állítva: enforced_spend_limit_reached |
No | A szervezet elérte a használati csomag havi költségkorlátját | Ne próbálkozzon újra. A használat a következő hónap első napján 00:00 UTC-ig szünetel, vagy amíg magasabb szintre nem lép. |
400 |
invalid_request_error |
No | A használat elérte a szervezeten vagy munkaterületen beállított költségkeretet | Növelje vagy távolítsa el a korlátozást |
A 429-es kiadási korlát hibatípusa megegyezik a sebességkorlátozáséval, ezért a minden rate_limit_error után újrapróbálkozó kód továbbra is sikertelen marad. Anthropic megjegyzi, hogy az újrapróbálkozások a hozzáférés folytatásáig meghiúsulnak, beleértve az SDK automatikus újrapróbálkozásait is. További részletekért lásd: A költségkorlát elérése.
Hogyan kezeljünk egy 529-es számlát
- Az újrapróbálkozás előtt ellenőrizze az állapotkódot. Egy
529és egy429eltérő várakozást igényel, és aretry-afternélküli429egyáltalán nem igényel újrapróbálkozást. - Álljon el az 529-től. Próbálkozzon újra exponenciálisan növekvő várakozási idővel és véletlenszerű jitterrel, és néhány kísérlet után állítsa le. Ha a válasz
retry-afterfejléccel rendelkezik, akkor inkább várjon ennyi ideig. - Hagyja, hogy az SDK végezze el az első újrapróbálkozásokat. A hivatalos Anthropic SDK-k alapértelmezés szerint kétszer újrapróbálkoznak kapcsolódási hibák, sebességkorlátozás és 5xx hibák esetén, exponenciális visszalépéssel, és figyelembe veszik a
retry-afterelemet, ha az jelen van. A darabszámot amax_retrieshasználatával módosíthatja (maxRetriesTypeScriptben). Ha az SDK kifogy az újrapróbálkozási lehetőségekből, a kód hibát kap. - Ne próbálkozzon újra költségkorlát esetén. Ha a 429-nek nincs
retry-afterfejléce, mondja el a felhasználónak, és riassza magát. - Tájékoztassa a felhasználót. Tegye a munkát várólistára, és később próbálkozzon újra, vagy általános hiba helyett jelenítsen meg egy egyértelmű „foglalt, próbálkozzon újra egy perc múlva” üzenetet.
A Python SDK-ban a 429-es anthropic.RateLimitError kivételt vált ki, és bármely 500-as vagy magasabb státuszkód, beleértve az 529-et is, anthropic.InternalServerError kivételt vált ki:
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")
Annak tesztelése, hogy az alkalmazás kezeli-e az 529-et
Fejlesztés közben ritkán látni 529-es hibát. Ez minden Claude API-felhasználó forgalmától függ, ezért nem tudod kiváltani. A tesztelés módja határozza meg, hogy Ön a felhasználók előtt találja-e meg a hibákat.
| Approach | Mit talál? | Amit hiányol |
|---|---|---|
| Várjon az éles környezetre | Tényleges túlterhelések | Minden, amíg egy felhasználó rá nem kattint |
| Mockold az API-t a tesztjeidben, vagy hagyd, hogy a kódoló asszisztens megírja a mockot | Hogy lefut-e a hibaág | Anthropic valós állapotkódjait és hibatörzseit, valamint az SDK újrapróbálkozási szabályzatát. Az alkalmazásnak egy csak tesztelési kapcsolóra is szüksége van a mock eléréséhez. |
| Hívja meg a valódi API-t, amíg hibát nem ad | Valós viselkedés | Nem idézhet elő igény szerint 529-es eseményt, és egyáltalán nem válthat ki biztonságosan költési korlátot |
| Elfogja az alkalmazás valós forgalmát, és igény szerint 529-et és 429-et ad vissza | Valós URL-címek, valódi SDK- és újrapróbálkozési szabályzat, valamint Anthropic saját hibaformátuma | Az alkalmazásban semmi sem változik, ezért nem teszteli a kódot külön-külön. Arra valók az egységtesztek. |
Próbálja ki az alkalmazásában
A Dev Proxy elfogja az alkalmazás kéréseit https://api.anthropic.com Anthropic hibaformátumában, és visszaadja a hibákat, miközben az alkalmazás folyamatosan meghívja a valódi URL-címet. Töltsön le egy előbeállítást, és indítsa el vele a Dev Proxyt:
devproxy config get anthropic-throttling
devproxy --config-file "~dataFolder/configs/anthropic-throttling/.devproxy/devproxyrc.json"
| Preset | Mit ad vissza? |
|---|---|
anthropic-throttling |
Véletlenszerűen 1 a 4 429 rate_limit_error válaszból (kérések, bemeneti jogkivonatok, kimeneti jogkivonatok és gyorsulási korlát) vagy egy 529 overloaded_error. 429-es válaszok esetén a Dev Proxy beállítja a retry-after értéket, és jelzi, ha az alkalmazás túl korán hívja meg újra az API-t. |
anthropic-random-errors |
Véletlenszerűen a Claude API-hibalista egyik hibája, beleértve a 400, 401, 402, 403, 404, 409, 413, 429, 500, 504 és 529 hibát, 50% kérés esetén |
Egyik előre beállított érték sem tartalmaz 429-et. Az elérési út teszteléséhez adjon hozzá egy fejléc nélküli retry-after választ az előre beállított anthropic-errors.json fájlhoz:
{
"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" }
}
}
}
Ha azt szeretné, hogy minden kérés sikertelen legyen, így láthatja, mi történik, ha az SDK kifogy az újrapróbálkozási lehetőségekből, indítsa el a Dev Proxyt a következővel: --failure-rate 100 További információkért lásd a módosítási kérelmek sikertelenségi arányát ismertető témakört. A Dev Proxy telepítéséhez lásd: Dev Proxy beállítása.