トークン
何を数えている単位なのか
AIは文章をそのまま読んでいるのではなく、トークンという単位に変換してから処理します。IPAのガイドラインは「プロンプトは LLM で処理可能にするため、トークンと呼ばれる形式に変換されます」と書いています。
大きさは、文字と単語の中間です。Anthropicの用語集は、トークンが「単語・単語の一部・文字・(Unicodeの場合は)バイトに相当しうる」と説明しています。
「1トークン=1単語」ではありません
ここが最初の誤解です。トークンは単語より細かく切られることがあります。 長い単語や珍しい単語は、複数のトークンに分解されます。
目安として、Anthropicは英語で1トークン=約4文字、または約0.75単語という数字を出しています。
ひとつ正直に書いておきます。同じAnthropicの資料の中でも、用語集には「英語で約3.5文字」、料金ページには「約4文字」と書かれています。 どちらも公式の記述です。つまりこの数字は厳密な換算率ではなく、目安として扱うべきものです。公式の資料自身が「正確な数は、言語と内容の種類によって変わる」と添えています。
日本語はどうなのか
ここは慎重に書きます。「日本語は英語の◯倍」という倍率を示した公的資料・公式ドキュメントは、調べた範囲では見つかりませんでした。
確認できたのは、査読付き論文の次の記述です。ChatGPTやGPT-4で使われるトークナイザ cl100k_base について、「一部のキリル文字を表すのに2トークン、漢字の65%以上に3トークンを要する」と述べています。
同じ論文は、言語による差について「同じ文章を異なる言語に翻訳すると、トークン化後の長さは大きく変わり、場合によっては15倍の差が生じる」とも書いています。
ただし、この数字は特定のトークナイザについてのものです。モデルが変わればトークナイザも変わるため、現行のモデル全般に当てはまる倍率として読むことはできません。
実務上の結論としては、「日本語は英語より多くのトークンを使う傾向がある」までを前提にして、正確な数は実際に使うモデルで測るのが確実です。
料金はトークンで数えられます
ここが非エンジニアにとって一番実害のある話です。AIのAPIの料金は、処理した文字数ではなくトークン数で決まります。OpenAIの料金表は「料金は100万トークンあたり」で示され、Googleは「課金が有効な場合、Gemini APIの呼び出し費用は、入力トークン数と出力トークン数によって部分的に決まる」と書いています。
入力(こちらが渡した文章)と出力(AIが書いた文章)は、別のレートで数えられます。 多くの場合、出力のほうが高く設定されています。
ここで混同しやすい点を1つ。料金は入力と出力が別建てですが、コンテキストウィンドウの上限は入力と出力の合算です。 数え方の話が2つあり、別物です。
長い文章を渡すと何が起きるか
トークン数が増えると、料金が上がり、コンテキストウィンドウの上限に近づきます。「とりあえず全部渡しておく」が無料ではない、というのがこの単位を知る実務的な意味です。
資料での説明
プロンプトは LLM で処理可能にするため、トークンと呼ばれる形式に変換されます
— IPA『テキスト生成AIの導入・運用ガイドライン』
トークンは言語モデルの最小の単位であり、単語・単語の一部・文字・(Unicodeの場合は)バイトに相当しうる
— Anthropic Glossary より和訳