Tiktoken(OpenAIトークナイザー)(ティックトークンオープンエーアイトークナイザー)
OpenAIが開発・公開したByte Pair Encodingベースのトークナイザーライブラリ。Rustで実装された高速な実行性能が特徴で、GPT-3.5/4/4o・Llama-3で採用されている。cl100k_base(100,256 vocab)とo200k_base(200,019 vocab)の2種類が主要バリアント。
Tiktoken(OpenAIトークナイザー)
TiktokenはOpenAIが2023年にオープンソース公開したBPEトークナイザーライブラリ(github.com/openai/tiktoken)。RustでBPEアルゴリズムを実装し、Pythonバインディングを通じて高速なトークン化を提供する。GPT-3.5/4/4o系モデルのトークナイザーとして使用されており、APIコスト事前計算のデファクトスタンダードツールとしても広く普及している。
主要エンコーディングバリアント
| エンコーディング | vocab size | 使用モデル | 特徴 |
|---|---|---|---|
r50k_base | 50,257 | GPT-2, GPT-3 初期 | レガシー |
p50k_base | 50,281 | Codex系 | コード向け |
cl100k_base | 100,256 | GPT-3.5, GPT-4, GPT-4o | 多言語強化 |
o200k_base | 200,019 | GPT-4o(新版), o1, o3 | 最大語彙 |
cl100k_baseはr50k_base比でCJK(中日韓)文字・多言語テキストのトークン効率が大幅に向上。日本語テキストをr50k_baseの約1/3のトークン数で表現できる。
Python APIの使い方
import tiktoken
# GPT-4用エンコーダー取得
enc = tiktoken.get_encoding("cl100k_base")
# または推奨: モデル名から自動選択
enc = tiktoken.encoding_for_model("gpt-4o")
# トークナイズ
text = "東京の自作PCショップを探しています"
tokens = enc.encode(text)
print(f"トークン数: {len(tokens)}")
print(f"デコード: {enc.decode(tokens)}") # 原文復元
# バッチ処理
batch_texts = ["text1", "text2", "text3"]
batch_tokens = enc.encode_batch(batch_texts) # 並列処理
APIコスト管理への応用
OpenAI APIはトークン単位で課金されるため、送信前のトークンカウントはコスト管理の要。tiktokenを使ってAPIコールの前にトークン数を計算し、コンテキスト長制限の確認や料金見積もりが可能。GPT-4oの料金は入力$5/1Mトークン、出力$15/1Mトークン(2025年時点)で、長い会話履歴を送る前にトークンカウントで制御するのが実務的なコスト管理方法だ。
Llama-3とのtiktoken互換
Meta LLaMA-3はtiktoken形式のトークナイザー(o200k_baseベース)を採用し、llama-2のSentencePieceから切り替えた。これによりLLaMA-3のトークン化はOpenAI系モデルと高い互換性を持ち、tiktoken経由でLLaMA-3のトークン数を正確に計算できる。
Rustによる高速実装
tiktokenのRustコアはPure Pythonの前身実装と比較して約6倍の速度向上を実現。100万トークンのエンコードが数秒で完了し、大量テキストの事前処理パイプラインでボトルネックにならない設計になっている。