青いやつの進捗日記。

メモとしてべんきょうのしんちょくをかいていきます。あとで自分が検索しやすいもん

OpenAIのAPIにリクエストする時にトークン数計算に使えるtiktoken系ライブラリ、GPT-4.1系のサポートがあまりされてない印象。だがGPT-4o系をそのまま指定すればよさそう

Tiktokenについて

OpenAIのAPIにリクエストする時に、トークン制限の最大を突破していないかとか調べるために使うtiktokenというライブラリがある。

github.com

tiktokenのいろんな言語向けの派生があるようだが、基本的には

  1. モデル名を指定してエンコーディングを取得
  2. そのエンコーディングでプロンプトの長さを取得

のような流れになる。

github.com

Tiktoke系ライブラリのGPT-4.1対応

が、2025/4にリリースされたGPT-4.1系がまだサポートされていないことが多そうだった。

OpenAIが出しているtiktokenではIssueとPull RequestがまだOpenのまま

github.com

github.com

ここに各モデルごとのエンコーディングが載っていると思われるが、GPT-4.1系はなさそう

github.com

なので、使うモデルをGPT-4oからGPT-4.1に変えた場合に、素直にトークン計算に使うモデル名もGPT-4.1にすると、エラーになる可能性がある。
各言語ごとのtiktoken系のライブラリで対応状況は異なっていそう。

例えばRuby版のtiktokenであるtiktoken_ruby

github.com

では、

github.com

github.com

を見るにGPT-4.1系対応がコード上はされていそう。
だが、このプルリクがマージされたのが2025/6/10で、

rubygems.org

tiktoken_rubyの最新バージョン0.0.11.1は2025/1/8なので、まだGPT-4.1対応がされたtiktoken_rubyはリリースされていなさそう。

実は、GPT-4.1系とGPT-4o系はエンコーディングが同じ。つまり、トークン数計算時はどちらのモデル名を指定しても同じ

OpenAI Developer Communityで、OpenAI Staffが

community.openai.com

GPT-4.1はGPT-4oと同じトークナイザー、同じエンコーディングだ、と言っている。

エンコーディングの種類は実はいまのところ4種類程度のようで、

zenn.dev

最近のモデルは基本的にo200k_baseだと思われる。GPT-4o系とGPT-4.1系が同じということは、GPT-4.1系もo200k_baseだと言うこと。

ずっとOpenAI公式のテキストを貼るとトークン数出せるページ

platform.openai.com

でGPT-4o系が最新でそれ以降更新されていないのが気になっていたのだが、トークナイザー同じだからってことだったのだろう。腑に落ちた。

結論

GPT-4.1系でAPIリクエストしたいとき、トークン数計算の時だけはGPT-4o系のモデル名を指定して計算させて問題ないということ!