Bilangin ang mga token bago magpadala ng request: tiktoken sa Python
Tantyahin ang bilang ng token ng isang prompt offline gamit ang tiktoken, suriin ito laban sa context window, presyuhan ito, at ihambing sa usage field ng API.

Sa pahinang ito
Maaari mong bilangin ang mga token ng isang prompt sa sarili mong makina bago ito ipadala: i-install ang tiktoken, i-encode ang teksto, kunin ang len() ng resulta. Ang tiktoken ay tokeniser ng OpenAI, kaya para sa mga modelong DeepSeek, GLM at MiniMax ang bilang ay tantya. Ang tunay na bilang ay bumabalik sa usage. pagkatapos ng unang tawag, at ang paghahambing ng dalawa ay tumatagal ng isa pang linya.
Bakit mag-abala? Dahil ang bayarin at ang mga error ay parehong nagsisimula sa laki ng input. I-paste ang isang mahabang kontrata sa isang script, at malalaman mo lamang na ito ay masyadong malaki kapag sumagot ang API ng 400. Magpatakbo ng batch ng limang libong email, at malalaman mo lamang ang gastos kapag mas mababa na ang balanse. Ang pagbilang muna ay ginagawang isang numerong mababasa mo nang maaga ang parehong sorpresa.
Limang linya na nagbibilang ng token#
Ang tiktoken README (sinuri noong 1 Nobyembre 2026) ay nagpapakita ng buong ideya: pumili ng encoding, i-encode ang teksto, at ang haba ng listahan ay ang bilang ng token.
pip install tiktokenimport tiktoken
enc = tiktoken.get_encoding('o200k_base')
text = 'Hello world'
tokens = enc.encode(text)
print(len(tokens)) # how many tokens the text is
Ang enc. ay nagbabalik ng orihinal na teksto, na isang madaling sanity check na tinitingnan mo ang parehong teksto na makikita ng modelo. Binanggit din ng README ang tiktoken., na pumipili ng tokeniser para sa isang partikular na modelong OpenAI. Iyon ang catch na dapat tandaan: ang mga tokeniser ay nabibilang sa mga pamilya ng modelo. Ang rule of thumb ng README ay humigit-kumulang apat na byte ng teksto bawat token, at inilalarawan lamang nito ang mga tokeniser ng OpenAI.
Kaya ano ang gagawin mo para sa isang modelong DeepSeek? Gamitin ang parehong bilang bilang gumaganang tantya, at i-calibrate ito, tulad ng ipinapakita sa ibaba.
Hulaan ang numero
Gaano karaming token ang isang 2,000-character na tekstong Ingles?
Ang iyong hula
02,000
Ipakita ang sagot
Sagot: 500
Mga 500. Sa rule of thumb ng README na apat na byte bawat token, at ang plain English na teksto ay mga isang byte bawat character, 2,000 ÷ 4 = 500. Ang ibang mga wika at emoji ay tumatagal ng mas maraming byte bawat character, kaya ang parehong 2,000 character ay karaniwang nangangahulugan ng mas maraming token sa rule na iyon.
Kasya ba ang prompt sa window?#
Bawat modelo ay may context window, at ang iyong input kasama ang sagot na pinapayagan mo ay dapat kasya dito. Ang mga window para sa mga modelong pinaglilingkuran namin: DeepSeek-V4-Flash 380K, GLM-5.3-Flash 390K, MiniMax-M2.7 180K token. Ang pinakamahabang sagot ay 32,768 token para sa DeepSeek-V4-Flash at 8,192 para sa dalawa pa (listahan ng modelo ng CheapTokens, 1 Nobyembre 2026).
Ang guard bago ang tawag ay apat na linya:
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]Sabihin nating mayroon kang 250,000-token na dokumento. Ang fits(250_ ay False, kaya iruruta mo ang job na iyon sa isang modelong may mas malaking window o hatiin ang dokumento, at hindi mangyayari ang 400. Ang fits(250_ ay True. Kung gusto mo ang buong kuwento kung ano ang hitsura ng error, request too long: 400 vs 413, context window and max_tokens ay dumadaan dito.
Magkano ito?#
Ngayon ang budget. Kumuha ng isang tipikal na item, bilangin ito, at i-multiply. Ipagpalagay na nag-classify ka ng 5,000 order email. Binibilang mo ang isang representatibong email at nakakuha ng mga 800 input token, at nililimitahan mo ang label at isang maikling dahilan sa 200 output token. Ang mga total: 5,000 × 800 = 4,000,000 input token at 5,000 × 200 = 1,000,000 output token.
Ang talahanayan sa ibaba ay nagpepresyo ng eksaktong workload na iyon sa live na presyo, na pinagsama ang input at output:
| Modelo | Input $/1M | Output $/1M | Bawat kahilingan | 5,000 mga kahilingan | OpenRouter, 5,000 mga kahilingan |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000024 | $0.12 | $0.217 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000032 | $0.16 | $0.42 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.00007 | $0.35 | $4.20 |
800 input at 200 output na token bawat kahilingan. Ang mga presyo kada 1M token ay kasalukuyan at nagbabago kasabay ng aming mga taripa; ang column ng OpenRouter ay nagpapakita ng reference na presyo para sa parehong workload.
Sa kabuuan, kapag pinagsama ang input at output, ang column ng CheapTokens ay mas mura kaysa OpenRouter para sa mga modelong ito. Palitan ang tatlong numero ng sarili mong bilang at mayroon kang budget bago ang unang request. Para sa pagkakaiba ng dalawang panig ng bill, tingnan ang input vs output tokens: what an AI API bills you for, at para sa mga tunay na sinusukat na halimbawa how many tokens an API request uses. Ang mga kasalukuyang presyo ay laging nasa pricing page.

Ihambing ang tantya sa usage#
Ang tantya ay isang hula tungkol sa tokeniser ng iba, kaya suriin ito nang isang beses laban sa answer key. Bawat tugon ay may dalang usage field, at ang usage. ay ang binilang ng API para sa iyong input. Ilagay ang dalawang numero nang magkatabi at hatiin.
Hakbang-hakbang
Patakbuhin ang paghahambing
Setup
I-install ang mga package at ilagay ang key sa isang environment variable. Huwag kailanman i-paste ito sa script.
pip install tiktoken openai
export CHEAPTOKENS_API_KEY='your-key-here'Patakbuhin ang script
I-save ito bilang compare.py. Nagbibilang ito nang lokal, ipinapadala ang request sa https:/, at ipinapakita ang parehong numero. Ang model id ay ang buong isa mula sa listahan ng modelo ng CheapTokens, dahil hindi tinatanggap ang mga pinaikling pangalan.
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}')Basahin ang agwat
Ang huling linya ay nagpapakita ng tatlong numero. Sabihin nating ipinapakita nito ang estimate 24, usage.. Pagkatapos ay i-multiply ang iyong mga tantya sa hinaharap sa ratio bago mag-budget. Ang isang tunay na prompt ay nakabalot din sa chat formatting, kaya ang tunay na bilang ay maaaring lumabas nang bahagyang mas mataas kaysa sa plain-text na tantya. Patakbuhin ito sa ilang tipikal na prompt, hindi isa, at gamitin ang average na ratio.
Mula ngayon ang routine ay: tantyahin nang lokal, i-guard ang window, ilapat ang iyong ratio sa budget, at hayaang ang usage sa bawat tugon ay panatilihing tapat ka. Kung gusto mo rin ang running total sa buong job, track AI agent token cost in Python ay nagtatayo nito sa parehong field. Bago sa koneksyon mismo? Your first API request with CheapTokens ay sumasaklaw nito, at ang docs ay may natitira.
Itugma ang mga pares
Itugma ang bawat pangalan sa sinasabi nito sa iyo
I-tap ang isang item sa kaliwa, pagkatapos ang pares nito
- len(enc.encode(text))Ang iyong lokal na tantya ng laki ng input
- usage.prompt_tokensAng laki ng input ayon sa binilang ng API
- usage.completion_tokensAng laki ng sagot, na pinresyuhan sa panig ng output
- max_tokensAng cap sa haba ng sagot na inilalaan mo sa window check
Ang pagbilang ay mura, lokal at tumatagal ng ilang segundo. Gawin ito bago ang tawag na nagkakahalaga ng pera.



