Bir istek gönderiyorsunuz ve bir saniye sonra terminalde cevap yazılmaya başlıyor. Bir anda bütünüyle belirmiyor, gerçekten yazılıyor: parça parça, sanki biri onu tam şu anda klavyeden giriyormuş gibi. Bazen bundan önce ekranda bir süre Thinking asılı kalıyor; cevap belirgin şekilde daha geç geliyor, ama daha isabetli oluyor.
Bunların hepsi tek bir mekanizmanın sonucu. Büyük bir dil modelinin nasıl çalıştığına bakalım: metninizle ne yaptığına, uzunluğunu neyle ölçtüğüne, bilgisinin nereden geldiğine ve düşündüğü o saniyelerde neler olduğuna. Enter'a basmak için bu bilgilerin hiçbirine ihtiyacınız yok. Ama hepsi bir araya geldiğinde cevaptan ne beklediğinizi epey değiştiriyor.

Bu yazı bilerek basitleştirildi. Böylece hızlı okunuyor ve ekranınızda neler olduğu sorusuna cevap veriyor. Kesin bir analiz burada yok ve olamaz da - yalnızca bir transformer bloğu bile ayrı bir çalışmayı hak ediyor.
Dil modeli devamı değerlendirir
Önce konunun kendisiyle başlayalım. Büyük dil modeli, diğer adıyla LLM (large language model), penceresi ve düğmeleri olan bir program değildir, sohbet de değildir. Çağrı yapılan bir mekanizmadır: ona konuşmanın metni verilir, o da devamını döndürür. Claude Code, web sohbeti, editördeki öneriler - bunların hepsi böyle bir çağrının etrafına kurulmuş birer kabuk ve herkesin kabuğu farklı.
Modelin yapabildiği tek şey şu: metnin başına bakıp hangi devamın daha olası olduğunu değerlendirmek. Doğru cevabı bulmak değil, tam olarak olasılığı değerlendirmek; üstelik tek bir seçenek için değil, sözlüğünde bulunan her seçenek için.
Bunu kısa bir cümlede yakalamak en kolayı. Sesli tamamlayın: "Kahvemi hep..." Aklınıza ilk "şekersiz" gelir, hemen ardından "sütsüz"; "internetsiz" ise oraya hiç oturmaz, oysa dilbilgisi açısından her şey yerinde. Bunu saniyenin küçük bir kesrinde, hiç düşünmeden tarttınız. Model de aynısını yapar, sadece biçimsel olarak ve sonuna kadar: bütün sözlüğünü gezer ve her adaya bir sayı verir.
Şemada neyin olmadığına dikkat edin. Hiçbir seçenek doğru diye işaretlenmemiş: yalnızca daha olası ve daha az olası devamlar var. Bu sayılar da böyle bir kelime dizisinin metinlerde kaç kez geçtiği sayılarak bulunmuyor - bu şekilde bambaşka, çok daha basit bir teknoloji çalışıyordu ve bugünkü modellerden çok önce bırakıldı. Olasılık, eğitim sırasında modelin içine yerleşmiş örüntülere göre hesaplanıyor. Bu yüzden sizden önce kimsenin yazmadığı bir cümle için de hesaplanabiliyor.
LLM'in sohbetten ve ajandan farkı
Bu üç kelime çoğu zaman eş anlamlıymış gibi kullanılıyor, oysa sistemin farklı katmanlarını anlatıyorlar.
- LLM - dil modelinin kendisi. Bağlamı alır ve bir sonraki mesajı üretir.
- Sohbet - LLM'in etrafındaki arayüz ve program. Geçmişi saklar, isteği oluşturur, modele gönderir ve cevabı gösterir.
- Ajan - amacı, çalışma döngüsü ve araçları olan bir LLM. Uygulamadan bir dosyayı okumasını, arama yapmasını ya da bir testi çalıştırmasını isteyebilir, sonuca bakıp bir sonraki adımı seçebilir.
Kısaca: LLM bir çözüm önerir, sohbet konuşmayı düzenler, ajan ise modelin kararlarını dış dünyadaki eylemlere bağlar.
Kelimeler değil, token'lar
Yukarıdaki şemaya bir düzeltme gerekiyor: kelimeler orada yalnızca anlaşılır olsun diye bütün halde duruyor. Gerçekte model metni token'lara ayırır - kendi sözlüğündeki parçalara. Token bazen bütün bir kelime, bazen kelimenin bir parçası ya da bir noktalama işareti olur; boşluk ise genellikle bir sonraki token'ın içine geçer ve ayrı bir birim sayılmaz.
Sözlük önceden, büyük bir metin kümesi üzerinde ve adım adım oluşturulur: algoritma sık geçen karakter dizilerini arar ve onları daha büyük parçalar halinde birleştirir. Sık karşılaşılan şey kendi token'ını alır. Bu yüzden hazır sözlükte bütün kelimeler ve kelime parçaları karışık halde bulunur.
Sözlükteki her token'ın kendi numarası vardır ve metin modele sayılar halinde girer: önce satır parçalara bölünür, sonra her parça kendi numarasıyla değiştirilir. Cevap da aynı sözlükle tekrar okunabilir metne çevrilir.
Buradan akılda tutmaya değer iki şey çıkıyor. Birincisi: her model ailesinin sözlüğü kendine ait ve aynı satırı hepsi aynı şekilde bölmüyor; "bir token kabaca bir kelimenin dörtte üçü" gibi tahminler de İngilizce için kaba bir ölçüden ibaret. İkincisi: eğitim metinlerinde daha az yer alan bir dil daha küçük parçalara bölünür. İngilizce bir kelimenin tek token'a sığdığı yerde Türkçe bir kelime çoğu zaman iki üç token'a dağılır.
Bunu okumaktansa bir kez görmek daha kolay. The Tokenizer Playground sayfasını açın, oraya her zamanki isteklerinizden birkaçını yapıştırın, ardından aynı metnin İngilizcesini - satırın hangi parçalara ayrıldığı ve kaç parça çıktığı hemen görünür. Tek bir çekince var: oradaki tokenizer belirli bir modele ait, sizin çalıştığınız modelde bölme farklı olacaktır. Oraya kesin bir sayı için değil, olgunun kendisini görmek için gidin.
Bunun pratikteki sonucu beklenmedik. Model harfleri değil parçaları görür, bu yüzden harflerle ilgili sorular ona anlamla ilgili sorulardan belirgin şekilde daha zor gelir. Uzun bir kelimede kaç tane "a" harfi olduğunu saymasını isteyin, cevap pekâlâ yanlış çıkabilir. Görev zor olduğu için değil, kelime modele iki parça halinde ulaştığı ve bu parçaların içinde onun için ayrı harfler olmadığı için.
Token'lardan cevap nasıl oluşur
Şimdi mekanizmayı bütün olarak bir araya getirelim; sandığınızdan daha basit çıkacak. Model seçenekleri değerlendirir, bunlardan biri seçilir ve metnin sonuna eklenir. Ardından her şey baştan başlar - aynı metinle, yalnızca bir token daha uzun haliyle.
Hazır cevap hiçbir yerde durmuyordu ve hiçbir yerden çekilip getirilmedi - içinde kaç token varsa o kadar adımda bir araya getirildi. Bitişi de bir zamanlayıcıya bağlı değil: bir noktada en olası devam, "burada bitiyor" anlamına gelen özel bir token oluyor ve üretim duruyor.
Aynı resimden bir ayrıntı daha çıkıyor. Model yazdığını silemez: metne giren token orada kalır ve sonraki her adımın girdisine dahil olur. Kendini düzeltebilmesinin tek yolu, konuşan bir insanınkiyle aynı - bir sonraki cümle.
Birçok kişiyi şaşırtan sonuç ise şu: aynı soruyu iki kez sorduğunuzda iki farklı cevap alabilirsiniz. Her adımda seçim mutlaka en olası seçeneğe düşmez ve farklı çıkan tek bir token, arkasından gelen her şeyi de kendi yönüne çeker. Çoğu zaman yalnızca ifade değişir, ama bazen önerilen çözüm de.
Cevabın Claude Code penceresinde yavaş yavaş belirmesi bir yükleme göstergesi değil, üretim adımlarının ta kendisi: model token'ları seçtikçe gönderir, program da onları hemen ekrana basar. Uzun bir cevabın bir duraklamanın ardından bir anda değil de yavaş yavaş belirmesi bu yüzden.
Modele neden büyük deniyor
"Büyük" kelimesi, bir yerde duran bir dosyanın boyutunu anlatmıyor. Arkasında bambaşka iki ölçek var ve ikisini de gerçekçi biçimde gözünüzün önüne getirmek işe yarar.
Birincisi, modelin eğitim sırasında içinden geçtiği metnin hacmi: kitaplar, makaleler, dokümantasyon, forumlar, kod; hem de bir insanın birkaç ömürde okuyamayacağı miktarlarda. İkincisi, parametre sayısı. Parametre, modelin içindeki tek bir sayıdır, eğitim sırasında ince ayarı yapılan ayarlardan biri. Bunlardan milyarlarca var. Açık modellerde bu sayı doğrudan ada yazılır: 7B, 14B, 70B; burada B, billion, yani milyar demektir.
Kolayca yanılabileceğiniz yer tam da burası. Parametre sayısı bir kalite puanı değildir. Sonucu modelin eğitildiği veriler de belirler, yapısı da, hangi işler için özel olarak hazırlandığı da, bir yere sığsın diye nasıl küçültüldüğü de. Daha küçük bir model, belirli bir işte daha büyüğünü rahatlıkla geçebilir. Addaki büyük sayı tek başına hiçbir şey vaat etmez.
Bu ölçekte adeta kendiliğinden ortaya çıkan bir şey daha var. Başarısız bir testle ilgili bir cümleyi tutarlı biçimde sürdürmek için hangi kelimelerin genellikle yan yana geldiğini bilmek yetmez. Testlerin nasıl kurulduğunu da kavramak gerekir. Model kelimeleri tahmin etmeyi öğrendi, yol boyunca da bu kelimelerin anlattığı şeyler parametrelerine yerleşti. Her şeyden haberdarmış hissi buradan geliyor, oysa mekanizma bir adım bile değişmedi.
Modelin bilgisi nereden geliyor
Tam iki kaynak var ve bunları karıştırmak pahalıya patlar.
Birincisi parametreler. Eğitim sırasında öğrenilen örüntüler bunlara yerleşmiştir. Bu, her kaydın yanında kaynağının yazdığı bir kart dizini değil: bilgi çok sayıda sayıya yayılmış durumda ve oradan birebir bir alıntı çıkarmak mümkün değil. Bu yüzden model neredeyse doğru bir şey söyleyebilir: biçim doğru, isim tanıdık, ama belirli bir ayrıntı yanlış.
İkincisi, şu anda konuşmada duran her şey: isteğiniz, ondan önce söylenenler, açık dosyaların içeriği, çalıştırılan komutların çıktısı. Bu kaynak kesindir ama kısa ömürlüdür. Parametrelere geçmez ve bir sonraki konuşma ondan hiç haberdar olmaz.
Ayrı bir kaynak saymak isteyebileceğiniz diğer her şey - bellek dosyası, bulunan dokümantasyon, harici bir servisin cevabı - aynı yoldan gelir: önce konuşmaya girer, ancak ondan sonra cevabı etkiler. Modelin projeye ya da internete açılan kendi kapısı yok.
İlk kaynağın bir tarihi var ve bu tarihin bir adı da var: knowledge cutoff. Modelin yerleşik bilgisinin genellikle hangi ana kadar güncel olduğunu gösteren bir referans noktasıdır. Bu tarihten sonra çıkan bir kütüphane hakkında model, mevcut konuşmaya ne konduysa o kadarını bilir.
Buradaki çekince tarihin kendisinden daha önemli. Cutoff, modelin o güne kadar her şeyi, sonrasında ise hiçbir şeyi bilmediği anlamına gelmez. Dönemin içinde de boşluklar olur: bir konuda az metin vardı, bir başkasında metinler birbiriyle çelişiyordu, bir kısmı da eğitim verisine hiç girmedi. Tarih bir üst sınır koyar, altında kalan her şeyin eksiksiz olduğunu vaat etmez.
Bir de küçük ama işe yarar bir not. Cutoff'u modelin kendisine sormak pek iyi bir fikir değil: bu soruya da üreterek cevap verir, yani akla yatkın olanı seçer. Kesin tarih, ilgili sürümün dokümantasyonunda yazar ve aynı ailedeki komşu modellerde pekâlâ farklı olabilir.
Thinking ne anlama geliyor
Ekranda Thinking belirdiğinde model başka bir bilinç moduna geçmiş olmuyor. Ona yalnızca cevaba başlamadan önce düşünecek yer tanınıyor. Teknik olarak bu da tam olarak aynı üretim: model önce kendisi için bir taslak yazar - görevi çözümler, seçenekleri tartar, kendisiyle tartışır - ve ancak ondan sonra son metni verir. Ne kadar düşüneceğine bugünkü modeller büyük ölçüde kendileri karar veriyor: basit bir soruda taslak kısa olur ya da hiç olmaz, karışık bir soruda daha uzun.
Bunun neden gerektiği bir örnekte görülüyor. Ajan, başarısız olan bir testin sebebini arıyor. İlk akla yatkın açıklama harici bir servisin istemcisini işaret ediyor, ama yandaki test ve hata metni başka bir şey söylüyor: sorun verilerin ayrıştırılmasında. Yeterince yeri olan model, bir düzeltme önermeden önce bu çelişkiyi fark edip yön değiştirmeye vakit bulur. Kazanç akıl yürütmenin uzunluğunda değil, kontrolün bir sonraki adımı değiştirmesinde.
İlk açıklama zaten çoğu zaman doğru olan çıkmıyor. Akla yatkın, evet, ama mekanizmanın onu seçerken baktığı ölçüt de zaten akla yatkınlıktı.
Şimdi de ek akıl yürütmenin ne zaman karşılığını verdiğine bakalım. Zaman alıyor, bu yüzden her küçük iş için açmaya gerek yok.
| Genellikle hızlı cevap yeter | Akıl yürütmeye yer açmaya değer |
|---|---|
| ekrandaki kod parçasının ne yaptığını açıklamak | birkaç dosyanın işin içinde olduğu bir test başarısızlığının sebebini bulmak |
| bir yazım hatasını ya da biçimi düzeltmek | iki çözümü kısıtlarıyla birlikte karşılaştırmak |
| az önce verdiğiniz bir metni özetlemek | adımların birbirine bağlı olduğu bir yeniden düzenlemeyi planlamak |
Pratik ölçüt basit: görevde ne kadar çok yol ayrımı ve bağımlılık varsa, modele açılmasına izin vermek o kadar işe yarar. Bir değişkeni yeniden adlandırırken hazır sonuca bakmanız, onun hakkındaki akıl yürütmeyi okumanızdan daha çabuk olur.
Bir de dürüstçe söylenmesi gereken bir sınır var. Gösterilen akıl yürütme, içeride olup bitenin birebir kaydı değildir; çoğu zaman okuyucu için derlenmiş bir özettir. Uzun ve derli toplu bir zincir pekâlâ yanlış bir öncülden çıkmış olabilir ve bu yüzden olduğundan daha güvenilir görünebilir. Tersi de olur: cevap çoktan bulunmuştur, ama model şüphe etmeye devam eder, kendi etrafında döner ve kafasını karıştırır. Bunun bir adı bile var: overthinking.
Daha uzun düşünmesini istemek zayıf bir kaldıraç: taslağın uzunluğu tek başına hiçbir şeyi iyileştirmez. Çok daha etkili olanlar net bir amaç, açıkça söylenmiş kısıtlar ve görevin çözüldüğünü gösteren anlaşılır bir işaret. O zaman modelin kendi akıl yürütmesinde kontrol edeceği bir şey olur.
Modelin yapamadıkları
Liste kısa ve onu gerçek bir görevin ortasında öğrenmektense baştan bilmek daha iyi.
- Bir bilginin doğru olduğunu garanti etmek. Mekanizma olası devamı seçer, bir ifadeyi kaynakla karşılaştırmaz. Uydurulmuş ama inandırıcı ayrıntılara halüsinasyon denir.
- İfadeden bağımsız olmak. Yeri değişen kelimeler ve eklenen bir açıklama cevabı değiştirir, çünkü her şeyi o noktadan önce duran metin belirler.
- Yeni şeyleri kendi başına öğrenmek. Harici kaynaklar olmadan yerleşik bilgi güncellenmez: bir kütüphanenin dün çıkan sürümü hakkında model yalnızca kendisine gösterileni bilir.
- Kelimesi kelimesine tekrarlamak. Aynı istek farklı sonuçlar verebilir ve bu bir arıza değil, mekanizmanın bir özelliğidir.
- Kaynak metinlerdeki çarpıklıklardan uzak olmak. Orada tek taraflı anlatılan ya da hiç anlatılmayan şey, cevaplarda da kendini gösterir.
Modellerin etrafında ortaya çıkan hemen her şey, bu listedeki maddelerden birine verilmiş bir cevaptır. Arama ve dokümantasyonla çalışma, yerleşik bilgi eskidiği için ortaya çıktı. Araçlar ve ajanlar da, çünkü model tek başına yalnızca konuşabiliyor.
Bu, ajanın davranışında neyi açıklıyor
Bu mekanizmadan doğrudan Claude Code ekranında görülenler şunlar:
- cevap parça parça yazılıyor, çünkü zaten böyle oluşuyor. Bu bir süreç, süsleme değil;
- iki aynı istek farklı cevaplar verdi - olması gereken de bu, üretim kendini kelimesi kelimesine tekrarlamaz. Önceki sonuca ihtiyacınız varsa, yeniden sormaktansa zaten aldığınız cevaba dönmek daha güvenilir;
- Thinking bir taslağa yer açar, doğruluk garantisi vermez. Çok adımlı bir görevin çözümlenmesinde karşılığını verir, bir değişkeni yeniden adlandırırken çoğu zaman sadece ayağa dolanır;
- ajan dosyayı okuyana kadar, o dosya hakkındaki cevap genel örüntülere dayanır. Konuşmaya giren her şey, parametrelere yerleşmiş her şeyden daha ağır basar;
- kütüphanelerin yeni sürümleri hakkında model varsayılan olarak az şey bilir ve bunu düzeltmenin en kolay yolu dokümantasyonu konuşmaya koymaktır;
- cevap yanlış yöne saptıysa, isteği aynı kelimelerle tekrarlamaktansa eksik olanı eklemek daha faydalıdır. Mekanizma ısrara değil, cevaptan önce duran metne dayanır.
Mekanizmayı bilmek modeli olduğundan daha kötü yapmaz. Yalnızca ondan ne bekleneceğini açıklar: garantili bir başvuru kitabı değil, başlangıcını sizin verdiğiniz metni çok iyi sürdüren bir devam ettirici.
Video: aynı mekanizma görsellerle
3Blue1Brown kanalında temel noktaları tek bir anlaşılır animasyonda toplayan kısa bir video var: token'lar, bir sonraki kelimenin olasılıkları, attention ve modelin parametrelerinin aslında nereden geldiği. Videonun adı Large Language Models explained briefly.
Orijinali İngilizce, ama videonun çeviri içeren birkaç ses kanalı var; bunlar oynatıcının ayarlarından değiştirilir. İstediğiniz dilde ses kanalı yoksa videoyu doğrudan YouTube'da açın: web oynatıcısında seçenek daha fazla.
Kanal bu videoyla sınırlı değil. Orada sinir ağları, transformer'lar ve attention üzerine koca bir seri de var - aynı fikirler, sadece daha ayrıntılı ve matematiğiyle. Yazıdan sonra "ne oluyor" sorusunu değil de "bu neden işe yarıyor" sorusunu anlamak isterseniz, oradan başlamanız iyi olur.
GO TO FULL VERSION