Uzun bir konuşmanın ortasında hepimizin yaşadığı bir an var. Başta koyduğunuz kuralı model unutuyor, biraz önce düzelttiğiniz şeyi tekrar yapıyor ve konuşma ilerledikçe cevaplar bulanıklaşıyor.
İnsanlar bunu genelde "model aptallaştı" diye tarif ediyor. Gerçekte olan şey başka ve adı konmuş durumda.
Modelin hafızası yok, önüne konan metin var
Bir dil modeli konuşmayı hatırlamaz. Her seferinde o ana kadar yazılmış her şeyi bir bütün olarak yeniden okur ve cevabı ona bakarak üretir.
Bu metin yığınına bağlam deniyor ve bir üst sınırı var. Bağlam penceresi dediğimiz şey de tam olarak bu sınır.
Sohbet uzadıkça bu yığın büyür. Sınıra dayanıldığında en eski kısımlar düşmeye başlar ve düşen kısım artık modelin önünde değildir. Başta verdiğiniz talimat da o düşen kısım içindeyse, model onu bilmiyor demektir.
Asıl şaşırtan kısım pencere dolmadan başlıyor
Burada iki ayrı olay birbirine karıştırılıyor. İlki az önce anlatılan taşma. İkincisi ise taşma olmadan da yaşanan kalite düşüşü.
Stanford, UC Berkeley ve Samaya AI araştırmacılarının çalışması ikincisini ölçtü. Modeller aranan bilgi bağlamın başında ya da sonunda olduğunda belirgin şekilde daha başarılı, aynı bilgi ortada durduğunda ise başarı düşüyor. Ayrıca bağlam uzadıkça genel başarı düşüyor ve bu, uzun bağlam için tasarlanmış modellerde bile geçerli (Lost in the Middle, Liu ve ark.).
On beş sayfalık bir belgeyi yapıştırıp ortasındaki bir ayrıntıyı sorduğunuzda, aynı ayrıntıyı tek başına verdiğiniz duruma göre daha kötü cevap alabilirsiniz. Bilgi orada duruyor, modelin dikkati oraya yeterince düşmüyor.
Pencereyi büyütmek neden çözüm değil
Akla ilk gelen çözüm daha büyük pencereli bir modele geçmek. Bu, sorunun yalnızca ilk yarısını çözüyor.
Taşmayı gerçekten geciktirir. Ama ortada kalan bilginin kaçırılması sorununu çözmez, hatta daha çok metin koymanızı kolaylaştırdığı için büyütür.
Maliyet tarafı da var. Bağlama koyduğunuz her şey her çağrıda yeniden okunur ve yeniden ücretlendirilir. Gereksiz yere taşıdığınız bir belge, o konuşmadaki her turda tekrar tekrar ödediğiniz bir kalem haline gelir. Gecikme de aynı yönde artar.
Asıl iş, ne taşınacağını seçmek
Son iki yılda "bağlam mühendisliği" diye bir iş tanımı doğmasının sebebi bu. Doğru cümleyi bulmaktan çok, doğru bilgiyi doğru anda modelin önüne koymakla ilgileniyor.
Ajan çalıştıran taraftan baktığımızda tablo daha da net. Bir koşuda pencereye giren metnin çoğu kullanıcının yazdığı şey değil. Araç tanımları, önceki adımların çıktıları, okunan dosyalar ve ara notlar penceredeki yerin büyük kısmını kaplıyor.
Bir alt göreve bütün geçmişi vermek yerine yalnızca o işe yetecek dar bir brifing vermek hem ucuz hem daha isabetli sonuç veriyor. Daha çok bilgi taşımak, doğru bilgiyi taşımanın yerine geçmiyor.
Kullanıcı tarafında işe yarayan dört alışkanlık
Yeni konuya yeni sohbetle başlayın. Aynı pencerede biriken eski konu, yeni konuya yardım etmez ve dikkati dağıtır.
Kritik talimatı sona yakın tekrarlayın. Başta yazdığınız kural uzun bir konuşmada gömülüp kalıyorsa, isteğinizle birlikte tekrar hatırlatmanız işe yarar.
Belgenin tamamını değil ilgili bölümünü verin. Yetmediğini görürseniz eklersiniz, ama tersi yönde çalışmak hem pahalı hem daha az isabetli olur.
Uzayan bir işi özetleyip yeniden başlatın. Özet, o ana kadar varılan sonucu taşır ve arada biriken gürültüyü geride bırakır.
Sistem kuranlar için
Aynı ilke büyük kurulumlarda da geçerli. Pencereye giren her şeyin bir gerekçesi olmalı ve gerekçesi biten şeyler düşmeli.
Araç tanımları bunun en çok ihmal edilen kalemi. Ajanın hiç kullanmayacağı araçların tanımları da her çağrıda bağlama giriyor ve hem yer hem para harcıyor.
Uzun geçmişi olduğu gibi taşımak yerine özetleyerek taşımak da işe yarıyor. Kaybedilen ayrıntının bedeli, taşınan gürültünün bedelinden genelde daha düşük kalıyor.