GPT-4, ChatGPT ve AI Modelleri için Ücretsiz Token Sayacı
OpenAI'nin tiktoken kütüphanesini kullanarak doğru token sayma. GPT-4, ChatGPT ve GPT-3 modelleri için token sayma. API maliyetlerini yönetin ve AI promptlarını anında optimize edin.
Token Sayacı
Geçersiz girdi
Belgeler
Token Sayacı Nedir?
Bir token sayacı, bir yapay zekâ dil modeli okuduğunda bir metin parçasının kaç tokene ayrıldığını ölçer. Tokenlar, ham harfler yerine GPT-4 ve ChatGPT gibi modellerin işlediği küçük metin parçalarıdır: tam sözcükler, sözcüklerin bölümleri veya noktalama işaretleri. Bu araç, OpenAI tarafından yayımlanan açık kaynaklı tiktoken tokenizer kütüphanesini kullanır; bu nedenle sayılar, OpenAI'nin kendi modellerinin ve API'sinin üreteceği sonuçlarla eşleşir.
Tokenleştirme Nasıl Çalışır?
Bir tokenizer yalnızca sözcükleri saymaz. Metne, bayt çifti kodlaması (BPE) adı verilen bir algoritma uygular. Algoritma, metnin tek tek baytlarıyla başlar ve eğitim sırasında geniş bir metin külliyatından öğrenilen örüntülere dayanarak en sık görülen bitişik çiftleri tekrar tekrar birleştirir. Sonuç, on binlerce yaygın parçadan oluşan sabit bir söz varlığıdır: kısa tam sözcükler, sık kullanılan sözcük parçaları ve nadir görülen her şey için tek karakterler.
Bu nedenle bir İngilizce sözcük çoğu zaman tek tokene dönüşür; ancak daha uzun veya alışılmadık sözcükler iki ya da daha fazla parçaya ayrılabilir. Boşluklar genellikle kendi başlarına sayılmak yerine sonraki tokenın başına eklenir ve noktalama işaretleri çoğunlukla kendi tokenlarıdır.
Bu Aracın Desteklediği Kodlamalar
Tiktoken, her biri bir OpenAI model ailesiyle ilişkilendirilmiş çeşitli kodlamalar sunar. Bu araç üç kodlamayı destekler:
| Kodlama | Kullanıldığı modeller | Yaklaşık söz varlığı boyutu |
|---|---|---|
cl100k_base | GPT-3,5 ve GPT-4 ailesi modelleri, ChatGPT | yaklaşık 100.000 token |
p50k_base | Daha sonraki GPT-3 modelleri | yaklaşık 50.000 token |
r50k_base | Daha önceki GPT-3 ve GPT-2 modelleri | yaklaşık 50.000 token |
cl100k_base varsayılan olarak seçilir; çünkü günümüzde çoğu kişinin kullandığı model ailesini kapsar. Her kodlama farklı metinlerle eğitildiği ve karakterleri farklı biçimde birleştirdiği için aynı metin, her kodlamada farklı bir token sayısı üretebilir.
Token Sayısı Nasıl Hesaplanır?
BPE birleştirmeleri belirli metne ve eğitilmiş söz varlığına bağlı olduğundan, karakter sayısını veya sözcük sayısını token sayısına dönüştüren basit bir aritmetik formül yoktur. Kesin olan tek yöntem, metni tokenizer'ın kendisinden geçirmektir:
- Hedef modelle eşleşen kodlamayı seçin.
- Metni bu kodlamanın tokenizer'ına verin.
- Ortaya çıkan token kimlikleri listesini sayın. Bu listenin uzunluğu token sayısıdır.
İngilizce metin için kabaca, bir token dört karaktere veya bir sözcüğün yaklaşık dörtte üçüne karşılık gelir. Bu yalnızca bir kılavuzdur. Sayılar, kod, İngilizce dışındaki metinler ve alışılmadık yazımlar bu oranı büyük ölçüde değiştirebilir.
Çözümlü örnek
Şu cümleyi ele alalım:
"Tokenization metni parçalara ayırır."
cl100k_base kodlamasında tiktoken bunu 7 tokene ayırır:
Token, ization, splits, text, into, pieces, .
"Tokenization" sözcüğünün kendisinin "Token" ve "ization" olmak üzere iki tokene ayrıldığına, diğer tüm sözcüklerin ise bütün kaldığına dikkat edin. Son nokta da kendi tokenıdır. Bu nedenle 37 karakterli ve 5 sözcüklü bir cümle, 6 değil 7 token üretir.
Token Sayıları Neden Önemlidir?
Yapay zekâ sağlayıcıları API kullanımını token başına ücretlendirir; gönderilen metni ve yanıt olarak oluşturulan metni birlikte sayar. Bu nedenle token sayısı, istek gönderilmeden önce maliyeti öngörmeyi sağlar. Her modelin ayrıca, tek bir istek ile yanıtının birlikte içerebileceği token sayısını sınırlayan bir maksimum bağlam uzunluğu vardır. Bu sınır modele göre değişir ve sağlayıcılar yeni sürümler yayımladıkça güncellenir. Bu yüzden kullanılan model için güncel belgelerden kontrol edilmesi, belleğe dayanarak varsayılmaması gerekir.
Sık sorulan sorular
Yapay zekâ dil modellerinde token nedir? Bir token, dil modelinin tek bir birim olarak okuduğu metin parçasıdır. Kısa ve tam bir sözcük, daha uzun bir sözcüğün bölümü, noktalama işareti veya sonraki sözcüğe eklenmiş bir boşluk olabilir.
Farklı kodlamalar aynı metin için neden farklı token sayıları verir? Her kodlama kendi metin örneklemiyle eğitilmiş ve yaygın parçalardan oluşan kendi söz varlığını oluşturmuştur. Bir söz varlığında tek token olacak kadar yaygın olan bir sözcük başka bir söz varlığında bulunmayabilir; bu nedenle farklı biçimde bölünür.
Noktalama işaretleri token olarak sayılır mı? Evet. Noktalama işaretleri genellikle kendi tokenları olarak sayılır veya tokenizer'ın eğitimi sırasında bu birleşimin ne sıklıkta görüldüğüne bağlı olarak bazen yanındaki karakterle birleştirilir.
Token, sözcükle aynı şey midir? Hayır. Kısa ve yaygın sözcüklerin her biri genellikle bir tokendir. Daha uzun veya daha az yaygın sözcükler ile İngilizce dışındaki çoğu sözcük sıklıkla iki ya da daha fazla tokene ayrılır.
Bu araç ne kadar doğrudur? OpenAI'nin kendi tiktoken kütüphanesini kullanarak tokenları sayar ve OpenAI'nin dahili olarak kullandığı kodlama mantığının aynısını çalıştırır. Bu nedenle aynı metin ve kodlama için sayım, bir OpenAI API çağrısının bildireceği sonuçla eşleşir.
Bu araç OpenAI dışındaki modeller için token sayabilir mi? OpenAI modelleri için geliştirilmiş tiktoken kodlamalarını kullanır. Anthropic veya Google gibi diğer sağlayıcılar ise aynı metin için farklı sayımlar üretebilen kendi tokenizer'larını kullanır.
Kaynaklar
- OpenAI. "tiktoken." GitHub, https://github.com/openai/tiktoken.
- Sennrich, Rico ve diğerleri. "Neural Machine Translation of Rare Words with Subword Units." arXiv:1508,07909, 2016, http://arxiv.org/abs/1508.07909.
- Brown, Tom B. ve diğerleri. "Language Models are Few-Shot Learners." arXiv:2005,14165, 2020, http://arxiv.org/abs/2005.14165.