生成 AI のトークン数
よく、生成 AI の記事や新モデル発表のニュースなどで、料金体系が 3 ドル/100 万トークンのような表記がされています。
また、生成 AI のモデルによっては 1000 - 2000 トークンを目安にして、指示を渡すことで出力結果がより良くなり、逆にそれ以上の過量な情報を渡すと解答の精度が低下するということが分かっています。
しかし、この 1000 トークン、2000 トークン、100 万トークンというのは、一体どういう意味なのでしょうか?
そこで今回、生成 AI のトークン数を数える方法を調べ、普段生成 AI を使っているときにどのくらいのトークン数を消費しているかを肌感覚で理解するために検証を行なってみました。
トークンとは
トークンとは、生成 AI のモデルが理解できる最小の単位のことです。
トークン化とは、文章をトークンに分解することであり、英単語は 1 トークン、日本語は 1 文字が 1 トークンに変換されることが多いとされています。(後述しますが、最新モデルではこのトークン化の効率がどんどん改善されており、多くの文字数をまとめて 1 トークンへ変換できるようになっています。)
つまり、上記のトークン化アルゴリズムだと、導入時に挙げた料金体系 3 ドル/100 万トークンとは、100 万英単語あたり 3 ドルの料金という意味です。
といっても、これだけではまだイメージが湧きにくいと思います。
そこで、トークン数を数える便利なサービスが提供されています。
トークン数を数える方法
トークン数を数える方法は、様々なサービスで提供されていますが、中でも代表的な Open AI Tokenizer という OpenAI が提供しているサービスがあります。
方法は簡単で、Open AI Tokenizer に文章を入力すると、そのトークン数が表示されます。
試しに、エンジニアによく使われるであろう、以下のような「 Ruby コード + 指示プロンプト」と言う形式の文章を入力して検証してみました。(モデルは GPT-4o & GPT-4o-mini)
# app/models/user.rb
class User < ApplicationRecord
has_many :posts, dependent: :destroy
has_many :comments, dependent: :destroy
validates :email, presence: true, uniqueness: true
validates :username, presence: true, length: { minimum: 3, maximum: 50 }
before_save :downcase_email
def full_name
"#{first_name} #{last_name}"
end
private
def downcase_email
self.email = email.downcase if email.present?
end
# 以下、100 行まで汎用的なRubyコードを記述
# ここから段階的に行数を増やしていく
end
---
あなたはRubyのエキスパートエンジニアです。
上記のコードをレビューし、改善点があれば指摘してください。
コード部分を段階的に増やして検証した結果が以下となります。
トークン数の検証結果
コード行数とトークン数の関係
コード行数 | トークン数 |
---|---|
100 行 | 757 |
150 行 | 1,851 |
200 行 | 2,300 |
ここから、だいたい汎用的なコード + 簡単な指示プロンプトで (行数 * 10) ± 300 トークンくらいになるということが分かります。
この辺り、増減率が変化するのは、コードの複雑性に伴う文字数の増加でトークン数が変動するためです。
本来は、正確なトークン数を検証するには文字数と比較していく方が適切ですが、今回は「汎用的に使うようなコード+指示プロンプト」での検証を行って普段使っている指示がどのくらいのトークン数になるかを検証したかったため、このような普段使いでより把握しやすい行数での検証を行いました。
つまり、導入で挙げた例で言うと、今回の形式だと生成 AI モデルによっては 150 行前後がもっともよい解答が出力されるということです。
なお、注意事項として、トークン化アルゴリズムは ChatGPT各種 や Claude各種 などのモデルごとに異なっており必ずしも今回の結果が全てに共通するわけではありません。(ちなみに Open AI Tokenizerでは ChatGPT の各モデルのアルゴリズムでトークン数を検証できます)
また、今回検証したのはユーザーが入力する入力トークン数です。
生成 AI の回答は出力トークン数でカウントされ、例えば API キーで利用する場合は別々の料金体系となっています。(Claude 3.7 Sonnet は出力トークンを制限することができ、解答の量とコストのトレードオフが行えるようになっています。)
まとめ
今回は、生成 AI のトークン数を数える方法を調べ、普段生成 AI を使っているときにどのくらいのトークン数を消費しているかを肌感覚で理解するために検証を行なってみました。
2025 年 3 月時点では、最新モデルではトークン化の効率がどんどん改善されており、多くの文字数をまとめて 1 トークンへ変換できるようになっています。
Claude 3.7 Sonnet では、渡すトークンが多ければ多いほど解答の精度が上昇するとも言われています。
ですが、コスト的な面から、旧モデルを利用してシステムに組み込む場合は、トークン数を意識して指示を渡すことで、よりコストパフォーマンスの高いシステムを構築することができると考えられます。
また、普段使いでもトークン数を意識することで、例えば無料プランで利用可能なモデルの回答の精度を上げることも可能だと思います。
ぜひ、普段自身が使用している言語やプロンプトでもトークン数を数えてみてください。