Yapay Zeka Kodlama Kurulumunuz Karmaşık Bir Araçtır. Kod Tabanınız ise Komplekstir.
Yeni yapay zeka kodlama araçları, ajanları daha güvenilir hale getirmeyi vaat ediyor. Yetenekler, süper güçler ve spesifikasyon odaklı (spec-driven) geliştirme için çerçeveler görüyorsunuz. Bu araçlar işe yarıyor. Ajanların tahmin yürütmek yerine bir süreci takip etmelerine yardımcı oluyorlar.
Ancak bir tuzak var. İnsanlar tek bir görev için daha iyi bir kurulumun tutarlı bir sistem oluşturacağını düşünüyor. Oluşturmuyor.
Nedenini anlamak için Cynefin çerçevesini kullanın. Sorunları iki türe ayırır: Karmaşık (Complicated) ve Kompleks (Complex).
Karmaşık (Complicated) Problemler
Bunların bilinebilir bir cevabı vardır. Cevabı bulmak için analiz ve beceri kullanırsınız. Örnekler arasında bir modülü refaktör etmek veya bir doğrulama fonksiyonu yazmak yer alır. Cevabı bir kez bulduğunuzda, onu tekrarlayabilirsiniz. Çoğu yapay zeka kodlama aracı burada yer alır. İş birimine odaklanırlar. Görevleri tekrarlanabilir ve doğrulanabilir kılarlar.
Kompleks (Complex) Problemler
Bunların öngörülebilir bir cevabı yoktur. Sistem, parçalardan oluşan bir ağdır. Sonuçlar ancak siz harekete geçtikten sonra ortaya çıkar. Birleştirilen (merged) kırk değişiklik altı ay içinde mimariyi bozar mı? Ajan A, Ajan B ile çelişir mi? Bu cevapları tek bir dosyaya bakarak bulamazsınız. Bu cevaplar, parçaların nasıl etkileşime girdiğinden doğar.
Uyumsuzluk, Karmaşık (Complicated) araçların Kompleks (Complex) problemleri çözeceğini beklediğinizde ortaya çıkar.
Bir araç, bir ajanın mükemmel bir fonksiyon yazmasını sağlayabilir. Ancak bir görev userId kullanırken diğeri user_id kullanıyorsa sistem çöker. Her iki görev de tek başlarına "doğruydu". Hata, beliren (emergent) bir durumdur. Birimde değil, etkileşimde yaşar.
Devasa bağlam pencereleri (context windows) bile bunu çözemez. Daha büyük bir pencere daha fazlasını görmenize yardımcı olur, ancak görmek, çıkarım yapmakla aynı şey değildir. Tüm bir kod tabanını okuyabilir ve yine de üretim yükü (production load) altında kilitlenip kilitlenmeyeceğini (deadlock) bilemeyebilirsiniz. Bu, bir çalışma zamanı (runtime) özelliğidir.
Nasıl başa çıkılır:
- Karmaşık (Complicated) katman için: Yetenekler, spesifikasyonlar ve TDD kullanın. Bunlar ajanın bireysel çıktısını titiz hale getirir.
- Kompleks (Complex) katman için: "araştır-algıla-yanıtla" (probe-sense-respond) yöntemini kullanın. Neyin bozulacağını öngöremezsiniz. Birleştirmeli (merge), yayına almalı (deploy) ve gözlemlemelisiniz. Parçalar birleştiğinde neler olduğunu algılamak için entegrasyon testlerini ve gözlemlenebilirliği (observability) kullanın.
Daha iyi bir spesifikasyonun sisteminizi kararlı hale getireceği vaadine kanmayın. Spesifikasyonlar birimi güvenilir kılar. Sistemi tutarlı kılmazlar.
Yönteminizi alanla (domain) eşleştirin. Birimi mükemmelleştirmek için araçları kullanın. Sistemi anlamak için ise denemeler yapın.
İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi
