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.
Kodlama aracınız yeniden denemeler ve oran sınırlaması işlemesinin eklendiğini ve testlerinin geçtiğini söylüyor. Buna güvenmeden önce testlerin neye karşı çalıştırıldığını denetleyin.
3 kodlama aracısıyla (210 çalıştırma) çalıştırdığımız bir testte, uygulamaların API hatalarını işlemesini ve bunun işe yaradığını göstermesini istedik. Çalışan kodun istendiği 140 çalıştırmanın %76'sında, aracı başarısızlık durumunu fetch stub'ları, httpx.MockTransport veya geçici bir HTTP sunucusu kullanarak elle oluşturdu. Gerçek API’nin kullanılabildiği ve istemin bunu dışlamadığı 75 çalıştırmanın 0’ında uygulama kendi gerçek API URL’si üzerinden test edildi. Bu tür testleri geçmek, ajanın kodunun ajanın öngördüğü hata durumunu ele aldığını kanıtlar. Bu, API'nin gönderdiğinden farklı bir hatadır.
Checklist
- Neye karşı test edildiğini sorun. Ajana şu soruyu sorun: "Testiniz sırasında uygulama hangi URL'yi çağırdı ve hatayı ne döndürdü?" Yanıt bir stub ya da ajanın yazdığı yerel bir sunucuysa, testleri eklediği dallanmaların birim testleri olarak değerlendirin.
- Testler için eklenmiş anahtarları arayın. Farkta yeni ortam değişkenleri, temel URL ayarları veya bayraklar arayın. Testimizde, GitHub, OpenAI veya bir hava durumu API'sini çağıran uygulamalardaki 105 çalıştırmanın 61'i bir tane ekledi. Bunu üretim ortamında isteyip istemediğinize karar verin.
- Kodu API'nin belgelenmiş davranışı doğrultusunda kontrol edin. Her API kendine özgü biçimde başarısız olur:
-
GitHub: birincil hız sınırını aştığınızda,
0alırsınız vex-ratelimit-remainingolarak ayarlanmış olur; ardından UTC dönem saniyeleri cinsindenx-ratelimit-resetiçindeki zamana kadar beklersiniz. İkincil hız sınırları için, varsaretry-afterzamanına kadar, aksi takdirdex-ratelimit-remaining0isex-ratelimit-resetzamanına kadar, değilse en az 1 dakika bekleyin. Yalnızca 429'u kontrol eden kod 403'leri kaçırır. -
OpenAI: 429'lardan bazıları faturalama ve harcama limitleri ile ilgili, örneğin
credit_balance_exhausted. Bunları yeniden denemek işe yaramaz. Her 429 hatasında yeniden deneyen kod, sorunu sizden gizler. -
Anthropic: Harcama üst sınırı 429 başlığı yoktur
retry-afterve aşırı yüklemeler yalnızca standart durum kodlarını bilen kodun beklemeyebileceği 529 değerini döndürür.
-
GitHub: birincil hız sınırını aştığınızda,
- Nasıl okunduğunu
Retry-Afterkontrol edin. Üst bilgi birkaç saniye veya HTTP tarihi (RFC 9110) tutar. Kodun API'nizin gönderdiği biçimi işleyip işlemediğini, deneme sayısını ve toplam bekleme süresini sınırladığını ve zaten yeniden deneme yapan bir SDK'nın üzerine ek yeniden deneme yapmadığını denetleyin. - Yeniden denemeler bittiğinde kullanıcının ne gördüğünü denetleyin. Yığın izlemesi veya sonsuz dönen simge yerine net bir ileti arayın ve kullanıcının işini kaybetmediğini denetleyin.
- Uygulamayı simüle edilmiş hatalarla gerçek URL'lerinde çalıştırın. Bu, çalışan uygulamanın, SDK'sının ve yeniden deneme ilkesinin birlikte nasıl davrandığını gösteren tek adımdır.
Ajan tarafından yazılan hata işlemeyi doğrulama
| Approach | Bulduklarınız | Kaçırdıklarınız |
|---|---|---|
| Diff’i okuyun | Kodun doğru görünip görünmediği | API'nin gerçek yanıtlarında doğru davranıp davranmadığı |
| Ajanın testlerini çalıştır | Yazdığı dallar çalışır | Stub'ın modellemediği her şey: gerçek durum kodları, üst bilgiler, hata gövdeleri ve SDK yeniden denemeleri |
| Başarısız olana kadar gerçek API'yi çağırın | Gerçek davranış | İsteğe bağlı olarak hataları tetikleyemezsiniz ve gerçek kullanım kotası harcarsınız |
| Sanal hatalarla uygulamayı gerçek URL'lerde çalıştırma | Çalışan uygulama, SDK'sı ve yeniden deneme ilkesi API'nin kendi hatalarını nasıl işler? | Kodunuz izole şekilde. Bunun için ajanın birim testlerini saklayın. |
Uygulamanızda deneyin
Dev Proxy, uygulamanızın gerçek API'ye gönderdiği istekleri yakalar ve uygulamanızın kodunda hiçbir değişiklik olmadan seçtiğiniz hataları döndürür. Popüler API'ler için bir hazır ayarla başlayın. Aracınız GitHub hız sınırını denetlemek için şunları yazdı:
devproxy config get github-rate-limiting
devproxy --config-file "~dataFolder/configs/github-rate-limiting/.devproxy/devproxyrc.json"
Uygulamanızı çalıştırın ve Dev Proxy çıkışını izleyin. Önayar, uygulamanız sınırı aştıktan sonra GitHub'ın hız sınırı üst bilgilerini içeren bir 429 döndürür. Ön ayardaki RetryAfterPlugin , uygulamanızın bekleme süresi tamamlanmadan önce API'yi yeniden çağırıp çağırmadığını bildirir.
openai-throttling ve anthropic-throttling ön ayarları, sağlayıcının kendi hız sınırı hataları için aynı işlemi yapar ve openai-throttling yeniden denenmemesi gereken bir credit_balance_exhausted 429 döndürür.
Diğer API'ler için:
- GenericRandomErrorPlugin, tanımladığınız hataları seçtiğiniz sıklıkta döndürür.
--failure-rateile hızı ayarlayın. Bkz. Uygulamamı rastgele hatalarla test et. - LatencyPlugin, aracının ayarladığı zaman aşımlarını denetleyebilmeniz için yanıtları geciktirmektedir. Bkz. Yavaş API yanıtlarını simüle etme.
Ayrıca, kodlama aracınızdan Dev Proxy yapılandırmasını yazmasını isteyebilirsiniz. Dev Proxy belgelerine ve en iyi yöntemlere bakabilmesi ve hangi sürümü yüklediğinizi denetleyebilmesi için Dev Proxy MCP server öğesini aracınıza ekleyin. Ajanın yazdığı diğer kodlar gibi bu yapılandırmayı gözden geçirin.
Dev Proxy'yi yüklemek için bkz. Dev Proxy'yi ayarlama.