Kodlama aracınızın yazdığı hata işlemeyi nasıl doğrularsınız

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

  1. 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.
  2. 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.
  3. 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, 0 alırsınız ve x-ratelimit-remaining olarak ayarlanmış olur; ardından UTC dönem saniyeleri cinsinden x-ratelimit-reset içindeki zamana kadar beklersiniz. İkincil hız sınırları için, varsa retry-after zamanına kadar, aksi takdirde x-ratelimit-remaining0 ise x-ratelimit-reset zamanı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-after ve aşırı yüklemeler yalnızca standart durum kodlarını bilen kodun beklemeyebileceği 529 değerini döndürür.
  4. 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.
  5. 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.
  6. 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:

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.

Sonraki Adımlar

Ayrıca bkz.