LLM token sayacı

Metninizin bir modelin gerçek kodlamasına göre kaç token tuttuğunu tarayıcınızda tam olarak sayın. Hiçbir şey yüklenmez ve buradaki hiçbir sayı tahmin değildir.

Buraya yapıştırdığınız hiçbir şey bu tarayıcıdan çıkmaz. Seçtiğiniz kodlamanın sözlüğü bu siteden bir kez indirilir, sayma işi ise bu sekmedeki bir Web Worker içinde çalışır: kendi ağ panelinizi açıp bakın, hiçbir istek metninizi taşımaz.

Gerçekten hedeflediğiniz modeli seçin. Bir model bir kodlama kullanır, birkaç model aynı kodlamayı paylaşır ve sayım isme değil kodlamaya aittir.

Kodlamao200k_base
Metniniz

Yukarıya bir şey yapıştırın ya da yazın, tam token sayısı burada görünsün.

Bir token gerçekte nedir

Bir dil modeli metninizi harfler ya da sözcükler olarak okumaz. Başka her şeyden önce metin token’lara bölünür; bir token ise modelin tek bir sayıyla karşıladığı bir bayt dizisidir. Kimi token’lar gerçekten bütün birer sözcüktür. Birçoğu, bir sözcük ve onun önündeki boşluktur; aynı sözcüğün, önünde ne geldiğine göre farklı bir bedele mal olabilmesinin nedeni budur. Kimileri bir son ek, bir noktalama işareti, bir girinti ya da bir okurun adlandırabileceği hiçbir şeye ait olmayan bir parçadır. Bölmeyi yapan, çok büyük bir metin yığınında hangi dizilerin en sık birlikte geçtiği sayılarak kurulmuş bir tablodur ve bu tablonun hiçbir yanı kimsenin yazma biçimine uysun diye tasarlanmamıştır.

  • Bir token bir bayt dizisidir, karakter dizisi değil. Bu ayrım, Latin alfabesinin dışında yazana kadar kılı kırk yarmak gibi görünür; orada ise her şeydir.
  • Yaygın bir İngilizce sözcük genellikle tek bir token’dır. Nadir bir sözcük, bir ad, bir ürün kodu ya da bir yazım hatası birkaç tanedir, çünkü tablonun bunun bütünü için bir girdisi yoktur ve onu daha kısa parçalardan kurmak zorundadır.
  • Boşluk bedava değildir. Girinti, boş satırlar ve yapıştırılmış bir tablonun içindeki boşluklar hep bayttır ve hepsi sayılır. Derli toplu görünen bir istem, aynı istemin düz yazılmış hâlinden gözle görülür biçimde pahalıya gelebilir.
  • Sayım, baytların tam olarak ne olduğuna bağlıdır, başka hiçbir şeye değil. Ekranda birbirinin aynı görünen ama görünmez bir karakterde ayrılan iki metin — bölünmez bir boşluk, bir bayt sırası işareti, başka türden bir kesme işareti — farklı metinlerdir ve farklı sayılara varabilir.

Herkesin yinelediği kaba kuralın — karakterleri dörde bölmenin — aslında hiç kural olmamasının nedeni budur. O, tek bir dilde tek bir metin türü üzerinden alınmış bir ortalamadır ve metniniz kod, bir tablo, bir tanımlayıcı listesi ya da İngilizceden başka bir şeyle yazılmış olduğu anda paraya mal olan yönde yanılır. Bu sayfadaki sayı o ortalama değildir. Gerçek tablonun yaptığı gerçek bölmedir, hem de tarayıcınızın içinde.

Sayımı yapan kodlamadır

Tablo ile birleştirme kuralları birlikte kodlama diye anılır ve kodlamanın kendine ait bir adı vardır. Öğrenmeye değer olan o addır, çünkü sayım herhangi bir modele değil kodlamaya aittir: birkaç model tek bir kodlamayı paylaşır ve yerine daha yenisi gelen bir model çoğu zaman selefinin kodlamasını korur. Bu sayfa size bir sayı gösterdiğinde, onu hangi kodlamayla hesapladığını da seçtiğiniz modelin hemen yanında gösterir.

  • Bir model bir kodlama kullanır. Eşleme çoktan bire olduğu için, modelinizin hangi kodlamayı kullandığını bilmek, modelin kendisini bilmekten daha çok şey söyler.
  • Bir kodlamanın o200k_base gibi yayımlanmış, kendine ait bir adı vardır ve o ad, nerede karşınıza çıkarsa çıksın aynı tabloyu gösterir. Bu sayfada bir kodlamayla alınan bir sayım ile başka herhangi bir yerde aynı kodlamayla alınan bir sayım birbirini tutar; bir sayımı, yanında kodlamasıyla birlikte denetlenebilir kılan da budur.
  • Bir sayım ancak yanında kodlamasıyla anlamlıdır. Bir model adıyla ve kodlamasız aktarılan bir sayı, denetleyemeyeceğiniz bir sayıdır ve bu konudaki sayfaların çoğunun size verdiği tam olarak budur.

