Bloga dön

Maliyet optimizasyonuKılavuz

İstek göndermeden önce token sayın: Python'da tiktoken

Bir istemin token sayısını tiktoken ile çevrimdışı tahmin edin, bağlam penceresine göre kontrol edin, fiyatlandırın ve API'nin usage alanıyla karşılaştırın.

Yazan: CheapTokens TeamYayınlanma tarihi: 4 dk okuma

pip install tiktoken ve tek satırlık token sayımı gösteren terminal
Bu sayfada
  1. Token sayan beş satır
  2. İstem pencereye sığıyor mu?
  3. Maliyeti ne olacak?
  4. Tahmini kullanımla karşılaştırın

Bir istemin token sayısını gönderilmeden önce kendi makinenizde sayabilirsiniz: tiktoken kurun, metni kodlayın, sonucun len() değerini alın. tiktoken, OpenAI'nin tokenleştiricisidir, dolayısıyla DeepSeek, GLM ve MiniMax modelleri için bu sayı bir tahmindir. Gerçek değer ilk çağrıdan sonra usage.prompt_tokens içinde döner ve ikisini karşılaştırmak bir satır daha alır.

Neden uğraşasınız? Çünkü hem fatura hem de hatalar giriş boyutuyla başlar. Uzun bir sözleşmeyi bir betiğe yapıştırın, çok büyük olduğunu ancak API 400 ile yanıt verdiğinde anlarsınız. Beş bin e-postadan oluşan bir toplu iş çalıştırın, maliyetini ancak bakiye düştüğünde öğrenirsiniz. Önce saymak, her iki sürprizi de önceden okuyabileceğiniz bir sayıya dönüştürür.

Token sayan beş satır#

