Tokenlar nedir?
Tokenlar, OpenAI modellerinin işlediği metnin yapı taşlarıdır. Dile ve bağlama bağlı olarak tek bir karakter kadar kısa veya tam bir kelime kadar uzun olabilirler. Boşluklar, noktalama işaretleri ve kısmi kelimelerin tümü token sayılarına katkıda bulunur. API, yanıt üretmeden önce metninizi dahili olarak bu şekilde bölümlere ayırır.
İngilizce için faydalı pratik kurallar:
1 token ≈ 4 karakter
1 token ≈ bir kelimenin ¾’ü
100 token ≈ 75 kelime
1–2 cümle ≈ 30 token
1 paragraf ≈ 100 token
~1.500 kelime ≈ 2.048 token
Tokenizasyon, modele ve kodlamaya göre değişir. Hedef modeliniz için tam sayıyı almak üzere Tokenizer aracını veya tiktoken.encoding_for_model(model) kullanın.
Örnekler
Yaklaşık token sayılarıyla birlikte bazı gerçek dünya metin örnekleri:
Wayne Gretzky’nin “Atmadığınız şutların %100’ünü kaçırırsınız” sözü = 11 token
OpenAI Tüzüğü = 476 token
ABD Bağımsızlık Bildirgesi = 1.695 token
Token sayıları nasıl hesaplanır
API’ye metin gönderdiğinizde:
Metin tokenlara bölünür.
Model bu tokenları işler.
Yanıt, bir token dizisi olarak üretilir ve ardından tekrar metne dönüştürülür.
Token kullanımı birkaç kategoride izlenir:
Girdi tokenları – isteğinizdeki tokenlar.
Çıktı tokenları – yanıtta üretilen tokenlar.
Önbelleğe alınmış tokenlar – konuşma geçmişinde yeniden kullanılan tokenlar (genellikle indirimli ücretlendirilir).
Akıl yürütme tokenları – bazı gelişmiş modellerde, nihai çıktı üretilmeden önce dahili olarak ek “düşünme adımları” dahil edilir.
Bu sayılar API yanıtınızın meta verilerinde görünür ve faturalandırma ile kullanım takibi için kullanılır.
Tokenizasyonu daha ayrıntılı keşfetmek için token sayısını hesaplamanıza ve metnin tokenlara nasıl bölündüğünü görmenize olanak tanıyan etkileşimli Tokenizer aracımızı kullanabilirsiniz.
Alternatif olarak, metni programatik olarak tokenize etmek isterseniz OpenAI modelleri için özel olarak kullanılan hızlı bir BPE tokenizer olan Tiktoken’ı kullanın.
Token Sınırları
Her model için maksimum birleşik token sınırı (girdi + çıktı) vardır. Mevcut yüksek kapasiteli modeller, bağlamda yüz binlerce tokena kadar destek sunar; ancak pratik sınırlar model sürümüne ve kullanım katmanınıza bağlı olarak değişebilir.
Sınırı aşarsanız şunları yapabilirsiniz:
Komutları kısaltın veya yeniden ifade edin.
Büyük metinleri daha küçük parçalara bölün.
Girdileri göndermeden önce özetleyin veya ön işleme tabi tutun.
Token Fiyatlandırması
API kullanımı token başına fiyatlandırılır; fiyat modele ve tokenların girdi, çıktı ya da önbelleğe alınmış olmasına göre değişir. Güncel ücretler için OpenAI’nin fiyatlandırma sayfasına bakın. Bazı akıl yürütme modelleri dahili olarak daha fazla token kullanabilir, ancak tamamlanan görev başına gereken token sayısını azaltarak verimliliği artırmayı hedefler.
Tokenları keşfetme
API, kelimeleri derlem verilerindeki bağlamlarına göre ele alır. Modeller komutu alır, girdiyi bir token listesine dönüştürür, komutu işler ve tahmin edilen tokenları yanıtta gördüğümüz kelimelere geri dönüştürür.
Bize aynı görünen iki kelime, metin içinde nasıl yapılandırıldıklarına bağlı olarak farklı tokenlara dönüştürülebilir. API’nin, metindeki bağlamına göre ‘red’ kelimesi için token değerlerini nasıl ürettiğini düşünün:
Yukarıdaki ilk örnekte ‘ red’ için kullanılan “2266” tokenı sonunda bir boşluk içerir (Not: bunlar gösterim amacıyla verilen örnek token ID’leridir).
‘ Red’ için kullanılan “2296” tokenı (başında boşluk olan ve büyük harfle başlayan), küçük harfli ‘ red’ için kullanılan “2266” tokenından farklıdır.
‘Red’ bir cümlenin başında kullanıldığında, üretilen token başında boşluk içermez. “7738” tokenı, kelimenin önceki iki örneğinden farklıdır.
Gözlemler:
Bir token ne kadar olası/sık ise, ona atanan token numarası o kadar düşüktür:
Nokta için üretilen token, 3 cümlenin tamamında aynıdır (“13”). Bunun nedeni, bağlamsal olarak noktanın derlem verilerinin genelinde oldukça benzer şekilde kullanılmasıdır.
‘red’ için üretilen token, cümledeki konumuna bağlı olarak değişir:
Cümlenin ortasında küçük harf: ‘ red’ - (token: “2266”)
Cümlenin ortasında büyük harf: ‘ Red’ - (token: “2297”)
Cümlenin başında büyük harf: ‘Red’ - (token: “7738”)
