Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Claude API, geçici olarak aşırı yüklendiğinde 529 hata türüyle overloaded_error döndürür. Anthropic'e göre, API tüm kullanıcılar genelinde yüksek trafikle karşılaştığında gerçekleşebilir. İsteğiniz uygun. API meşgul olduğundan isteği reddetti. Kuruluşunuz kendi oran sınırlarını aştığında bunun yerine 429 alırsınız. Yanıt gövdesi, diğer tüm Claude API hata yanıtlarıyla aynı yapıya sahiptir: en üst düzeyde type türünde bir error, error ve type içeren bir message nesnesi ve Anthropic desteğine verebileceğiniz bir request_id. Daha fazla bilgi için bkz. Claude API hataları.
529, 429 veya harcama sınırı: bunları nasıl ayırt edersiniz
Claude API’sinde çok farklı sorunlar için benzer görünümlü hatalar kullanılır. Bir süre beklerseniz bazıları kaybolur. Bunlardan biri gelecek aya kadar kalır.
| Response | error.type |
retry-after |
Ne anlama gelir? | Yapılması gerekenler |
|---|---|---|---|---|
529 |
overloaded_error |
Varsa kullanın | API tüm kullanıcılar için aşırı yük altında | Bir süre bekleyip birkaç kez yeniden deneyin |
429 |
rate_limit_error |
Yes | Kuruluşunuz dakika başına istek sınırını, giriş belirteçlerini veya dakika başına çıkış belirteçlerini aştı ya da çok hızlı bir artışa geçip bir hızlanma sınırına ulaştı | Dediği kadar retry-after bekleyin |
429 |
rate_limit_error, error.details.error_codeenforced_spend_limit_reached olarak ayarlanmışken |
No | Kuruluşunuz kullanım katmanının aylık harcama sınırına ulaştı | Yeniden denemeyin. Kullanım, sonraki ayın ilk günü saat 00:00 UTC'ye kadar veya siz daha yüksek bir katmana taşınana kadar duraklatılır. |
400 |
invalid_request_error |
No | Kullanım, kuruluşunuzda veya çalışma alanınızda ayarladığınız bir harcama sınırına ulaştı | Sınırı artırın veya kaldırın |
Harcama üst sınırı 429, hız sınırıyla aynı hata türüne sahiptir, bu nedenle her rate_limit_error denemede yeniden deneyen kod başarısız olmaya devam eder. Anthropic, erişim yeniden sağlanana kadar SDK'nın otomatik yeniden denemeleri dahil yeniden denemelerin başarısız olduğunu belirtir. Ayrıntılar için bkz. Harcama sınırınıza ulaşma.
529 nasıl ele alınır
- Yeniden denemeden önce durum kodunu denetleyin. A
529ve429farklı beklemelere ihtiyaç duyar ve429olmadanretry-afteryeniden deneme gerekmez. - 529 konusunda geri adım atın. Üstel geri alma ve rastgele değişim ile yeniden deneyin ve birkaç denemeden sonra durdurun. Yanıtın
retry-afterüst bilgisi varsa, bunun yerine bu kadar bekleyin. - İlk yeniden denemeleri SDK'nın yapmasına izin verin.
Resmi Anthropic SDK'lar bağlantı hatalarını, hız sınırlarını ve 5xx hatalarını üstel geri alma ile varsayılan olarak iki kez yeniden dener ve mevcut olduğunda kabul
retry-aftereder. Sayını (maxRetriesTypeScript'te) ilemax_retriesdeğiştirebilirsiniz. SDK yeniden deneme hakkını tükettiğinde kodunuz hatayı alır. - Harcama üst sınırına ulaşıldığında yeniden denemeyi durdurun. 429'un
retry-afterüst bilgisi yoksa kullanıcıya bildirin ve kendinize uyarı gönderin. - Kullanıcıyı bilgilendirin. İşi sıraya alın ve daha sonra yeniden deneyin veya genel bir hata yerine net bir "meşgul, bir dakika içinde yeniden deneyin" iletisini gösterin.
Python SDK'sında 429, anthropic.RateLimitError yükseltir ve 529 dahil olmak üzere 500 veya üzerindeki herhangi bir durum kodu, anthropic.InternalServerError yükseltir:
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")
Uygulamanızın bir 529'u işlediğini test etme
Geliştirirken nadiren bir 529 görürsünüz. Bu, her Claude API kullanıcısından gelen trafiğe bağlıdır, bu nedenle tetikleyemezsiniz. Test yönteminiz, hataları kullanıcılarınızdan önce bulup bulamayacağınızı belirler.
| Approach | Bulduklarınız | Özlediğiniz şeyler |
|---|---|---|
| Üretim için bekleme | Gerçek aşırı yüklemeler | Her şey, bir kullanıcı ona tıklayana kadar |
| Testlerinizde API'yi mocklayın veya kodlama ajanınızın mock’u yazmasına izin verin | Hata dalınız çalışıyor mu | Anthropic gerçek durum kodları ve hata gövdeleri ile SDK'nızın yeniden deneme ilkesi. Uygulamanızın mock’a erişmek için yalnızca test amaçlı bir seçeneğe de ihtiyacı vardır. |
| Başarısız olana kadar gerçek API'yi çağırın | Gerçek davranış | İsteğe bağlı olarak bir 529’u tetikleyemezsiniz ve harcama üst sınırını güvenli bir şekilde etkinleştiremezsiniz |
| Uygulamanızın gerçek trafiğini yakalayın ve isteğe bağlı olarak 529 ve 429 döndürün | Gerçek URL'ler, gerçek SDK'nız ve yeniden deneme ilkeniz ve Anthropic'in kendi hata biçimi | Uygulamanızda hiçbir şey değişmez, bu nedenle kodunuzu yalıtılmış olarak test etmez. Bunun için birim testlerinizi kullanın. |
Uygulamanızda deneyin
Dev Proxy, uygulamanız gerçek URL'yi çağırmaya devam ederken uygulamanızın https://api.anthropic.com isteklerine müdahale eder ve hataları Anthropic'in hata biçiminde döndürür. Bir ön ayar indirin ve Dev Proxy'yi bununla başlatın:
devproxy config get anthropic-throttling
devproxy --config-file "~dataFolder/configs/anthropic-throttling/.devproxy/devproxyrc.json"
| Preset | Ne döndürür? |
|---|---|
anthropic-throttling |
Rastgele olarak, 4.429 yanıttan 1'i (istekler, giriş belirteçleri, çıkış belirteçleri ve hızlandırma sınırı) veya bir 529 overloaded_error. 429'larda Dev Proxy retry-after ayarlar ve uygulamanız API'yi yeniden çok erken çağırdığında size bildirir. |
anthropic-random-errors |
İsteklerin %50’si için, 400, 401, 402, 403, 404, 409, 413, 429, 500, 504 ve 529 dahil olmak üzere Claude API hata listesindeki hatalardan biri rastgele seçilir. |
İki ön ayardan hiçbiri harcama sınırı 429 içermez. Bu yolu test etmek için, ön ayarın retry-after dosyasına anthropic-errors.json üst bilgisi içermeyen bir yanıt ekleyin:
{
"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" }
}
}
}
SDK'nın yeniden denemeleri bittiğinde ne olduğunu görebilmeniz için, her isteğin başarısız olmasını sağlamak amacıyla Dev Proxy'yi --failure-rate 100 ile başlatın. Daha fazla bilgi için bkz. Değişiklik isteği başarısızlık oranı. Geliştirme Proxy'sini yüklemek için bkz. Dev Proxy'yi ayarlama.