Pratik sonucu insanları şaşırtır: aynı kodlamayı paylaşan iki model arasında geçiş yapmak sayıyı hiç oynatmaz; bu, aracın bozuk olması değil doğru çalışmasıdır. Bir sayımın değiştiğini görmek istiyorsanız model adını değil kodlamayı değiştirmeniz gerekir.

İngilizce olmayan metin neden daha pahalıdır

İşte İngilizceden yola çıkarak yazılmış hiçbir sayfanın size söylemeyeceği bölüm; bu sayfanın var olma nedeni de budur. Kullanımdaki kodlamalar bayt düzeyinde çalışır: metninizin karakterleri üzerinde değil, UTF-8 baytları üzerinde iş görürler. Bir Latin harfi bir bayttır. Bir İbranice, Arapça, Yunanca ya da Kiril harfi iki. Bir Çince, Japonca ya da Korece karakter üç. Bir emoji dört; birleşik bir bayrak ya da bir aile ise bunlardan arka arkaya birkaç tanedir. Yani daha hiçbir tabloya bakılmadan, aynı cümle bir dilde öbüründekinin iki ya da üç katı bayt tutar.

  • Tablolar, ezici çoğunluğu İngilizce olan bir derlemde dizilerin sayılmasıyla kuruldu; böylece İngilizce sözcükler birer girdi kazandı, başka dillerinkiler çoğu zaman kazanmadı. Kendi yaygın sözcükleri için girdisi olmayan bir dil, parça parça hecelenir.
  • Bu, bayt bedelinin yerine geçmez, onun üstüne biner. Her biri iki ya da üç bayt olan üç parçadan kurulması gereken bir sözcük iki kez pahalıdır.
  • Etki, İngilizce olmayan diller arasında da eşit dağılmaz. Kendi sık dizileri tabloda bulunan bir yazı sistemi, ancak kıyısından temsil edilmiş bir sistemden çok daha iyi durumdadır; sizinkinin nerede durduğunu öğrenmenin tek yolu da kendi metninizi yapıştırıp bakmaktır.
  • İngilizce üzerinden çıkarılmış bir bütçenin taşınamamasının nedeni budur. Bir bağlam penceresinin belli bir sayıda sayfa aldığı size söylendiyse, o rakam neredeyse kesinlikle İngilizceyle ölçülmüştür ve sizin diliniz oraya varamaz.

Bunların hiçbiri, başka türlü yazarak dolanabileceğiniz bir kusur değildir ve İngilizce yazmak için bir gerekçe hiç değildir. Bu, üstlenmeden önce görebilmeniz gereken bir bedeldir; yukarıdaki sayının bütün işi de budur.

Bir karakter token’lar arasında bölünebilir

Bir token bir bayt dizisi olduğu ve Latin alfabesinin dışındaki bir karakter birkaç bayt tuttuğu için, tek bir karakter olağan biçimde ikiye bölünür: ilk baytları bir token’a, son baytları bir sonrakine düşer. Bu iki token’dan hiçbiri tek başına metin değildir. Onları metinmiş gibi basmak, token’larınızı size göstermeye söz veren başka sayfalarda görmüş olabileceğiniz o değiştirme karakteri dizisini üretir ve resmin vermesi gereken kavrayışı tam da yok eder.

Bu yüzden bu site onun yerine bir segment çizer: baytları eksiksiz metin olarak çıkan en kısa ardışık token dizisi. Bu genellikle tek bir token’dır. Bir karakterin bölündüğü yerde iki ya da daha fazladır — dört baytlık bir karakter bayt bayt kesildiyse dörde kadar — ve segment, içinde kaç token taşıdığı yanına yazılmış olarak bütün hâlde çizilir; böylece karakteri bölünmeye kaptırmak yerine bölünmeyi görürsünüz. Sayım bunların hiçbirinden etkilenmez. Bölünme, baytların nasıl kesildiğine dair bir olgudur; toplam ise toplamdır.

Kendi metninizin resmini okumak

