- HOME >
- Jamstack用語集 >
- Token
Token
トークン
Token を分かりやすく
Token(トークン)は、AI がテキストを処理する際の最小単位です。
例え話をしましょう。あなたが外国語の本を読むとします。
単語として読む場合
- "I love programming" → 3つの単語
- それぞれの単語を理解して読む
文字として読む場合
- "I love programming" → 18文字(スペース含む)
- 1文字ずつ処理するのは非効率
AI のトークンは、この中間のような存在です。単語よりも細かく、文字よりも大きな単位で、効率的にテキストを処理します。
"I love programming" → AI のトークン分割
["I", " love", " programming"]
→ 3トークン
"プログラミングが好きです" → AI のトークン分割
["プログラミング", "が", "好き", "です"]
→ 4トークントークンの仕組み
AI モデルは、テキストをトークンに分割してから処理します。
トークン化のプロセス
1. テキスト入力
"Hello, how are you?"
2. トークン化(Tokenization)
["Hello", ",", " how", " are", " you", "?"]
→ 6トークン
3. AI が処理
各トークンを数値に変換して、内部で計算
4. 出力生成
AI が生成したトークンをテキストに戻すトークンの分割ルール
トークンは、単語や文字の境界とは必ずしも一致しません。
英語の例:
"unhappiness" → ["un", "happiness"] (2トークン)
"cat" → ["cat"] (1トークン)
"cats" → ["cats"] (1トークン)
日本語の例:
"今日は良い天気ですね" → ["今日", "は", "良い", "天気", "です", "ね"]
(6トークン、モデルによって異なる)
記号:
"!!!" → ["!", "!", "!"] (3トークン)トークンの種類
トークンには、いくつかの種類があります。
通常のトークン
一般的なテキストを表すトークンです。
単語: "hello", "world"
部分単語: "un", "happiness"
記号: ".", "?", "!"特殊トークン
特別な意味を持つトークンです。
[START]: 文章の開始を示す
[END]: 文章の終了を示す
[PAD]: 長さを揃えるための埋め込み
[UNKNOWN]: 未知の単語を表す空白トークン
スペースや改行もトークンとしてカウントされます。
"Hello world" → ["Hello", " world"] (2トークン)
↑ 先頭にスペースが含まれる
複数の空白:
"Hello world" → ["Hello", " world"] (2トークン)
↑ 複数のスペースも1トークンの一部言語によるトークン数の違い
言語によって、同じ意味でもトークン数が大きく異なります。
英語は効率的
英語は、AI モデルの訓練データに多く含まれているため、効率的にトークン化されます。
英語: "I love programming"
→ 3トークン
日本語: "プログラミングが好きです"
→ 4〜6トークン(モデルによって異なる)
中国語: "我喜欢编程"
→ 4〜8トークン日本語は非効率
日本語は、英語に比べて2〜3倍のトークンを消費することがあります。
英語: "Hello, how are you?"
→ 6トークン
日本語: "こんにちは、お元気ですか?"
→ 10〜15トークン(モデルによって異なる)
理由:
- 訓練データに日本語が少ない
- 文字の種類が多い(ひらがな、カタカナ、漢字)
- 複雑な文法構造実用的な影響
トークン数の違いは、コストと処理能力に直接影響します。
例: OpenAI API で 1,000文字の文章を処理
英語 1,000文字: 約 250トークン
→ コスト: $0.00025($1/1Mトークンの場合)
日本語 1,000文字: 約 600トークン
→ コスト: $0.00060(約2.4倍)トークンと料金
多くの AI API は、トークン数に応じて料金を課金します。
料金体系の例
OpenAI GPT-4o:
- 入力: $2.50 / 1M トークン
- 出力: $10.00 / 1M トークン
Anthropic Claude 3.5 Sonnet:
- 入力: $3.00 / 1M トークン
- 出力: $15.00 / 1M トークン
Google Gemini 1.5 Pro:
- 入力: $1.25 / 1M トークン(128K以下)
- 出力: $5.00 / 1M トークンコスト計算の例
タスク: 500文字の日本語を要約(100文字)
入力: 500文字 → 約 300トークン
出力: 100文字 → 約 60トークン
GPT-4o のコスト:
(300 × $2.50 + 60 × $10) / 1,000,000
= $0.00075 + $0.0006
= $0.00135(約0.2円)トークンとコンテキストウィンドウ
AI モデルには、一度に処理できるトークン数に上限があります。これをコンテキストウィンドウと呼びます。
主要モデルのコンテキストウィンドウ
GPT-4o: 128,000 トークン
Claude 3.5 Sonnet: 200,000 トークン
Gemini 1.5 Pro: 2,000,000 トークン
これを超えると、古い情報が削除されるか、エラーになるコンテキストウィンドウの管理
トークン数を効率的に管理する方法があります。
方法1: 要約
長い会話履歴を要約して、トークン数を削減
方法2: スライディングウィンドウ
最新の N トークンだけを保持
方法3: 重要度ベース
重要なメッセージだけを残すトークン数の確認方法
トークン数を事前に確認することで、コストを見積もれます。
OpenAI の tiktoken ライブラリ
OpenAI は、トークン数をカウントするライブラリを提供しています。
import tiktoken
# GPT-4 用のエンコーダーを取得
encoding = tiktoken.encoding_for_model("gpt-4")
# テキストをトークン化
text = "Hello, how are you?"
tokens = encoding.encode(text)
print(f"トークン数: {len(tokens)}")
print(f"トークン: {tokens}")
# 出力:
# トークン数: 6
# トークン: [9906, 11, 1268, 527, 499, 30]
オンラインツール
Web 上でトークン数を確認できるツールもあります。
OpenAI Tokenizer:
https://platform.openai.com/tokenizer
特徴:
- リアルタイムでトークン数を表示
- トークンの分割を視覚化
- 異なるモデルに対応トークンの最適化
トークン数を削減することで、コストを抑え、コンテキストウィンドウを有効活用できます。
最適化の方法
方法1: 簡潔な表現
悪い例: "それでは、次のステップに進むことにしましょう"
良い例: "次のステップへ"
→ トークン数を削減
方法2: 不要な情報の削除
悪い例: システムメッセージに冗長な説明を含める
良い例: 必要最小限の指示のみ
方法3: 効率的な形式
JSON や箇条書きなど、効率的な形式を使用具体例
最適化前:
「今日は天気が良いですね。ところで、昨日の会議で
話し合った件について、もう一度確認させてください。
あなたの意見はどうでしたっけ?」
→ 約 30トークン
最適化後:
「昨日の会議の件、あなたの意見は?」
→ 約 8トークン
約75%のトークンを削減トークンとモデルの性能
トークンの理解は、モデルの性能を理解する上でも重要です。
トークンあたりの処理時間
モデルは、トークンを1つずつ生成します。
生成速度の例:
GPT-4: 約 20〜40 トークン/秒
GPT-3.5 Turbo: 約 60〜100 トークン/秒
100トークンの応答を生成する時間:
GPT-4: 2.5〜5秒
GPT-3.5 Turbo: 1〜1.7秒トークンと精度
トークンの分割方法は、モデルの性能に影響します。
問題:
"unhappiness" が ["un", "happiness"] と分割される場合、
"un" と "happiness" の意味を理解する必要がある
"unhappiness" が ["unhappiness"] と1トークンなら、
直接その意味を学習できる
適切なトークン化は、モデルの精度向上につながるトークンのベストプラクティス
トークンを効率的に使うためのベストプラクティスです。
1. トークン数を意識する
特に大量のリクエストを処理する場合、トークン数を最適化します。
最適化前: 1,000回 × 500トークン = 50万トークン
最適化後: 1,000回 × 200トークン = 20万トークン
→ コストが60%削減2. 言語の違いを考慮
日本語は英語よりトークンを多く消費することを理解します。
対策:
- 必要に応じて英語で処理
- 簡潔な日本語表現を使用
- 重要な部分のみを日本語に3. コンテキストウィンドウを監視
トークン数がコンテキストウィンドウを超えないよう監視します。
例:
コンテキストウィンドウ: 128,000 トークン
現在の使用量: 120,000 トークン
→ 警告: あと 8,000 トークンで上限
対策を実施4. ストリーミングを活用
ストリーミングを使えば、トークンが生成されるたびに表示できます。
メリット:
- ユーザーは即座にフィードバックを得られる
- 長い応答でも待ち時間を感じない
- トークンあたりの処理を可視化まとめ
Token は、AI がテキストを処理する際の最小単位です。料金計算、コンテキストウィンドウの管理、モデルの性能理解に不可欠な概念です。
重要なポイント
- 基本単位 - AI はテキストをトークンに分割して処理
- 料金 - 多くの API はトークン数で課金
- 言語差 - 日本語は英語の2〜3倍のトークンを消費
- コンテキストウィンドウ - 処理できるトークン数に上限がある
- 最適化 - トークン数を削減してコストとパフォーマンスを改善
トークンを理解すべき理由
- コストの見積もりと最適化
- コンテキストウィンドウの効率的な管理
- モデル選択の判断材料
- アプリケーションのパフォーマンス向上
トークンの概念を理解することで、AI アプリケーションをより効率的に開発・運用できます。特にコストとパフォーマンスのバランスを取る上で、トークンの管理は非常に重要です。