Bir dil modeline “strawberry” kelimesinde kaç harf olduğunu sorun. Büyük ihtimalle yanlış yapacaktır. On diyebilir. On bir tahmin edebilir. Kendinden tamamen emin bir şekilde konuşacaktır ama yine de yanlış olacaktır. Aynı modele bir kredinin bileşik faizini hesaplamasını, iki büyük sayıyı toplamasını veya iki tarih arasındaki iş günlerini saymasını söylerseniz, genellikle rakamların biraz, tehlikeli derecede hatalı olduğu, makul görünen bir cevap alırsınız.
Bu durum, büyük dil modellerinin sayılar hakkında insanlar gibi akıl yürütmemesinden kaynaklanır. Onlar token tahmin ederler. Bir token bütün bir kelime, bir kelimenin parçası veya tek bir rakam olabilir. Model “strawberry” kelimesini gördüğünde, yan yana dizilmiş sekiz ayrı harf görmez. Birkaç parça (chunk) görür. Karakterleri sayması değil, sadece bir sonraki metin parçasının ne olacağını tahmin etmesi öğretilmiştir. Aynı sınırlama aritmetik için de geçerlidir. Modelin dahili bir hesap makinesi yoktur. Elde mantığından yoksundur. Basamak değerine dair gerçek bir anlayışı yoktur. 148 ile 279'u çarptığında çarpma işlemi yapmaz. Eğitim sırasında gördüğü benzer ifadelerle örüntü eşleştirmesi yapar ve hangi rakam dizisinin gelmesi gerektiğini tahmin eder. Küçük toplamlar için örüntü çalışacak kadar güçlüdür. Gerçek hassasiyet gerektiren her şeyde ise tahmin en sonunda bozulur.
İki İş, Tek Bot
Standart istem (prompting) yöntemleri, tek bir sistemden aynı anda iki çok farklı şey yapmasını ister. Birincisi, problemin mantığını anlamak. İkincisi, matematiği tam olarak uygulamak. Model birinci görevde gerçekten etkileyicidir. Bir problem sorusunu okuyabilir, değişkenleri çıkarabilir, ilişkileri eşleştirebilir ve bir çözüm yolu planlayabilir. Ancak sonra kendi hesap makinesi olarak hizmet vermek zorundadır. Zincirin koptuğu yer burasıdır. Üçüncü adımdaki tek bir rakam hatası, ondan sonraki her adımı etkiler. Mantığın kendisi mükemmel olabilir, ancak model yanlış toplama yaptığı için nihai cevap çöp olur.
Program-Aided Language Models (PAL), işi bölerek bu sorunu çözer. Modele bir cevap sormak yerine, ondan bir program istersiniz.
Akışın gerçekte nasıl çalıştığı şöyledir: Problemi sunarsınız. Model mantığı çözer, değişkenleri tanımlar ve algoritmayı yapılandırır. Ardından, sonucu kendisi hesaplamak yerine, genellikle Python dilinde kısa bir betik (script) yazar. Bu betik gerçek bir kod yorumlayıcısına (code interpreter) devredilir. Yorumlayıcı mantığı çalıştırır ve kesin, deterministik sonucu döndürür. Model matematiği tarif eder. Python matematiği yapar.
Uygulamada Yürütülebilir Akıl Yürütme
PAL'ı yürütülebilir akıl yürütme olarak düşünün. Eğer bir betik bir problemi çözebiliyorsa, modelin o betiği yazmasına izin verin.
Somut bir örnek düşünelim. Yıllık %8,5 faiz oranıyla, üç ayda bir bileşik faiz uygulanmak üzere, yedi yıl boyunca tutulan 50.000 ₹ tutarındaki bir vadeli mevduatın vade sonu tutarını hesaplamanız gerekiyor. Bir dil modeline doğrudan sorarsanız, bir formül yazabilir, değerleri yerine koyabilir ve bir düşünce zinciri içinde sonucu hesaplayabilir. Ancak yakından bakarsanız, oranı yanlış bölerek üç aylık bileşik faizi yanlış yönettiğini veya ara bir adımı yuvarlayıp hatayı ileriye taşıdığını görebilirsiniz. Cevap makul görünür ama yüzlerce rupi farkla hatalıdır.
PAL ile etkileşim değişir. Modele principal = 50000, rate = 0.085, time = 7 ve n = 4 değerlerini tanımlayan, ardından amount = principal * (1 + rate/n) ** (n * time) işlemini hesaplayan bir Python kodu oluşturması talimatını verirsiniz. Model kodu üretir. Bir Python çalışma zamanı (runtime) bunu yürütür. Her seferinde, son ondalık basamağına kadar kesin rakamı alırsınız. Çarpmada tahmin yürütme, halüsinasyon ürünü bir kalan veya kendinden emin bir yuvarlama hatası yoktur.
Aynı örüntü tarih matematiği için de geçerlidir. Bir modele, hafta sonları hariç tutulduğunda bugünden tam 120 iş günü sonra hangi tarihin geldiğini sorun. Sadece metin tabanlı bir model ileriye doğru sayarken bir Cumartesi gününe takılabilir. PAL yaklaşımı, modelin datetime ve calendar mantığını kullanan bir betik yazmasını sağlar ve ardından yorumlayıcının tam olarak yinelemesine izin verir. Veri manipülasyonu da aynı şekilde çalışır. Karışık bir CSV dosyasını ayrıştırmanız, iç içe geçmiş bir JSON dosyasını filtrelemeniz veya hızlı bir istatistiksel dönüşüm yapmanız gerekiyorsa, model mantığı taslak haline getirmeli, yorumlayıcı ise yineleme işlemini yapmalıdır.
Bu Neden Gerçekten Önemli
Düz metin cevaplarından yürütülebilir koda geçiş, üç pratik avantaj sağlar.
Determinizm. Aynı soru iki kez sorulan bir dil modeli, kelimelerini değiştirebilir veya bir rakamı farklı yazabilir. Bir yorumlayıcı, aynı girdi için her seferinde aynı çıktıyı verir. Bu kararlılık; muhasebe, lojistik, planlama ve tutarlılığın bir seçenek olmadığı her türlü mühendislik hesaplamasında büyük önem taşır.
Doğrulanabilirlik. Bir model size üç paragraflık bir akıl yürütme sunduğunda, tek bir yanlış sayıyı bulmak için her cümleyi okumanız gerekir. Size on satırlık bir betik sunduğunda ise kodu inceleyebilirsiniz. Yorumlayıcı daha çalışmadan bile bileşik faiz formülünün doğru olduğunu doğrulayabilirsiniz. Değişken isimlerini inceleyebilir, off-by-one hatalarını tespit edebilir ve hatta çözüm için versiyon kontrolü yapabilirsiniz. Gizli hataların oluşabileceği alan dramatik bir şekilde daralır.
Güvenilirlik. Model kendi görev alanında kalır. Yapılması için tasarlandığı şeyi yapar: yapı, semantik ve problem ayrıştırma üzerine akıl yürütür. Makine ise yapılması için tasarlandığı şeyi yapar: doğru şekilde hesaplama yapar. Bu sorumlulukların ayrılması (separation of concerns), güvenilir yazılımların tam olarak nasıl mimari hale getirildiğinin bir göstergesidir. Kompozisyon, monolitik tasarımdan üstündür.
Güvenilmeyen Kod Gibi Çalıştırın
Bir uyarıda bulunmak gerekir. Üretilen kod, güvenilmeyen bir girdi olarak ele alınmalıdır. Model; sonsuz döngü içeren, gereksiz bir ağ isteği yapan veya istemediğiniz bir dosya sistemi işlemi gerçekleştiren bir betik yazabilir. Bu programları her zaman izole bir sandbox içinde çalıştırın. Kısıtlı yetkilere sahip konteynerler, ağ erişimi olmayan sunucusuz (serverless) fonksiyonlar veya sınırlı CPU süresi ve kalıcı depolama alanı olmayan sıkı kontrol edilen ortamlar kullanın. Güvenlik burada bir dipnot değildir; sistem tasarımının bir parçasıdır.
PAL'ın Parladığı ve Sınırlarının Bittiği Yerler
PAL; matematik, tarihler ve yapılandırılmış veri manipülasyonu için harika çalışır. Sadece metne dayalı akıl yürütmeyi sekteye uğratan mekanik hataları ortadan kaldırır.
Ancak, hatalı mantığı düzeltmez. Eğer model yanlış formülü seçerse,
