如何用 Python 計算 Token 數?
安裝 OpenAI 官方的 tiktoken 套件,用 tiktoken.get_encoding() 或 tiktoken.encoding_for_model() 取得編碼器,再用 encode() 把文字轉成 Token 清單,len() 算出的長度就是 Token 數。
需要準備什麼?
- Python 3 環境
- pip
- tiktoken 套件
步驟
安裝 tiktoken
用 pip 安裝官方套件。
pip install tiktoken取得編碼器
可直接指定編碼名稱,例如 o200k_base;或依模型名稱自動取得對應編碼,gpt-4o 對應 o200k_base。
import tiktoken enc = tiktoken.get_encoding("o200k_base") # 或依模型名稱取得 enc = tiktoken.encoding_for_model("gpt-4o")編碼並計算數量
encode() 回傳 Token ID 清單,取長度即為 Token 數。
tokens = enc.encode("用白話解釋 AI 名詞") print(len(tokens))包成可重複使用的函式
參考 OpenAI Cookbook 的寫法,傳入文字與編碼名稱即可取得 Token 數。
def num_tokens_from_string(string: str, encoding_name: str) -> int: encoding = tiktoken.get_encoding(encoding_name) return len(encoding.encode(string)) print(num_tokens_from_string("hello world", "o200k_base"))確認可正確還原
encode 與 decode 可互相還原,可用來檢查結果。
assert enc.decode(enc.encode("hello world")) == "hello world"
常見錯誤
- encoding_for_model() 傳入無法對應的模型名稱會拋出錯誤,此時請改用 get_encoding() 明確指定編碼
- 用錯編碼:gpt-4 使用 cl100k_base,gpt-4o 使用 o200k_base,數量會不同
- 以為單純算文字就等於實際計費;聊天訊息格式與函式定義會額外消耗 Token,官方建議把估算視為近似值
- 用 tiktoken 計算其他廠商模型(如 Claude、Gemini)的 Token;各家分詞方式不同,結果只能粗估
常見問題
中文字一個字等於一個 Token 嗎?
不一定。Token 是分詞器切出的單位,一個中文字可能是一個或多個 Token,常用詞也可能合併,實際數量要用對應模型的編碼器計算。
tiktoken 能計算 Claude 模型的 Token 數嗎?
不能準確計算。tiktoken 是為 OpenAI 模型設計的分詞器,其他廠商模型使用不同分詞方式,應使用該廠商提供的 Token 計算工具或 API。
相關名詞
參考來源
查核日期:2026-09-26。API:/api/howto?id=count-tokens-tiktoken