AI çıktılarının doğrulama kurallarını, hata yönetimini ve zorlayıcı kenar durumları nasıl ortaya çıkardığını; ayrıca bunları test etme, izleme ve düzeltme yollarını öğrenin.

Bir yapay zeka üretimli sistem, bir AI modelinin çıktılarının sistemin sonraki davranışını doğrudan şekillendirdiği herhangi bir üründür—kullanıcıya ne gösterileceği, neyin saklanacağı, hangi verinin başka bir araca gönderileceği veya hangi eylemlerin tetikleneceği gibi.
Bu kavram "sadece bir sohbet botu"ndan daha geniştir. Pratikte AI üretimi şu şekillerde karşınıza çıkabilir:
Eğer Koder.ai gibi bir platform kullandıysanız—bir sohbetin tüm web, backend veya mobil uygulamaları üretebildiği bir yer—"AI çıktısı kontrol akışına dönüşür" fikri oldukça somut hale gelir. Modelin çıktısı sadece öneri değil; rotaları, şemaları, API çağrılarını, dağıtımları ve kullanıcıya görünen davranışları değiştirebilir.
AI çıktısı kontrol akışının parçası olduğunda, doğrulama kuralları ve hata yönetimi kullanıcıya dönük güvenilirlik özellikleri haline gelir, sadece mühendislik detayları değildir. Eksik bir alan, hatalı biçimlenmiş bir JSON nesnesi veya kendinden emin ama yanlış bir talimat sadece "başarısız olmak"la kalmaz—kafa karışıklığı yaratan UX, yanlış kayıtlar veya riskli eylemler ortaya çıkarabilir.
Bu yüzden amaç "hiç başarısız olmamak" değildir. Olasılığa dayalı çıktılarda hatalar normaldir. Ama amaç kontrollü başarısızlıktır: sorunları erken tespit etmek, net iletişim kurmak ve güvenli şekilde toparlanmak.
Yazının geri kalanı konuyu pratik alanlara böler:
Doğrulama ve hata yollarını ürünün bir parçası olarak ele alırsanız, AI üretimli sistemler daha güvenilir olur ve zaman içinde geliştirilmesi kolaylaşır.
AI sistemleri makul cevaplar üretmede iyidir, ama “makul” kullanılabilir olduğu anlamına gelmez. Bir AI çıktısına gerçek bir iş akışı için güvendiğiniz anda—bir e-posta göndermek, bir ticket oluşturmak, bir kaydı güncellemek—gizli varsayımlar açık doğrulama kurallarına dönüşür.
Geleneksel yazılımla çıktılar genellikle deterministiktir: giriş X ise beklenen Y’dir. AI üretimli sistemlerde ise aynı istem farklı sözcüklemeler, farklı ayrıntı seviyeleri veya farklı yorumlar üretebilir. Bu değişkenlik başına bir hata değil—ancak "muhtemelen bir tarih içerir" veya "genellikle JSON döndürür" gibi gayri resmi beklentilere güvenemeyeceğiniz anlamına gelir.
Doğrulama kuralları pratikte şu soruya cevap verir: Bu çıktının güvenli ve kullanışlı olması için neler doğru olmalı?
Bir AI yanıtı geçerli görünebilir ama gerçek gereksinimlerinizi karşılamayabilir.
Örneğin model şunları üretebilir:
Pratikte iki katmanlı kontrol ortaya çıkar:
AI çıktıları genellikle insanın sezgisel olarak çözdüğü ayrıntıları bulanıklaştırır, özellikle:
Doğrulama tasarımında yardımcı bir yaklaşım her AI etkileşimi için bir “sözleşme” tanımlamaktır:
Sözleşmeler oluştuğunda doğrulama kuralları ekstra bürokrasi gibi hissettirmez—AI davranışını yeterince güvenilir kılmanın yoludur.
Girdi doğrulama, AI üretimli sistemlerin güvenilirliği için ilk savunma hattıdır. Dağınık veya beklenmedik girdiler içeri girerse, model yine de “kendinden emin” bir şey üretebilir ve bu nedenle ön kapı önemlidir.
Girdiler sadece bir istem kutusu değildir. Tipik kaynaklar şunlardır:
Bunların her biri eksik, bozuk, çok büyük veya beklediğinizden farklı olabilir.
İyi doğrulama açık, test edilebilir kurallara odaklanır:
"summary" | "email" | "analysis"), izin verilen dosya türleriBu kontroller modelin kafasının karışmasını azaltır ve ayrıştırıcılar, veritabanları, kuyruklar gibi sonraki sistemleri çökmeden korur.
Normalleştirme “neredeyse doğru” olanı tutarlı veriye dönüştürür:
Normalleştirmeyi yalnızca kural açık olduğunda yapın. Kullanıcının ne demek istediğinden emin olamıyorsanız tahmin etmeyin.
Kullanışlı bir kural: biçim için otomatik düzelt, semantik için reddet. Reddederseniz kullanıcıya neyi değiştirmesi gerektiğini ve nedenini açıkça söyleyin.
Çıktı doğrulama modelin konuştuktan sonra yapılan kontrol noktasıdır. İki soruya cevap verir: (1) çıktı doğru şekle mi sahip? ve (2) gerçekten kabul edilebilir ve kullanışlı mı? Gerçek ürünlerde genellikle her ikisine de ihtiyaç vardır.
Beklenen JSON şekli, hangi anahtarların zorunlu olduğu ve hangi tiplerin/izin verilen değerlerin olacağı gibi bir çıktı şeması tanımlayarak başlayın. Bu, "serbest metin"i uygulamanızın güvenle tüketebileceği bir şeye dönüştürür.
Pratik bir şema tipik olarak şunları belirtir:
answer, confidence, citations)status "ok" | "needs_clarification" | "refuse" olmalı)Yapısal kontroller modelin düz yazı yerine JSON döndürmesi, bir anahtarı unutması veya bir yerde sayı yerine string üretmesi gibi yaygın hataları yakalar.
Mükemmel biçimde şekillenmiş bir JSON bile yanlış olabilir. Semantik doğrulama içeriğin ürününüz ve politikalarınız için mantıklı olup olmadığını test eder.
Şemayı geçip anlamda başarısız olan örnekler:
customer_id: "CUST-91822" döndürüldü ama veritabanınızda yoktotal 98; veya indirim ara toplamdan fazlaSemantik kontroller genellikle iş kuralları gibidir: “ID’ler çözülmeli”, “tutarlar uzlaşmalı”, “tarihler gelecekte olmalı”, “iddialar sağlanan belgelerle desteklenmeli” ve “yasaklı içerik olmamalı.”
Amaç modeli cezalandırmak değil—"kendinden emin saçmalık"ı bir komut olarak kabul edip downstream sistemlerin hatalı işlememesini sağlamaktır.
AI üretimli sistemler bazen geçersiz, eksik veya sonraki adım için kullanışsız çıktılar üretecek. İyi hata yönetimi hangi problemlerin iş akışını hemen durdurması gerektiğini ve hangilerinin sürpriz yaratmadan kurtarılabileceğini belirlemektir.
Bir sert başarısızlık, devam etmenin muhtemelen yanlış sonuçlar veya güvensiz davranışa yol açacağı durumdur. Örnekler: zorunlu alanların eksik olması, JSON yanıtının ayrıştırılamaması veya çıktı politikalara aykırı olması. Bu durumlarda fail fast: dur, net bir hata göster ve tahmin etme.
Bir yumuşak başarısızlık, güvenli bir geri dönüş yolu olan kurtarılabilir bir sorundur. Örnekler: model doğru anlamı verdi ama biçim bozuk, bir bağımlılık geçici olarak kullanılamıyor veya istek zaman aşımına uğradı. Burada fail gracefully: sınırlı yeniden denemeler, daha sıkı kısıtlamalarla yeniden istem veya daha basit bir yedek yola geç.
Kullanıcıya gösterilen hatalar kısa ve uygulanabilir olmalıdır:
Stack trace’leri, dahili istemleri veya dahili ID’leri göstermeyin. Bu detaylar dahili kullanım için yararlıdır ama kullanıcılara gösterilmemelidir.
Hataları iki paralel çıktı olarak ele alın:
Bu, ürünü sakin ve anlaşılır tutarken ekibin sorunları düzeltmesine yetecek bilgiyi sağlar.
Basit bir taksonomi ekiplerin hızlı hareket etmesini sağlar:
Bir olayı doğru etiketleyebildiğinizde, doğru sahibine yönlendirebilir ve bir sonraki doğrulama kuralını iyileştirebilirsiniz.
Doğrulama sorunları yakalar; kurtarma ise kullanıcıya yardımcı veya kafa karıştırıcı bir deneyim gösterilip gösterilmemesine karar verir. Amaç “her zaman başarılı olmak” değil—"tahmin edilebilir şekilde başarısız olmak ve güvenli şekilde düşüş maliyetini azaltmak"tır.
Tekrar deneme mantığı en etkili olduğu durumlar:
Sınırlandırılmış tekrarlar, üstel backoff ve jitter kullanın. Hızlı ardışık beş deneme küçük bir olayı büyütebilir.
Yeniden denemeler, çıktı yapısal olarak geçersiz veya anlamsal olarak yanlış olduğunda zarar verir. Doğrulayıcı “zorunlu alan eksik” veya “politika ihlali” diyorsa, aynı istemle tekrar denemek genellikle başka bir geçersiz cevap üretir—ve token/latency israf eder. Bu durumlarda prompt onarımı (daha sıkı kısıtlar) veya bir yedek tercih edin.
İyi bir yedek yol kullanıcının anlayabileceği ve içsel olarak ölçebileceğiniz bir şey olmalıdır:
Hangi yolun kullanıldığı açık olsun: hangi yolun kullanıldığını kaydedin, böylece kalite ve maliyeti karşılaştırabilirsiniz.
Bazen kullanılabilir bir alt küme döndürebilirsiniz (ör. çıkarılan varlıklar ama tam özet yok). Bunu kısmi olarak işaretleyin, uyarılar ekleyin ve boşlukları sessizce tahmin ederek doldurmayın. Bu, arada bir şey verip güveni korumaya yardımcı olur.
Her çağrı için zaman aşımları ve genel bir istek süresi belirleyin. Oran sınırlaması durumunda Retry-After varsa saygı gösterin. Bir devre kesici ekleyin ki tekrar eden hatalar hızla yedeğe geçsin ve model/API üzerinde baskı artmasın. Bu, kademeli yavaşlamaları önler ve toparlanmayı tutarlı kılar.
Kenar durumlar demo sırasında görmediğiniz durumlardır: nadir girdiler, tuhaf formatlar, saldırgan istemler veya beklenenden çok daha uzun konuşmalar. AI üretimli sistemlerde kullanıcılar sistemi esnek bir asistan gibi kullanma eğiliminde olduğundan—sonra onu mutlu yolun dışına iterler—bu durumlar hızlıca ortaya çıkar.
Gerçek kullanıcılar test verisi gibi yazmaz. Ekran görüntülerinden dönüştürülmüş metin, yarım kalmış notlar veya PDF’den kopyalanmış tuhaf satır sonları yapıştırırlar. Ayrıca modelden kuralları görmezden gelmesini, gizli istemleri açmasını veya kasıtlı olarak kafa karıştırıcı formatta çıktı vermesini istemeye çalışırlar.
Uzun bağlamlar da yaygın bir kenar durumudur. Kullanıcı 30 sayfalık bir belge yükleyip yapılandırılmış bir özet isteyebilir, sonra on tane açıklayıcı soru sorabilir. Model ilk başta iyi performans gösterse bile bağlam büyüdükçe davranış değişebilir.
Birçok hata normal kullanımdan ziyade uç değerlerden gelir:
Bunlar temel kontrollerden kaçabilir çünkü insanlar için metin normal görünürken ayrıştırma, sayma veya downstream kuralları başarısız olabilir.
Prompt ve doğrulamalar sağlam olsa bile entegrasyonlar yeni kenar durumları getirebilir:
Bazı kenar durumları önceden tahmin edilemez. Bunları keşfetmenin güvenilir yolu gerçek hataları gözlemlemektir. İyi loglar ve izler şunları yakalamalı: girdi şekli (güvenli şekilde), model çıktısı (güvenli şekilde), hangi doğrulama kuralının başarısız olduğu ve hangi yedek yolun çalıştığı. Hataları örüntülere göre gruplayabildiğinizde, sürprizleri yeni açıklayıcı kurallara dönüştürebilirsiniz—tahmin etmeden.
Doğrulama yalnızca çıktıları düzenli tutmakla ilgili değildir; aynı zamanda bir AI sisteminin güvensiz bir şey yapmasını engellemenin yoludur. AI destekli uygulamalarda birçok güvenlik olayı aslında daha yüksek etkili "kötü girdi" veya "kötü çıktı" sorunlarıdır: veri sızıntılarına, yetkisiz eylemlere veya araç kötüye kullanıma yol açabilir.
Prompt enjeksiyonu, güvensiz içeriğin (kullanıcı mesajı, web sayfası, e-posta, belge) "kurallarınızı yok say" veya "gizli sistem istemini gönder" gibi talimatlar içermesidir. Bu bir doğrulama sorunudur çünkü sistem modelle karşıya çıkacak metni güvenli mi yoksa düşmanca mı olarak değerlendirmelidir.
Pratik duruş: modele gönderilen tüm metni güvensiz kabul edin. Uygulamanız niyeti (hangi eylem istendi) ve yetkiyi (istekte bulunanın bunu yapmaya yetkisi var mı) doğrulamalıdır, sadece biçimi değil.
İyi güvenlik genellikle sıradan doğrulama kurallarına benzer:
Modelin gezinti veya belge alma yeteneği varsa, nereye gidebileceğini ve neyi geri getirebileceğini doğrulayın.
Her araca en az ayrıcalık prensibini uygulayın: izinleri minimumda verin, tokenları daraltın (kısa ömürlü, sınırlı uç noktalar, sınırlı veriler). İstekte geniş erişim vermektense isteği reddedip daha dar bir eylem istemek daha güvenlidir.
Önemli etkili işlemler (ödeme, hesap değişikliği, e-posta gönderme, veri silme) için ek önlemler ekleyin:
Bu önlemler doğrulamayı bir UX detayı olmaktan çıkarıp gerçek bir güvenlik sınırına dönüştürür.
AI üretimli davranışı test ederken modeli öngörülemez bir iş ortağı gibi ele almak en iyisidir: her cümleyi birebir doğrulayamazsınız, ama sınırları, yapıyı ve kullanılabilirliği doğrulayabilirsiniz.
Farklı soruları yanıtlayan birden fazla katman kullanın:
İyi bir kural: bir hata uçtan uca testine ulaştıysa, daha küçük bir test (birim/sözleşme) ekleyin ki bir sonraki sefer daha erken yakalayın.
Gerçek kullanımı temsil eden küçük, özenle seçilmiş bir istem koleksiyonu oluşturun. Her biri için kaydedin:
Altın seti CI’de çalıştırın ve zaman içinde değişiklikleri izleyin. Bir olay olduğunda, ilgili altın testi ekleyin.
AI sistemleri dağınık uçlarda sıkça başarısız olur. Otomatik fuzzing ekleyin:
Tam metni anında kaydetmek yerine toleranslar ve değerlendirme ölçütleri kullanın:
Bu yöntem testleri stabil tutarken gerçek regresyonları yakalamaya devam eder.
Doğrulama kuralları ve hata yönetimi ancak gerçek kullanımda ne olduğunu görebildiğinizde gelişir. İzleme “her şey yolunda sanıyoruz”u somut kanıtlara dönüştürür: ne başarısız oldu, ne sıklıkta ve güvenilirlik iyileştikçe mi kötüye mi gidiyor?
Bir isteğin neden başarılı veya başarısız olduğunu açıklayan loglarla başlayın—sonra ham veriyi varsayılan olarak karartın veya saklamayın.
address.postcode) ve başarısızlık nedeni (şema uyumsuzluğu, güvensiz içerik, gerekli niyet yok)Loglar bir olayı debug etmenize yardım eder; metrikler desenleri yakalamanızı sağlar. Şunları izleyin:
AI çıktıları istem düzenlemeleri, model güncellemeleri veya yeni kullanıcı davranışları sonrası ince şekilde değişebilir. Uyarılar değişime odaklanmalı:
İyi bir pano şu soruyu yanıtlar: “Kullanıcılar için çalışıyor mu?” Basit bir güvenilirlik skoru, şema geçme oranı trendi, hata kategorilerine göre kırılım ve en yaygın hata türlerinden örnekler (gizli içerik kaldırılmış olarak) ekleyin. Mühendisler için daha derin görüşlere bağlantı verin ama üst düzey görünüm ürün ve destek ekipleri için okunabilir olsun.
Doğrulama ve hata yönetimi "bir kerelik kurup bırak" işi değildir. AI üretimli sistemlerde gerçek iş, yayına alımdan sonra başlar: her tuhaf çıktı kurallarınızın ne olması gerektiğine dair bir ipucudur.
Hataları veri olarak görün, anekdot olarak değil. En etkili döngü genellikle şunları kombine eder:
Her raporun tam girdiye, model/prompt sürümüne ve doğrulayıcı sonuçlarına bağlandığından emin olun ki daha sonra çoğaltılabilsin.
Çoğu iyileştirme birkaç tekrarlı hareketten biridir:
Bir vakayı düzelttiğinizde ayrıca sorun: “Hangi yakın vakalar hâlâ atlayabilir?” diye sorun. Kuralı tek vakayı kapatacak şekilde değil, küçük bir kümesini kapsayacak şekilde genişletin.
Promptları, doğrulayıcıları ve modelleri kod gibi versiyonlayın. Değişiklikleri canary veya A/B sürümleriyle yayınlayın, ana metrikleri (reddetme oranı, kullanıcı memnuniyeti, maliyet/gecikme) izleyin ve hızlı geri alma yolu tutun.
Bu noktada ürün araçları fayda sağlar: örneğin Koder.ai gibi platformlar uygulama yinelemeleri sırasında snapshot ve rollback desteği verir; bu da prompt/doğrulayıcı versiyonlamasıyla iyi eşleşir. Bir güncelleme şema hatalarını artırır veya bir entegrasyonu bozarsa, hızlı rollback üretim olayını hızlı bir toparlanmaya çevirir.
Bir AI üretimli sistem, modelin çıktısının sonraki adımı doğrudan etkilediği—ne gösterileceği, ne saklanacağı, başka bir araca ne gönderileceği veya hangi işlemin yürütüleceği—herhangi bir üründür.
Bu sadece sohbet botundan daha geniştir: üretilen veriler, kod, işlem adımları veya ajan/araç kararları da dahil olabilir.
Çünkü AI çıktısı kontrol akışının bir parçası olduğunda, güvenilirlik kullanıcı deneyimiyle ilgili bir konu haline gelir. Bozuk bir JSON yanıtı, eksik bir alan veya yanlış bir talimat şunlara yol açabilir:
Doğrulama ve hata yollarını baştan tasarlamak, hataların kaotik olmasını engeller.
Yapısal doğrulama, çıktının ayrıştırılabilir ve beklenen biçimde olması demektir (ör. geçerli JSON, gerekli anahtarların varlığı, doğru tipler).
İş doğrulaması ise içeriğin gerçek kurallarınıza uygun olup olmadığını belirtir (ör. ID’lerin var olması, toplamların tutması, iade metninin politika ile uyumlu olması). Genellikle her iki katmana da ihtiyaç duyarsınız.
Pratik bir sözleşme üç noktada neyin doğru olması gerektiğini tanımlar:
Sözleşme oluşturulduktan sonra doğrulayıcılar bunları otomatik olarak uygular.
Girdiyi geniş düşünün: kullanıcı metni, dosyalar, form alanları, API yükleri ve alınan/araç verileri.
Yüksek etkili kontroller: gerekli alanlar, dosya boyutu/tipi sınırları, enum kontrolleri, uzunluk sınırları, geçerli kodlama/JSON ve güvenli URL biçimleri. Bunlar modelin kafasının karışmasını azaltır ve sonraki parçaları korur.
Niyet açık ve değişiklik geri döndürülebilir olduğunda normalleştirin (ör. boşlukları kırpma, ülke kodlarında büyük/küçük harf normalleştirme).
Anlamı değiştirebilecek ya da hatayı gizleyebilecek durumlarda reddedin (ör. "03/04/2025" gibi belirsiz tarihler, beklenmeyen para birimleri, şüpheli HTML/JS). İyi bir kural: biçimi otomatik düzelt, semantiği reddet.
Önce açık bir çıktı şemasıyla başlayın:
answer, status)Sonra semantik kontroller ekleyin (ID’ler çözülebilmeli, toplamlar tutmalı, tarihler anlamlı olmalı, alıntılar iddiaları desteklemeli). Doğrulama başarısız olursa çıktıyı downstream’de kullanmaktan kaçının—daha sıkı kısıtlarla tekrar isteyin veya bir yedek yol kullanın.
Devam etmenin riskli olacağı durumlarda hızlıca başarısız olun: çıktının ayrıştırılamaması, gerekli alanların eksik olması, politika ihlalleri.
Kurtarılabilir durumlarda zarifçe başarısız olun: geçici zaman aşımı, oran sınırlaması, küçük biçim hataları. Her iki durumda da ayrı tutun:
Tekrar denemeler geçici hatalarda işe yarar (zaman aşımı, 429, kısa kesintiler). Sınırlandırılmış tekrarlar, üstel gecikme ve jitter kullanın.
Ancak tekrarlar "yanlış cevap" hatalarında zararlı olabilir (şema uyumsuzluğu, eksik alan, politika ihlali). Bu durumlarda prompt onarımı (daha sıkı talimat) veya deterministik bir yedek tercih edin.
Kenar durumlar genelde şunlardan çıkar:
Bilinmeyenleri keşfetmek için gizliliğe duyarlı loglar tutun: hangi doğrulama kuralı başarısız oldu ve hangi kurtarma yolu çalıştı bilgisi önemlidir.