Sayımın altında metniniz, sınırları görünecek biçimde ikinci kez çizilir. O resimdeki her blok bir segmenttir, bloklar sizin yazdığınız sırayla gider ve hiçbir şey atlanmaz ya da kısaltılmaz; yani baktığınız şey, içinden alınmış parçaların listesi değil, kendi metninizdir. Sayının yanıtlayamadığı soru işte budur: bütünün ne tuttuğu değil, hangi bölümlerinin pahalı olduğu.

  • Üstünde sayı olmayan bir blok tek bir token’dır ve olağan durum budur. İşaretsiz bırakılması bilinçlidir: her bloğun üstünde bir rakam olsaydı bu, kendi cümlelerinizin üzerinde bir rakam duvarı kurardı ve bakmaya değer blokları gömerdi. Okunan şey sınırdır; bir bloğu bitirip ötekini başlatan da gölgelendirmedir.
  • Küçük bir sayı taşıyan blok, birden çok token’dan oluşan bir segmenttir; bir karakterin bir sınırda kesildiği yer orasıdır. Karakter hâlâ oradadır, bütün hâlde çizilmiştir ve kaç token tuttuğu yanındadır — böylece bir bölünme, metninize verilmiş bir zarar olarak değil bir bedel olarak görünür. Bir emoji ya da eski bir yazı sisteminden bir karakter dörde çıkabilir.
  • Boşluklar, satır sonları ve girinti de her şey gibi çizilir, çünkü her şey gibi sayılır. Hiçbir şey yokmuş gibi görünen bir yerin üstündeki blok dizisi, uzun bir istemde düzeltilecek en ucuz yerdir ve görebilene kadar görünmezdir.
  • Model değiştirmek, kodlamayı değiştirdiği her seferinde resmi yeniden biçimlendirir; değiştirmediği her seferinde de resmi olduğu gibi bırakır. Bu, sayının gösterdiği olgunun ta kendisidir; yalnızca bir fark olduğunu değil, farkın nereye düştüğünü de görebildiğiniz bir biçimde.

Çok uzun bir metin ancak belli bir yere kadar çizilir ve çizimin durduğu yerde sayfa, kaç bloğun kaçını çizdiğini söyler. Sayım hiçbir zaman aynı biçimde sınırlanmaz: yapıştırdığınız her şeyi, uzunluğu ne olursa olsun kapsar ve resme ait hiçbir şey ona ulaşmaz. Sınır, bir tarayıcı her bloğu teker teker yerleştirdiği ve bütün bir belge hiçbir sayfanın işe yarar biçimde gösteremeyeceği kadar çok blok tutacağı için vardır — yani o noktadan sonra yitirdiğiniz şey geri kalanın resmidir, hakkındaki yanıt asla değil.

Bazı modeller burada neden hiç sayı taşımıyor

Her model tarayıcınızda sayılamaz ve bu konuda dürüst olan şey, size tahmin edilmiş bir sayı göstermek yerine hangilerinin ve neden sayılamadığını söylemektir. Bu sayfada bir modelin bulunabileceği üç durum vardır ve bunlar birbirine karıştırılmak yerine ekranda ayrı ayrı gösterilir.

  • Kodlaması yayımlanmıştır ve bu site onu sunar. Burada, gerçek tablo üzerinden hesaplanmış tam bir sayım alırsınız.
  • Kodlaması yayımlanmıştır ve bu site onu sunmaz. Satır, kodlamanın adını verir ve nedenini söyler — çoğu zaman, dosyayı yayımlayanlardan hiçbiri başkasının onu yeniden yayımlamasına izin veren bir lisans belirtmediği için. Tablo vardır; geri çeviren biziz ve satır bunu söyler.
  • Kodlaması hiçbir zaman yayımlanmadı. Sunulacak bir tablo da geri çevrilecek bir tablo da yoktur; yani hiçbir yerdeki hiçbir sayfa, ne iddia ederse etsin o modeli tarayıcınızda sayamaz. Satır bunu söyler ve hiçbir sayı, hiçbir tahmin, hiçbir aralık taşımaz.

Bu konudaki sayfaların çoğunun sessizce hile yaptığı yer o son satırdır: metninizi başka bir modelin tablosundan geçirir ve sonucu bir ölçümmüş gibi sunarlar. Bu yalnızca kesinlikten uzak değil, yanlıdır; üstelik en çok, bütçelenmesi en zor olan metinde — kodda ve İngilizce yazılmamış her şeyde — yanlıdır. Böyle bir model için tam sayım, onu yapanın kendi token sayma servisinden gelir ve o servis, tümüyle tarayıcınızda çalışan bir sayfanın tutmasına imkân olmayan, sizden asla istememesi gereken bir API anahtarı ister. O servise başvurmak dürüst yanıttır ve bu sayfanın size bir sayı yerine verdiği de odur.

