Tiktokenについて
OpenAIのAPIにリクエストする時に、トークン制限の最大を突破していないかとか調べるために使うtiktokenというライブラリがある。
tiktokenのいろんな言語向けの派生があるようだが、基本的には
- モデル名を指定してエンコーディングを取得
- そのエンコーディングでプロンプトの長さを取得
のような流れになる。
Tiktoke系ライブラリのGPT-4.1対応
が、2025/4にリリースされたGPT-4.1系がまだサポートされていないことが多そうだった。
OpenAIが出しているtiktokenではIssueとPull RequestがまだOpenのまま
ここに各モデルごとのエンコーディングが載っていると思われるが、GPT-4.1系はなさそう
なので、使うモデルをGPT-4oからGPT-4.1に変えた場合に、素直にトークン計算に使うモデル名もGPT-4.1にすると、エラーになる可能性がある。
各言語ごとのtiktoken系のライブラリで対応状況は異なっていそう。
例えばRuby版のtiktokenであるtiktoken_ruby
では、
を見るにGPT-4.1系対応がコード上はされていそう。
だが、このプルリクがマージされたのが2025/6/10で、
tiktoken_rubyの最新バージョン0.0.11.1は2025/1/8なので、まだGPT-4.1対応がされたtiktoken_rubyはリリースされていなさそう。
実は、GPT-4.1系とGPT-4o系はエンコーディングが同じ。つまり、トークン数計算時はどちらのモデル名を指定しても同じ
OpenAI Developer Communityで、OpenAI Staffが
GPT-4.1はGPT-4oと同じトークナイザー、同じエンコーディングだ、と言っている。
エンコーディングの種類は実はいまのところ4種類程度のようで、
最近のモデルは基本的にo200k_baseだと思われる。GPT-4o系とGPT-4.1系が同じということは、GPT-4.1系もo200k_baseだと言うこと。
ずっとOpenAI公式のテキストを貼るとトークン数出せるページ
でGPT-4o系が最新でそれ以降更新されていないのが気になっていたのだが、トークナイザー同じだからってことだったのだろう。腑に落ちた。
結論
GPT-4.1系でAPIリクエストしたいとき、トークン数計算の時だけはGPT-4o系のモデル名を指定して計算させて問題ないということ!