Token
トークン
とおくん
Definition
A token is a small unit of text used by models for processing, and it is also used to estimate limits and billing. Understanding tokens is essential for controlling cost and context length.
ChatGPTの料金表に「100万トークンあたり◯ドル」と書かれていても、1トークンが何文字に相当するのか、直感的にはわかりにくいものです。しかもこの「トークン」の長さは言語によって大きく異なり、日本語ユーザーにとっては切実なコスト問題に直結します。トークンとは、LLMがテキストを処理する際の最小単位で、単語や文字の断片(サブワード)に分割されたものです。
BPEアルゴリズムの仕組み
多くのLLMが採用しているトークン化の手法がBPE(Byte Pair Encoding)です。その仕組みはシンプルで、まずテキストを1文字(バイト)単位に分解し、次に最も頻繁に隣り合う2文字のペアを見つけて1つのトークンに統合します。このマージ操作を数万回繰り返すことで、頻出する文字列("the"や"tion"など)は1トークンになり、珍しい文字列は細かいトークンのまま残ります。結果として、学習データに多く出現するパターンほど効率的にトークン化され、少ないトークン数で表現できるようになります。
日本語と英語のトークン格差
BPEの仕組みを理解すると、日本語がなぜ不利なのかが見えてきます。LLMの学習データは英語が圧倒的に多いため、英語の単語やフレーズは効率よくトークン化されます。英語では「artificial intelligence」が2〜3トークンですが、日本語の「人工知能」は3〜5トークンに分割されることがあります。同じ意味の文章を比較すると、日本語は英語の1.5〜2倍のトークン数を消費するのが一般的です。OpenAIのtiktokenライブラリやAnthropicのトークンカウンターを使えば、実際のトークン数を事前に確認できます。この格差は、コンテキストウィンドウの実質的な容量にも影響します。128Kトークンのモデルでも、日本語では英語の半分程度の文章量しか入力できない場合があるのです。
コストと制限への直接的な影響
トークン数はLLM利用の2つの重要な側面に直結します。ひとつは料金です。APIの課金は入力トークン数と出力トークン数それぞれに基づくため、日本語ユーザーは同じ内容の処理でも英語より割高になります。GPT-4oの場合、入力と出力で異なる単価が設定されており、出力トークンは入力の数倍の単価です。もうひとつはコンテキストウィンドウの制約で、入力が長すぎるとモデルの上限を超えてエラーになったり、古い会話履歴が切り捨てられたりします。
実務でのトークン節約術
トークン数を意識した運用はコスト管理の基本です。まずtiktokenなどのツールでAPI呼び出し前にトークン数を計測する習慣をつけましょう。プロンプトの冗長な表現を削る、不要な背景情報を省く、出力形式を「箇条書き」や「JSON」に指定して無駄な装飾文を減らすといった工夫で、コストを数割削減できます。特に日本語では、丁寧すぎる敬語表現や繰り返しの接続詞を省くだけでもトークン数の節約になります。多言語対応が必要な場合は、処理を英語で行い、最終出力だけを日本語に翻訳する手法も有効です。
Related articles
- 9df9952b952f72e3a87c863d
- 0468735e272e2695bb81f213
- 58b48d018bd286fb737b5e0e
- 1aaeb52b63de83d54088839f
- 0ec1b7d2acee3ef183b8aa66
- 0d7ac9057623cd23ee6d5c83
- 07e43f73478168d27bdb7c47
- 92b35f95860670c81356f2c4
- ed3a5d9abbb35e8abc3e3b69
- 6e68d0d909778e9085509cb7
- faf475007cf2d8a9c5ebd90e
- 21c9df9d2195e545c828d63a
- 8d2ab5deffbec8929aa285cf
- b3c35530ce35487cbfe3ed43
- c409a1552f11fbc88e08d813
- d239e348619f3bb87f111dd2
- 9f507800ac83dcb7dc56c7e6
- 8d1cf3dd6fb44dee11a95b0a
- 9a7aa03f0289756a6cc4c477
- b9cfb644a5a10e914b59624f
- 0c8677ac6609f5d5625b358b
- c61ccc7928408ea3781c5d8e
- a182d1795795e3ca42f03c45