LLM API'leri ilk gerçek trafikte neden bozulur? Hız sınırı, yeniden deneme ve zaman aşımı
Ship AI Engineer ekibi · Yayımlandı: 2026-08-12
Bir dil modeli API'sine ilk entegrasyonunuz büyük ihtimalle tek bir satırdır: isteği gönder, cevabı yazdır. Geliştirirken kusursuz çalışır, çünkü geliştirirken dakikada birkaç istek atarsınız ve sağlayıcı o saatte sakindir.
Yayına aldığınız ilk yoğun saatte aynı satır üç farklı biçimde bozulur. Bir kısım
istek 429 döner. Bir kısmı hiç dönmez ve kullanıcı dönen bir çarka bakar. Bir
kısmı da sağlayıcı tarafında geçici bir hatayla düşer. Kodunuz üçünü de aynı
biçimde ele alıyorsa (çoğu ilk entegrasyonda olduğu gibi "hata oldu" diye) üçünü
de yanlış ele alıyordur. Bu yazı bu üç durumu birbirinden ayırmayı ve her birine
doğru cevabı vermeyi anlatıyor.
429 ile 500 hatası arasındaki fark nedir?
429 "çok hızlısın, biraz bekle", 5xx ise "sorun bizde" demektir; ikisi de yeniden denenebilir ama farklı sebeplerle.
429 Too Many Requests, hesabınızın dakikalık istek ya da token sınırını
aştığınızı söyler. Sorun sizin trafiğinizdedir ve beklemek onu çözer. 500,
502, 503 ya da sağlayıcıya özgü "aşırı yük" hataları, sağlayıcının o an
isteği işleyemediğini söyler; bunlar da genellikle geçicidir. Asıl ayrım bu ikisi
ile 400 ailesi arasındadır: 400 (geçersiz istek), 401 (geçersiz anahtar) ya
da bağlam penceresini aşan bir istek yeniden denenince düzelmez. Bunları yeniden
denemek yalnızca aynı hatayı daha pahalıya, daha çok gecikmeyle almaktır. İlk
yazmanız gereken kod, hatayı bu iki gruba ayıran koddur.
Yeniden deneme nasıl yapılmalı?
Artan bekleme süreleriyle, rastgelelik ekleyerek ve bir üst sınırla.
Hata alır almaz hemen yeniden denemek, sağlayıcı zaten yüklüyken ona daha fazla yük bindirir. Doğrusu üstel beklemedir: ilk denemeden sonra kısa bir süre, sonrakinde iki katı, sonrakinde yine iki katı. Buna rastgele sapma (jitter) eklemek de en az bekleme kadar önemlidir. Yüz istemci aynı anda hata alıp aynı anda aynı süre bekleyip yeniden denerse, sağlayıcıya yine aynı anda çarpar. Her bekleme süresine rastgele bir pay eklemek bu dalgayı dağıtır.
Sağlayıcı cevabında Retry-After başlığı gönderiyorsa, kendi hesabınız yerine
ona uyun; ne zaman yeniden deneyebileceğinizi sizden iyi bilir. Ve mutlaka bir
üst sınır koyun: üç ya da dört denemeden sonra vazgeçip kullanıcıya anlamlı bir
mesaj göstermek, sonsuza kadar denemekten iyidir.
Zaman aşımı ne kadar olmalı?
Kullanıcının bekleyebileceği süreye göre, modelin ne kadar sürebileceğine göre değil.
Zaman aşımı olmayan bir istek, sağlayıcı cevap vermediğinde sonsuza kadar asılı kalır ve sunucunuzun bağlantılarını tüketir. Çoğu HTTP istemcisinin varsayılan zaman aşımı ya çok uzundur ya da hiç yoktur; bunu açıkça ayarlamak gerekir. Uzun cevaplar üreten bir uç noktada iki şeyi ayırmak işe yarar: bağlantının kurulma süresi (kısa olmalı) ve cevabın tamamlanma süresi (daha uzun olabilir). Cevabı akış (streaming) olarak alıyorsanız kullanıcı ilk kelimeyi hemen görür; bu durumda izlemeniz gereken sayı toplam süre değil, ilk token'a kadar geçen süredir.
Yeniden denemek ne zaman tehlikelidir?
İsteğin bir yan etkisi olduğunda.
Düz bir metin üretme isteğini yeniden denemenin bedeli en fazla iki kez token ödemektir. Ama model bir araç çağırıyorsa (bir e-posta gönderiyor, bir sipariş oluşturuyor, bir ödeme başlatıyorsa) ilk istek aslında başarılı olup cevabı size ulaşmadan zaman aşımına düşmüş olabilir. Bu durumda yeniden denemek işlemi iki kez yapar. Çözüm, yan etkisi olan her işleme bir idempotency anahtarı vermek ve aynı anahtarla gelen ikinci isteği yeniden işlemek yerine ilk sonucu döndürmektir. Ödeme sistemlerinin yıllardır uyguladığı bu kural, araç kullanan her yapay zeka sistemi için de geçerlidir.
Sağlayıcı tamamen çöktüğünde ne olmalı?
Ürün çökmemeli; bir özellik geçici olarak devre dışı kalmalı.
Bütün sağlayıcıların kesintileri olur. Asıl soru o sırada kullanıcının ne gördüğüdür. İyi tasarlanmış bir sistemde yapay zekaya bağlı olan özellik "şu an kullanılamıyor" der ve uygulamanın geri kalanı çalışmaya devam eder. Bir adım ötesi, art arda hata aldığınızda bir süre sağlayıcıya hiç istek atmamaktır (devre kesici): böylece hem kullanıcılar her seferinde uzun bir zaman aşımı beklemez hem de toparlanmaya çalışan sağlayıcıya yük bindirmezsiniz. İkinci bir sağlayıcıya geçmek de mümkündür, ama yalnızca o sağlayıcıyla aynı soru kümesinde ölçüm yaptıysanız; aksi hâlde kalitesini bilmediğiniz bir modele sessizce geçmiş olursunuz.
Hangi bilgileri kaydetmelisiniz?
Her istekte en az şunları: hangi model, kaç girdi ve çıktı token'ı, ne kadar sürdüğü, kaçıncı denemede başarılı olduğu ve hata aldıysa hangi kodu.
Bu kayıt olmadan "neden yavaş", "neden pahalı" ve "neden bazen hata veriyor" sorularının hiçbiri cevaplanamaz. Token sayıları özellikle önemlidir: fatura onlarla hesaplanır ve bir uzun konuşmanın maliyetinin nasıl katlandığını görmenin tek yolu, istek başına token'ı zaman içinde izlemektir. Bu konuşma maliyetinin neden mesaj sayısından hızlı büyüdüğünü maliyet oyununda kendiniz deneyebilir, gerçek bir sistemin yoğun trafikte nasıl bozulduğunu arıza vakalarında adım adım izleyebilirsiniz.
Kullanıcı başına sınır neden gerekir?
Çünkü hesabınızın hız sınırı bütün kullanıcılarınızın ortak bütçesidir.
Tek bir kullanıcının (ya da bir botun) dakikada yüzlerce istek atması, hesabınızın
sınırını herkes için tüketir ve diğer kullanıcılar 429 almaya başlar. Dil modeli
çağıran her uç noktaya kullanıcı başına bir sınır ve bir harcama tavanı koymak, hem
bu ortak bütçeyi korur hem de faturanızı başkasının eline vermenizi engeller. Bu,
bir yapay zeka uygulamasının güvenlik önlemlerinin de ilk adımıdır.
Kaynaklar
- Anthropic: errors and rate limits: hangi hata kodunun ne anlama geldiği ve hangilerinin yeniden denenebileceği. (eklenme: 2026-08)
- AWS Architecture Blog: exponential backoff and jitter: rastgele sapmanın neden gerektiğini ölçümlerle gösteren klasik yazı. (eklenme: 2026-08)
- MDN: Retry-After header: sunucunun ne zaman yeniden denenebileceğini nasıl bildirdiği. (eklenme: 2026-08)
- OWASP: API Security Top 10: Unrestricted Resource Consumption: kullanıcı başına sınır olmayan bir API'nin nasıl kötüye kullanıldığı. (eklenme: 2026-08)
Okumaya devam et
2026-10-06
AI engineer olarak takip etmeye değer kaynaklar: neyi, ne zaman okumalı?
Bu alanda her gün yeni bir yazı, yeni bir model, yeni bir araç çıkıyor ve hepsini takip etmeye çalışmak, hiçbirini öğrenmemenin en hızlı yolu. Gerçekten işe yarayan bir avuç kaynak ve her birini öğrenmenin hangi aşamasında okumanın anlamlı olduğu.
2026-10-05
Yapay zeka çağında mühendis olmak: kod ucuzladı, yapı ucuzlamadı
Kod yazmak hiç bu kadar hızlı olmamıştı. Ama hızlı üretilen kod, altındaki yapı neyse onu büyütür. Neden mühendislik bugün daha az değil daha çok gerekiyor ve neyde derinleşmek gerekiyor.
2026-10-02
Bir AI uygulamasını yayına almak: maliyet tavanı, önbellek, izleme ve model değişikliği
Sıradan bir web uygulamasında her istek aşağı yukarı aynı maliyettedir. Dil modeli içeren bir uygulamada değildir. Yayına alırken maliyeti sınırlamak, önbelleği güvenle kullanmak, doğru şeyleri izlemek ve sağlayıcı bir modeli emekliye ayırdığında hazırlıklı olmak.
2026-09-30
AI engineer portföyü: işe alımda işe yarayan bir proje neye benzer?
Bir sohbet botu demosu artık kimseyi etkilemiyor. Bir AI projesini inandırıcı yapan altı işaret, her biri farklı bir beceriyi gösteren beş proje fikri ve projeyi iki dakikada okutan bir README.
2026-09-27
Prompt injection ve kötüye kullanım: bir AI uygulamasında sunucu neden tek doğruluk kaynağıdır?
Bir dil modeli içeren uygulama, sıradan bir web uygulamasının bütün güvenlik sorunlarını taşır ve yenilerini ekler. Prompt injection'ın neden tamamen önlenemediği, zararın nasıl sınırlandığı, uç noktanın korunması ve modelin çıktısına neden güvenilmediği.
2026-09-23
Bir LLM uygulaması için ilk test kümenizi kurmak: değerlendirme (eval) rehberi
Prompt'u değiştirdiniz ve cevaplar daha iyi görünüyor. Gerçekten mi? İlk test kümesini kurmak, taban çizgisi almak, ortalamanın gizlediğini görmek, bir modelin başka bir modeli puanlamasının sınırları ve yayındaki sistemi izlemek.
2026-09-19
Fine-tuning ne zaman yapılır, ne zaman zaman kaybıdır?
Bir modeli kendi verinizle eğitmek çekici bir fikir. Çoğu zaman yanlış araç. Fine-tuning'in neyi öğrettiği ve neyi öğretmediği, prompt ve RAG ile karşılaştırması, veri kalitesi, sızıntı, LoRA ve açık modellerde lisans.
2026-09-14
AI engineer kursu seçerken sorulacak 7 soru
Bir yapay zeka mühendisliği eğitimine para ve aylar vermeden önce sorulması gereken yedi soru. Her birinin kısa cevabı ve satın almadan önce müfredatta kontrol edebileceğiniz somut işaret.
2026-09-09
Görsel ve ses girdili yapay zeka: testte görünmeyen maliyetler ve hatalar
Bir fotoğrafı ya da ses kaydını modele vermek, metin göndermekle aynı şey değil. İstek boyutu, okunamayan görseller, sessizlikte uydurulan cümleler, saniyeler süren üretim ve her turda yeniden ödenen bir görsel.
2026-09-04
Agent'a ne zaman ihtiyacınız yoktur? Araç kullanan bir sistemi güvenle kurmak ve durdurmak
"Agent" bugün en çok istenen ve en kolay yanlış kurulan şey. Sabit bir iş akışıyla agent arasındaki fark, araç tanımlarının neden kritik olduğu, döngüyü durdurmanın yolları ve geri alınamayan işlemleri korumak.
2026-08-31
RAG neden yanlış cevap verir? Hataların çoğu modelde değil, getirmede
Belgelerinizle cevap veren bir sistem yanlış söylediğinde ilk şüphelenilen model olur. Çoğu zaman suçlu, modele verilen parçadır. Hatanın yerini bulmak, uydurmayı sınırlamak, kaynak göstermek ve doğru ölçmek.
2026-08-26
Yapay zeka mühendisi nasıl olunur? Model eğitmeden, ürün kurarak bir yol haritası
Arama sonuçlarındaki yol haritalarının çoğu başka bir mesleği tarif ediyor. Bugün işe alınan AI engineer'ın gerçekten ne bildiği, hangi sırayla öğrenildiği ve her aşamanın neyle "bitti" sayıldığı.
2026-08-21
Vektör veritabanına gerçekten ne zaman ihtiyacınız var? Embedding'ler üzerine pratik bir rehber
Anlamsal arama kurmaya karar verenlerin ilk adımı genellikle bir vektör veritabanı seçmek oluyor. Çoğu zaman erken bir adım. Embedding'in ne olduğu, benzerlik puanının neyi söylemediği ve veritabanına geçmenin gerçek sebepleri.
2026-08-17
Prompt'u kod gibi yönetmek: sürüm, şablon, şema ve test
Sohbet penceresinde işe yarayan prompt, bir uygulamanın içinde sessizce bozulur. Prompt'u depoda tutmak, kullanıcı girdisini talimattan ayırmak, cevabı şemayla doğrulamak ve bir değişikliği ölçerek yayına almak.
2026-08-07
AI engineer olmak için matematik gerekli mi?
İnsanları daha başlamadan durduran altı sorunun dürüst cevabı: matematik, diploma, makine öğrenmesi, Python, donanım ve para. Önce kısa cevap, sonra gerekçe.
2026-08-07
AI engineer, makine öğrenmesi mühendisi değildir
"Yapay zeka mühendisi nasıl olunur" diye arayın; ilk sayfa size lineer cebir, CNN ve eğitim döngüsü öğretir. O başka bir meslek. İşin gerçekte ne olduğu ve neyi atlayabileceğiniz.