Yapay Zekanın Fetch API Konusunda Yanlış Yaptığı 5 Şey

Yapay zeka kodlama asistanları doğru görünen kodlar yazar. Doğru olan kodları yazmazlar.

Çoğu model basit bir fetch kod parçacığı önerir. Bu kod bir demoda çalışır ancak üretim ortamında (production) başarısız olur. Fetch API, tam teşekküllü bir HTTP istemcisi değil, düşük seviyeli bir araçtır. Yapay zekanın yapamayacağı mimari kararlar vermenizi gerektirir.

İşte yapay zekanın fetch konusunda başarısız olduğu 5 yol:

  • Hata Yönetimi Yapay zeka, başarısız bir isteğin promise'i reddettiğini (reject) varsayar. Bu yanlıştır. 404 veya 500 hatası bir catch bloğunu tetiklemez. response.ok değerini manuel olarak kontrol etmelisiniz. Eğer bunu yapmazsanız, uygulamanız hata sayfalarını başarılı veri olarak kabul edecektir.

  • İstek İptali Yapay zeka genellikle AbortController kullanmayı unutur. Bu durum, React gibi framework'lerde bellek sızıntılarına (memory leaks) ve yarış durumlarına (race conditions) neden olur. Eğer bir kullanıcı bir liste içinde hızlıca gezinirse, eski istekler yenilerinden sonra sonuçlanabilir. Bu da kullanıcı arayüzünüzde (UI) güncelliğini yitirmiş veriler kalmasına neden olur. Ayrıca, bilinçli iptaller sırasında hata mesajları göstermemek için AbortError durumunu filtrelemelisiniz.

  • Veri Akışı (Streaming Data) Yapay zeka yanıtları tek bir blok olarak ele alır. Bu durum, büyük dosyalar veya LLM yanıtları işlenirken sorun çıkarır. Ağ parçacıkları (network chunks), tek bir karakteri veya bir JSON satırını ortadan ikiye bölebilir. Parçacıklar arasında baytları doğru şekilde işlemek için bir TextDecoderStream ve bir buffer kullanmalısınız.

  • Dayanıklılık ve Yeniden Denemeler (Resilience and Retries) Yapay zeka saf (naive) yeniden deneme döngüleri sunar. Bu döngüler tehlikelidir. Genellikle POST isteklerini yeniden denerler, bu da mükerrer ödemelere veya yinelenen verilere neden olabilir. Ayrıca backoff ve jitter mekanizmalarından yoksundurlar. Bu, küçük bir sunucu aksamasını devasa bir kesintiye dönüştürür. Yalnızca idempotent istekleri yeniden denemeli ve üstel geri çekilme (exponential backoff) kullanmalısınız.

  • Ortam Farklılıkları Yapay zeka, Tarayıcı (Browser) ve Node.js kurallarını birbirine karıştırır. Node.js, CORS'u zorunlu kılmaz. Node.js'in farklı varsayılan zaman aşımı (timeout) süreleri vardır. Node'da, bağlantı sızıntılarını önlemek için gövdeyi (body) tüketmelisiniz. Yapay zeka hedef çalışma ortamınızı (runtime) bilemez, bu nedenle genellikle birinde çalışan ancak diğerinde bozulan kodlar verir.

Strateji:

Yapay zekayı iskelet oluşturmak (scaffolding) için kullanın. Boilerplate kodları ve temel yapıyı yazmasına izin verin.

Semantiğin sahibi siz olmalısınız. 404'ün bir hata olup olmadığına siz karar verirsiniz. Yeniden deneme bütçenize siz karar verirsiniz. Kimlik doğrulama (auth) başlıklarını nasıl yöneteceğinize siz karar verirsiniz.

Yapay zeka makul görünen kod için optimize eder. Siz ise doğruluk için optimize etmelisiniz.

Kaynak: https://dev.to/devunionx/new5-things-even-ai-cant-do-fetch-api-328e