LLMのトークンとは?トークナイザーの仕組みとAPI料金の考え方

AIを知りたい
先生、LLMの料金で「トークン」っていう単位が出てくるんですが、文字数とは違うんですか?

AIエンジニア
いい質問だね。トークンは、LLMがテキストを処理する際の最小単位なんだ。英語では1トークンがだいたい0.75単語に相当するけど、日本語では1文字が1〜3トークンになることが多い。だから日本語はAPI料金が英語より高くなりがちなんだよ。

AIを知りたい
えっ、日本語だと割高になるんですか?なぜそうなるんですか?

AIエンジニア
トークナイザーという変換ツールが、テキストをトークンに分割するんだけど、多くのトークナイザーは英語中心で設計されているからね。「人工知能」は英語で「AI」の1トークンだけど、日本語では3〜4トークンになることがある。ただ、GPT-4oのトークナイザーは日本語の効率が大幅に改善されているよ。
トークンとは。
人工知能に関わる言葉である「トークン」について説明します。大規模言語モデル(LLM)がテキストを処理する際の最小単位で、単語・サブワード・文字などに分割されたテキストの断片です。API利用料金の課金単位としても使われ、入力・出力のトークン数に応じて料金が計算されます。
トークンとは
トークンは、LLMがテキストを処理する際の最小単位です。人間は文章を「文字」や「単語」で認識しますが、LLMは「トークン」という独自の単位でテキストを処理します。トークンは単語そのものではなく、単語、単語の一部(サブワード)、句読点、空白などに分割されたテキストの断片です。
例えば、英語の「tokenization」は「token」と「ization」の2トークンに分割されることがあります。一般的に、英語では1トークン≒0.75単語(4文字)に相当します。1,000トークンは約750英単語です。
日本語は英語と比べてトークン効率が低く、1文字が1〜3トークンに対応することが多いです。特にGPT-3.5以前のトークナイザーでは、日本語の処理効率が非常に低く、同じ内容を伝えるのに英語の2〜3倍のトークンが必要でした。GPT-4oではトークナイザーが改善され、日本語のトークン効率が大幅に向上しています。
トークナイザーの仕組み
トークナイザー(Tokenizer)は、テキストをトークンに変換するプログラムです。主要なトークナイゼーションアルゴリズムにはいくつかの種類があります。
BPE(Byte Pair Encoding)は、GPTシリーズで使われている手法です。最も頻出する文字ペアを順次統合していくことで、頻度の高い単語は1トークンで表現し、珍しい単語は複数のサブワードに分割します。これにより、未知の単語にも対応できます。
WordPieceは、BERTで使われている手法で、BPEと似ていますが統合の基準が異なります。尤度(もっともらしさ)を最大化するようにペアを選択します。
SentencePieceは、言語に依存しないトークナイザーで、空白を特別扱いしません。日本語のように単語間に空白がない言語にも適しており、LlamaやT5で採用されています。
| アルゴリズム | 使用モデル | 特徴 |
|---|---|---|
| BPE | GPTシリーズ | 頻出ペアを統合、サブワード分割 |
| WordPiece | BERT | 尤度ベースの統合 |
| SentencePiece | Llama, T5 | 言語非依存、空白を特別扱いしない |
| tiktoken | GPT-4o | OpenAI独自、高速BPE実装 |
API料金とトークン数の計算
LLMのAPI利用料金は、入力トークン数と出力トークン数に基づいて計算されます。多くのAPIでは出力トークンの方が入力トークンより高額に設定されています。
例えば、GPT-4oの料金は入力$5/100万トークン、出力$15/100万トークンです。1回の質問で入力1,000トークン、出力500トークンを使った場合、コストは約$0.0125(約1.9円)です。日本語の場合はトークン効率が低いため、同じ文字数でも英語より20〜50%ほど高くなる傾向があります。
コスト最適化のためには、プロンプトの簡潔化、システムプロンプトの共通化、キャッシュの活用、適切なモデルの選択(簡単なタスクにはGPT-4o-miniを使うなど)が重要です。
| モデル | 入力料金/1Mトークン | 出力料金/1Mトークン |
|---|---|---|
| GPT-4o | $5.00 | $15.00 |
| GPT-4o-mini | $0.15 | $0.60 |
| Claude 3.5 Sonnet | $3.00 | $15.00 |
| Gemini 1.5 Pro | $3.50 | $10.50 |
コンテキストウィンドウとの関係
コンテキストウィンドウは、LLMが一度に処理できるトークンの最大量です。入力プロンプト+出力の合計がこの制限を超えることはできません。
GPT-4oは128Kトークン、Claude 3.5 Sonnetは200Kトークン、Gemini 1.5 Proは200万トークンのコンテキストウィンドウを持っています。日本語の場合、128Kトークンは約6〜8万文字に相当し、書籍1冊分程度のテキストを一度に処理できます。
コンテキストウィンドウの制限を超える長文を処理する場合は、テキストをチャンクに分割して処理するか、RAG(検索拡張生成)を使って必要な部分のみを入力する工夫が必要です。
まとめ
トークンは、LLMのテキスト処理とAPI料金の基本単位です。トークナイザーの種類によってトークン分割の結果が異なり、特に日本語はトークン効率が低い傾向があります。API利用コストの見積もりやプロンプトの最適化のために、トークンの概念を理解しておくことは、LLMを活用する上で重要な基礎知識です。
| 項目 | 説明 |
|---|---|
| 定義 | LLMのテキスト処理の最小単位 |
| 英語の目安 | 1トークン≒0.75単語(4文字) |
| 日本語の目安 | 1文字≒1〜3トークン |
| 主要アルゴリズム | BPE, WordPiece, SentencePiece |
| API料金 | 入力・出力トークン数に基づく従量課金 |