Bir sayımı kendiniz maliyete çevirmek

Bu sayfa hiçbir fiyat belirtmez ve bu bilinçlidir: bir fiyat, bu konudaki her şeyden daha hızlı eskir ve eskimiş bir fiyat bir sayfayı eksik değil yanlış bırakır. Eskimeyen şey aritmetiktir; işte burada, ve onu sağlayıcının kendi sayfasının bugün söylediğine uygulayabilirsiniz.

  • Sağlayıcılar milyon token başına bir fiyat verir. Bu sayfadaki sayımı alın, bir milyona bölün ve o fiyatla çarpın. Metni bir kez göndermenin maliyeti budur.
  • Girdi ile çıktı ayrı ayrı fiyatlanır ve ikisinden pahalı olanı genellikle çıktıdır. Bu sayfa gönderdiğinizi sayar. Henüz var olmayan bir yanıtı sayamaz, bu yüzden buradan çıkardığınız her maliyet bir alt sınırdır, hiçbir zaman bir toplam değil.
  • Bir konuşma kendi geçmişini yeniden gönderir. Metniniz her turda birlikte giden bir sistem mesajıysa, kısaltmanın bir öğleden sonraya değip değmeyeceğine karar vermeden önce beklediğiniz tur sayısıyla, sonra da kullanıcı sayısıyla çarpın.

Aynı sayım, insanların buraya getirdiği öteki soruyu da yanıtlar: bir metin sığacak mı. Bunu da bu sayfa söylemeyecek, çünkü bir bağlam penceresi oynayan bir rakamdır ve sığmaya dair bir söz, modelin kendisi olmayan hiçbir aracın tutabileceği bir söz değildir. Size verdiği şey, sağlayıcı hangi rakamı yayımlıyorsa onunla karşılaştıracağınız sayıdır.

Yapıştırdığınız hiçbir şey tarayıcınızdan çıkmaz

Sayım, zaten yüklemiş olduğunuz sayfanın içinde olur. Seçtiğiniz kodlamanın tablosu bu siteden bir kez indirilir — bu, metninizin karşıya yüklenmesi değil bir dosyanın indirilmesidir — ve ondan sonrası, uzun bir belge sekmeyi dondurmasın diye ayrı bir iş parçacığında, kendi makinenizde çalışır. Tarayıcınızın ağ panelini açın ve yazarken izleyin: yazdığınızı taşıyan hiçbir istek dışarı çıkmaz.

Gerçekten saydırmak istediğiniz şeyi — bir müşterinin istemini, kuruma özel bir sistem mesajını, özel bir belgeden bir parçayı — nasılsa başka bir sayıya varacak temizlenmiş bir sürüm yerine olduğu gibi yapıştırmayı güvenli kılan da budur. Hiçbir şey saklanmaz da: sayfayı yeniden yükleyin, alan boştur; ne bir geçmiş vardır ne de sonradan silinecek bir şey.

Sıkça sorulan sorular