tiktoken README (1 Kasım 2026'da kontrol edildi) tüm fikri gösterir: bir kodlama seçin, metni kodlayın ve listenin uzunluğu token sayısıdır.

bash
pip install tiktoken
python
import tiktoken

enc = tiktoken.get_encoding('o200k_base')
text = 'Hello world'
tokens = enc.encode(text)
print(len(tokens))  # how many tokens the text is
estimate.py adlı bir dosyadaki beş satır
Sayacın tamamı: get_encoding, encode, len.

enc.decode(tokens) özgün metni geri verir; bu da modelin göreceği metnin aynısına baktığınızı doğrulamak için kullanışlı bir sağlamlık kontrolüdür. README ayrıca belirli bir OpenAI modeli için tokenleştiriciyi seçen tiktoken.encoding_for_model('gpt-4o')'den de söz eder. Hatırlanmaya değer püf noktası şudur: tokenleştiriciler model ailelerine aittir. README'nin pratik kuralı token başına yaklaşık dört bayt metindir ve yalnızca OpenAI'nin tokenleştiricilerini tanımlar.

Peki bir DeepSeek modeli için ne yaparsınız? Aynı sayımı çalışan bir tahmin olarak kullanın ve aşağıda gösterildiği gibi kalibre edin.

Sayıyı tahmin et

2.000 karakterlik bir İngilizce metin kabaca kaç tokendir?

Cevabı göster

Cevap: 500

Yaklaşık 500. README'nin token başına dört bayt pratik kuralıyla ve karakter başına yaklaşık bir bayt olan düz İngilizce metinle, 2.000 ÷ 4 = 500. Diğer diller ve emoji karakter başına daha fazla bayt alır, dolayısıyla aynı 2.000 karakter bu kurala göre genellikle daha fazla token demektir.

İstem pencereye sığıyor mu?#

Her modelin bir bağlam penceresi vardır ve girişiniz ile izin verdiğiniz yanıt buna sığmalıdır. Sunduğumuz modellerin pencereleri: DeepSeek-V4-Flash 380K, GLM-5.3-Flash 390K, MiniMax-M2.7 180K token. En uzun yanıt DeepSeek-V4-Flash için 32.768 token, diğer ikisi için 8.192 tokendir (CheapTokens model listesi, 1 Kasım 2026).

Çağrı öncesi bir koruma dört satırdır:

python
CONTEXT = {
    'deepseek-ai/DeepSeek-V4-Flash-0731': 380_000,
    'zai-org/GLM-5.3-Flash': 390_000,
    'MiniMaxAI/MiniMax-M2.7': 180_000,
}

def fits(prompt_tokens, max_tokens, model):
    return prompt_tokens + max_tokens <= CONTEXT[model]

Diyelim ki 250.000 tokenlık bir belgeniz var. fits(250_000, 8_192, 'MiniMaxAI/MiniMax-M2.7') değeri False olur, bu yüzden o işi daha büyük pencereli bir modele yönlendirir veya belgeyi bölersiniz ve 400 hiç yaşanmaz. fits(250_000, 8_192, 'deepseek-ai/DeepSeek-V4-Flash-0731') değeri True olur. Hatanın nasıl göründüğünün tam hikâyesini istiyorsanız, request too long: 400 vs 413, context window and max_tokens bunu adım adım anlatır.

Maliyeti ne olacak?#

Şimdi bütçe. Tipik bir öğe alın, sayın ve çarpın. 5.000 sipariş e-postasını sınıflandırdığınızı varsayalım. Temsili bir e-postayı sayarsınız ve yaklaşık 800 giriş tokenı elde edersiniz; etiketi ve kısa bir gerekçeyi 200 çıkış tokenıyla sınırlarsınız. Toplamlar: 5.000 × 800 = 4.000.000 giriş tokenı ve 5.000 × 200 = 1.000.000 çıkış tokenı.

Aşağıdaki tablo tam olarak bu iş yükünü canlı fiyatlarla, giriş ve çıkış birlikte sayılarak fiyatlandırır:

Model İstek başına 5.000 istek OpenRouter, 5.000 istek
GLM-5.3-Flash $0.000024 $0.12 $0.217
DeepSeek-V4-Flash $0.000032 $0.16 $0.42
MiniMax-M2.7 $0.00007 $0.35 $4.20

İstek başına 800 giriş ve 200 çıkış token'ı. 1M token başına fiyatlar günceldir ve tarifelerimizle birlikte değişir; OpenRouter sütunu aynı iş yükü için referans fiyatları gösterir.

Toplamda, giriş ve çıkış birlikte sayıldığında, bu modeller için CheapTokens sütunu OpenRouter'dan daha ucuzdur. Üç sayıyı kendi sayımlarınızla değiştirin ve ilk istekten önce bir bütçeniz olsun. Faturanın iki tarafı arasındaki fark için input vs output tokens: what an AI API bills you for ve gerçek ölçülmüş örnekler için how many tokens an API request uses sayfalarına bakın. Güncel fiyatlar her zaman fiyatlandırma sayfasında bulunur.

Metinden gerçek kullanım sayısına tahmin akışı
Çevrimdışı tahmin et, pencereyi koru, gönder, sonra kullanımla karşılaştır.

Tahmini kullanımla karşılaştırın#

Tahmin, başkasının tokenleştiricisi hakkında bir tahmindir, bu yüzden bir kez cevap anahtarıyla kontrol edin. Her yanıt bir usage alanı taşır ve usage.prompt_tokens API'nin girişiniz için saydığı değerdir. İki sayıyı yan yana koyun ve bölün.

Adım adım

Karşılaştırmayı çalıştır

Kurulum

Paketleri kurun ve anahtarı bir ortam değişkenine koyun. Asla betiğe yapıştırmayın.

bash
pip install tiktoken openai
export CHEAPTOKENS_API_KEY='your-key-here'

Betiği çalıştır

Bunu compare.py olarak kaydedin. Yerel olarak sayar, isteği https://api.cheaptokens.dev/v1 adresine gönderir ve her iki sayıyı da yazdırır. Model kimliği, CheapTokens model listesindeki tam kimliktir, çünkü kısaltılmış adlar kabul edilmez.

python
import os
import tiktoken
from openai import OpenAI

MODEL = 'deepseek-ai/DeepSeek-V4-Flash-0731'
enc = tiktoken.get_encoding('o200k_base')
messages = [{'role': 'user',
             'content': 'Classify this email as order, refund or other: Hi, my parcel from last Tuesday has not arrived yet.'}]

estimate = sum(len(enc.encode(m['content'])) for m in messages)

client = OpenAI(base_url='https://api.cheaptokens.dev/v1',
                api_key=os.environ['CHEAPTOKENS_API_KEY'])
r = client.chat.completions.create(model=MODEL, messages=messages, max_tokens=200)

real = r.usage.prompt_tokens
print(f'estimate {estimate}, usage.prompt_tokens {real}, ratio {real / estimate:.2f}')

Farkı okuyun

Son satır üç sayı yazdırır. Diyelim ki estimate 24, usage.prompt_tokens 31, ratio 1.29 gösteriyor. O zaman bütçelemeden önce gelecekteki tahminlerinizi bu oranla çarpın. Gerçek bir istem ayrıca sohbet biçimlendirmesine sarılır, bu yüzden gerçek sayım düz metin tahmininin biraz üzerinde çıkabilir. Bir değil birkaç tipik istem üzerinde çalıştırın ve ortalama oranı kullanın.

Bundan sonra rutin şudur: yerel olarak tahmin edin, pencereyi koruyun, oranınızı bütçeye uygulayın ve her yanıttaki usage değerinin sizi dürüst tutmasına izin verin. Tüm bir iş boyunca kümülatif toplamı da istiyorsanız, track AI agent token cost in Python bunu aynı alan üzerine kurar. Bağlantının kendisinde yeni misiniz? Your first API request with CheapTokens bunu kapsar ve geri kalanı dokümanlarda bulabilirsiniz.

Eşleştir

Her adı size ne söylediğiyle eşleştirin

  • len(enc.encode(text))Giriş boyutuna dair yerel tahmininiz
  • usage.prompt_tokensAPI'nin saydığı giriş boyutu
  • usage.completion_tokensYanıtın boyutu, çıkış tarafında fiyatlandırılır
  • max_tokensPencere kontrolünde ayırdığınız yanıt uzunluğu sınırı

Saymak ucuzdur, yereldir ve saniyeler alır. Bunu para harcayan çağrıdan önce yapın.