Siz ve model arasında genellikle üç zaman aşımı vardır — SDK'nızınki, bir aracınınki ve sağlayıcının uzun akışsız çağrılara ilişkin kendi kuralı — ve en kısası kazanır. Yalnızca SDK zaman aşımını artırmanız, sorunu düzelttiğinizi düşündükten sonra bunun neden devam ettiğini açıklar.
Hata
# Rejected before generating, for a long non-streaming request:
{"type":"error","error":{"type":"invalid_request_error",
"message":"Streaming is strongly recommended for operations that may take
longer than 10 minutes."}}
# Or the client-side companion, with no response at all:
APITimeoutError: Request timed out.Nedenler ve çözümler özeti
| Neden | Çözüm |
|---|---|
| Uzun, akışsız bir üretim | Akış kullanın. Uzun tamamlamaların beklenmesi değil, akışla alınması beklenir. |
| SDK istemci zaman aşımı üretimden daha kısa | Artırın — ancak aracının sınırını da artırın; aksi hâlde hiçbir şey değişmez. |
| İsteği sınırlayan bir proxy, yük dengeleyici veya sunucusuz işlev | Zincirdeki en kısa sınırı bulun; karşılaştığınız sınır odur. |
| Bağlantı kabul edildi, ardından hiç yanıt gelmedi | Bu yavaş bir yanıt değil, takılmadır. İlk bayta kadar geçen süreyi ayrı olarak sınırlayın. |
Birkaç dakikayı aşabilecek her şeyi akışla alın
Streaming, sınırı aşmayı önlemenin yanı sıra bir canlılık sinyali sağlar: token'ların gelmesi modelin çalıştığını gösterir; böylece takılma yavaş ilerlemeden ayırt edilebilir. Tek bir engelleyici çağrıda bu ikisi, zaman aşımı gerçekleşene kadar aynı görünür.
Zincirdeki tüm zaman aşımlarını artırın, yalnızca SDK'nınkini değil
İnsanlar neredeyse her zaman istemciyi değiştirip orada durur. Bir ters proxy veya sunucusuz platform isteği yeni istemci zaman aşımınızın altında sınırlıyorsa sınır hâlâ kazanır ve belirti değişmez.
from anthropic import Anthropic
# Client timeout is only one of the limits in play.
client = Anthropic(api_key=KEY, timeout=600.0)
with client.messages.stream(
model="claude-sonnet-5",
max_tokens=8192,
messages=[{"role": "user", "content": prompt}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)İlk bayta kadar geçen süreyi toplam süreden ayrı sınırlayın
Bunlar iki farklı çözüme ihtiyaç duyan iki farklı hatadır. Kısa bir ilk bayt süresi, ölü bağlantıyı hızla yakalar; cömert bir toplam süre ise gerçekten uzun bir üretimin tamamlanmasına izin verir. Tek bir birleşik zaman aşımı ikisini birden yapamaz.
Yeniden denemeleri eklemeden önce güvenli hâle getirin
Sizin tarafınızda zaman aşımına uğrayan bir istek üst tarafta tamamlanmış olabilir. İşlemin yan etkileri varsa veya çağrı başına ücret alınıyorsa, yeniden deneme döngüsü eklemeden önce kendi katmanınızda idempotency uygulayın.
Kunavo üzerinden çağrı yapıyorsanız
Kunavo, sayıları sizin keşfetmenizi bekletmek yerine kendi sınırlarını yayımlar: üst taraftaki yanıt başlıkları için en fazla 240 saniye bekler ve akışsız bir yanıt genellikle başlıklarını yalnızca tamamlandığında gönderir; bu nedenle bundan uzun süren akışsız bir çağrı ağ geçidi üzerinden tamamlanmaz — akış kullanın. 240 saniyelik sınır yalnızca başlıklara kadar geçen süre için geçerlidir ve başlıklar gelir gelmez serbest bırakılır; bu nedenle uzun bir akışı hiçbir zaman kesmez. Ağ geçidinde akış uzunluğunu sınırlayan başka bir şey yoktur. Akışı sonlandıran şey sessizliktir: üst taraftan 300 saniye boyunca tek bir bayt gelmemesi veya size olan bağlantıda 600 saniye boyunca tek bir bayt gelmemesi. Eşzamanlı görüntü, video ve müzik rotaları, bir oluşturma işlemi tamamlanırken bağlantıyı 540 saniyeye kadar açık tutar; bu, oluşturma işlemleri meşru olarak dakikalar sürdüğünden 600 saniyelik pencerenin içindedir. Başlıklardan önce zaman aşımına uğrayan bir istek kanal hatası olarak sayılır, yapılandırılmışsa modelin sonraki kanalında yeniden denenir ve sıfır maliyetle kaydedilir.
Sık sorulan sorular
Zaman aşımına uğrayan bir istek ücretlendirilir mi?
Kunavo'da hayır — başarısız istekler sıfır maliyetle kaydedilir. Bir sağlayıcıya doğrudan yapılan ödemelerde durum, üretimin gerçekten gerçekleşip gerçekleşmediğine bağlıdır.
Streaming sınırı neden aşar?
Yanıt saniyeler içinde başlar ve bağlantı meşgul kalır; bu nedenle tek bir sessizlik aralığı zaman aşımını tetikleyecek kadar uzun olmaz.
İstemci zaman aşımım ne olmalı?
En kötü gerçekçi üretim sürenizden uzun olmalı ve ayrı, kısa bir ilk bayt süresiyle birlikte kullanılmalıdır. Tek bir uzun birleşik zaman aşımı, her takılmayı birkaç dakikalık bir beklemeye dönüştürür.
İlgili kılavuzlar
- LLM akış hataları — SSE kesilmeleri, takılan akışlar ve eksik kullanım bilgileri
- Claude API 529 overloaded_error — nedir ve nasıl atlatılır
Hata anlamlarına ilişkin daha fazla bilgi hata referansı bölümünde; anahtar almak kayıt ve kimlik doğrulama kılavuzu üzerinden bir dakika sürer.