Bir token bir sözcükle aynı şey mi?
Hayır, ve öyleymiş gibi düşünmek bir bütçeyi yanlış çıkarmanın en yaygın yoludur. Sık geçen bir İngilizce sözcük çoğu zaman tek bir token’dır, ama nadir bir sözcük, bir ad ya da bir yazım hatası birkaç tanedir; bir sözcük genellikle önündeki boşluğu da aynı token’ın içinde taşır; noktalama ile girinti de her şey gibi sayılır. İngilizcenin dışında uyuşmazlık çok daha büyüktür, çünkü bir token bir bayt dizisidir ve tek bir karakter, daha hiçbir tabloya bakılmadan çoğu zaman iki, üç ya da dört bayttır.
Karakter sayısını dörde bölsem yeter mi?
Ancak İngilizce düzyazı yazıyorsanız ve geniş bir payla yanılmak sizi rahatsız etmiyorsa. O rakam, tek bir dilde tek bir metin türü üzerinden alınmış bir ortalamadır. Kaynak kod, tablolar, tanımlayıcı listeleri ve başka bir yazı sistemiyle yazılmış her şey onu bozar; üstelik daha az değil daha çok tutan yönde bozar. Bu sayfadaki sayı, gerçek tablonun yaptığı gerçek bölmedir; ölçebiliyorken tahmin etmek için bir neden yoktur.
Model değiştirdiğimde sayım neden değişmiyor?
Çünkü o iki model aynı kodlamayı kullanıyor ve sayımı yapan kodlamadır. Bu bir arıza değil olağan durumdur: daha yeni bir model çoğu zaman selefinin tablosunu devralır ve bir üreticinin birkaç modeli tek bir tabloyu paylaşır. Kodlamanın sayımın yanında gösterilmesinin nedeni tam olarak budur — model değiştirdiğinizde ad değişmiyorsa sayı da değişmeyecektir.
Dilim İngilizceden neden çok daha fazla token tutuyor?
Üst üste binen iki neden. Kodlamalar UTF-8 baytları üzerinde çalışır ve Latin alfabesinin dışındaki bir harf, bir Latin harfinin bir bayt tuttuğu yerde iki, üç ya da dört bayt tutar. Bir de tablolar, ezici çoğunluğu İngilizce olan bir derlemde diziler sayılarak kuruldu; böylece İngilizce sözcüklerin kendi girdileri varken başka dillerinkiler çoğu zaman parçalardan kurulur. Her biri üç bayt olan üç parçadan yapılmış bir sözcük iki kez pahalıdır. Kendi metninizi yukarıya yapıştırın, dilinizin gerçekte nerede durduğunu göreceksiniz.
Listedeki modellerden biri için neden hiç sayı yok?
Çünkü kodlaması hiçbir zaman yayımlanmadı; yani bu sayfanın — ya da tarayıcınızda çalışan başka herhangi bir sayfanın — üzerinden sayım yapabileceği bir tablo yok. Böyle bir model için size bir sayı gösteren bir sayfa, metninizi başka bir modelin tablosundan geçiriyor ve bir tahmini ölçüm diye sunuyordur. O tahmin eksik sayar ve en çok kodda ve İngilizce olmayan metinde eksik sayar; tam da doğru olmasına ihtiyaç duyduğunuz yerde.
Peki o modelin tam sayımı nereden geliyor?
Modeli yapanın kendi token sayma servisinden. Tam olabilecek tek kaynak odur, çünkü tabloya yalnızca üretici sahiptir. Bir API anahtarı ister; tümüyle tarayıcınızda çalışan bir sayfanın böyle bir anahtarı tutmasına imkân yoktur ve sayfa bunu sizden asla istememelidir — dolayısıyla bu sayfanın yapabileceği dürüst şey, bir sayı uydurmak yerine nereye gideceğinizi söylemektir. O modeli zaten kendi kodunuzdan çağırıyorsanız, orada kullandığınız anahtar buna da yanıt verir.
Boşluklar, satır sonları ve girinti sayılıyor mu?
Evet, hepsi, ve insanların beklediğinden fazlasını tutabilirler. Girintili kod, paragraflar arasındaki boş satırlar ve yapıştırılmış bir tablonun hücrelerindeki hizalama boşlukları hep bayttır; kodlamaların birden çok boşluk için tek seferde token’ları da vardır, yani bedel boşluk başına bir token değildir — ama bir hiç de değildir. Uzun bir sistem mesajını kısaltıyorsanız, cümle kesmeye başlamadan önce yeniden biçimlendirmenin ne getirdiğini ölçmeye değer.
Metnim bir sunucuya gönderiliyor mu?
Hayır. Seçtiğiniz kodlamanın tablosu bu siteden bir kez indirilir ve ondan sonra her sayım, ayrı bir iş parçacığında, kendi tarayıcınızda hesaplanır. Ağ panelinizi açın ve yazarken izleyin: hiçbir istek yazdığınızı taşımaz. Hiçbir şey saklanmaz da; yani sayfayı yeniden yüklediğinizde alan boş kalır ve silinecek bir şey olmaz.
Bu bana istemimin ne tuttuğunu ya da sığıp sığmayacağını söyler mi?
İkisini de söylemez ve iki geri çevirme de bilinçlidir. Bir fiyat aylar içinde eskirdi ve buradaki hiçbir şey bunu fark edemezdi; bu yüzden kılavuz onun yerine aritmetiği anlatıyor ve birim fiyatı sağlayıcının kendi sayfasına bırakıyor. Bir bağlam penceresi de aynı türden oynayan bir rakamdır; üstelik bir metnin sığıp sığmadığı yanıta da bağlıdır, bu sayfa ise yanıtı göremez. Elinize geçen şey, her iki sorunun da yola çıktığı tek sayıdır, üstelik tam olarak hesaplanmış.

İlgili araçlar