Tool overview
LLMトークンカウンターとは?
LLMトークンカウンターは、色分け境界マップでトークンをカウントための開発者向けツールです。
なぜLLMトークンカウンターを使うのか?
色分け境界マップでトークンをカウント際の可読性と作業速度を向上させ、データをサーバーに送信しません。
主な機能
クライアントサイドのプライバシー、即座の結果、ワンクリックコピー。色分け境界マップでトークンをカウント
使い方
上のツールで正確な結果を得るための手順です。
- モデルに送る正確なテキストを貼り付けます:システムプロンプト、ユーザーメッセージ、ツール JSON、または連結した RAG コンテキスト。
- 3 つのエンコーディングカードを比較 — GPT-4o は o200k_base、GPT-4 / Claude 近似は cl100k_base、レガシー Codex は p50k_base。
- トークン境界マップを開き、ホバーで Token ID を確認。対象モデルに合わせてマップのエンコーディングを切り替えます。
- スキーマやツールペイロードは Minify JSON、余白の多い散文は Strip Spaces を押し、再カウントします。
- 推定月間ボリュームを入力し、GPT-4o / GPT-4o mini / Claude 3.5 Sonnet の入力コストを投影します。
- マルチエンコーディング指標を設計ドキュメント、チケット、PR にコピーし、チームで一つの予算数値を共有します。
- 反復:最も高い few-shot やスキーマ部分から削り、再カウントし、チャットラッパー用に 10–20% の余裕を残します。
- エージェント構成では AI エージェントビルダーで tools + MCP + プロンプトを組み立て、合計予算を再確認します。
LLM トークンカウンター — 完全ガイドとユースケース
権威ある解説:エンコーディング、段階的な予算、実ユースケース、超過の修正、境界マップ、料金メモ — 上のコックピットでそのまま実践できます。
LLM トークンカウンターガイド — ここから
このページは DevUtilities でブラウザ内の LLM トークンを数えるための正規ガイドです。読みながら上の対話型 Prompt Budget Cockpit を使うか、下のトピックへジャンプしてください。すべて js-tiktoken 経由でクライアント側で動作し、プロンプトはマシンから出ません。
Prompt Budget Cockpit の役割
LLM Token Counter(Prompt Budget Cockpit)は、OpenAI が tiktoken に同梱するのと同じ BPE 表でテキストをトークン化します。3 つのエンコーディングを並べて比較し、トークン境界を可視化し、GPT-4o、GPT-4o mini、Claude 3.5 Sonnet の入力コストを見積もり、本番 API に届く前にプロンプトを縮小する助けになります。
得られるもの
- o200k_base(GPT-4o)、cl100k_base(GPT-4 / Claude 近似)、p50k_base(レガシー Codex)の同時カウント
- ホバー可能な Token ID 付きの色分け Token Boundary Map
- プロンプト重量を減らす Minify JSON と Strip Spaces アクション
- 静的な公開入力レートからのクエリ単位・月次コスト外挿
- 設計ドキュメントと予算レビュー向けのコピー可能なマルチエンコーディング指標
次のときに使う
- system prompt + tools + ユーザーメッセージがコンテキスト窓に収まるか知る必要がある
- モデル選定前に GPT-4o と Claude 系のトークン予算を比較する
- OpenAI や Anthropic API を呼ばずにローカルでプライバシー安全なカウントが欲しい
- コストを膨らませる RAG チャンク、few-shot 例、JSON スキーマを削る
期待しないこと
- バイト同一の Claude 請求 — Anthropic は別の本番トークナイザーを使い、cl100k_base は有用な英語近似です
- API が生テキストの周りに付けるチャットラッパーのオーバーヘッド(ロールタグ、ツールエンベロープ)
- ライブ市場価格 — コストパネルはずれる可能性のある静的公開レートを使います
o200k vs cl100k vs p50k — 正しいエンコーディングを選ぶ
Token ID はエンコーディング固有です。同じ英文でも o200k_base と cl100k_base では長さと ID が異なります。常に対象モデルが実際に使うエンコーディングで予算を立ててください。
このワークスペースで比較するエンコーディング
| エンコーディング | 典型モデル | ここで使うとき |
|---|---|---|
| o200k_base | GPT-4o, GPT-4o mini | 現代の OpenAI チャットと GPT-4o ファミリーのコストカードのデフォルト |
| cl100k_base | GPT-4, GPT-4 Turbo, GPT-3.5 Turbo; Claude approximation | レガシー OpenAI チャット予算とおおよその Claude 英語見積もり |
| p50k_base | Legacy Codex / older completion models | 歴史的比較と古い completion パイプライン |
特定モデルファミリーのマージを調べるときは、比較カードとは独立して Token Boundary Map のエンコーディングを切り替えてください。
手順: カウント、最適化、予算のコピー
初めてコックピットを開くときはこの手順に従ってください。その後の大半のセッションは貼り付け → 比較 → 最適化 → コピーです。
- 関心のある完全なプロンプトペイロードを貼り付けます: システムメッセージ、ユーザーターン、ツール JSON、または連結した RAG コンテキストブロック。
- 3 つの比較カードを読みます。最も高いエンコーディングをメモ — まだモデルを選ぶ必要がある場合の保守的予算です。
- Token Boundary Map を開き、意外に長いスパン(URL、絵文字、インデント JSON)にホバーして具体的な Token ID を確認します。
- 入力が JSON 中心なら Minify JSON をクリック。二重スペースや余白改行のある散文なら Strip Spaces をクリック。
- 推定月間呼び出し量を入力し、GPT-4o、GPT-4o mini、Claude 3.5 Sonnet の入力支出を投影します。
- メトリクス要約を設計ドキュメント、チケット、PR 説明にコピーし、チームが一つの数字を共有できるようにします。
「良い」状態の目安
- System + tools + 平均ユーザーターンが、選んだコンテキスト窓内でモデル応答の余地を残す
- 人間が整形コピーを編集しても、本番プロンプトでは JSON スキーマが minify されている
- コスト外挿が請求モデルに一致するエンコーディングを使う
ユースケース: システムプロンプトのコンテキスト超過を止める
問題: ポリシー、トーン規則、few-shot 例を 3 つ追加したあと、サポートエージェントのプロンプトが会話の途中で切り詰められる。
このツールの解決方法
- 現在の system prompt だけを貼り付け、o200k_base(または cl100k_base)のカウントを記録します。
- few-shot 例を 1 つずつ追加して差分をメモ — 価値の低い例から先に落とします。
- 代表的なユーザーメッセージと毎回送る tools JSON を貼り付け、モデルのコンテキスト窓に対して合算します。
- 散文に Strip Spaces、スキーマに Minify JSON を使い、再カウントして節約量を定量化します。
- 最終予算をエージェントのランブックにコピーし、今後のプロンプト編集が同じ上限を守るようにします。
結果: どのセクションが予算を壊したか、各最適化が何トークン回復したかが正確に分かります — 次の本番切り詰めの前に。
ユースケース: OpenAI ツールスキーマのトークン浪費を削減
問題: OpenAI の function-calling スキーマは可読性のためインデント付きで書かれ、ライブリクエストに貼られます。論理スキーマは変わっていないのにトークン支出が上がります。
このツールの解決方法
- 整形済み tools 配列または parameters オブジェクトを入力パネルに貼り付けます。
- API モデルが使うエンコーディング(通常 GPT-4o なら o200k_base)のトークン数をメモします。
- Minify JSON をクリックして新しいカウントと比較 — 差は純粋な空白税です。
- boundary map を確認: 繰り返しキーと長い enum リストが支配的なことが多いので、フィールドを切る前に説明を短くします。
- API 呼び出しでは minify 済みスキーマを送り、整形コピーはソース管理または Agent Builder エディタだけに残します。
結果: ツール動作を変えずに、ツール有効な呼び出しごとの入力コストを下げます。
ユースケース: 月次 LLM 入力コストを予測する
問題: モデルを数千回呼ぶ機能のローンチ前に、財務が月次 LLM 支出見積もりを求めます。
このツールの解決方法
- 現実的な平均ペイロード(system + tools + 典型ユーザー文)を組み立ててここに貼ります。
- 本番モデルに一致するエンコーディングの比較カードを確認します。
- Estimated monthly volume を予測呼び出し数に設定します。
- 同じペイロードでベンダー比較するため、GPT-4o、GPT-4o mini、Claude 3.5 Sonnet の月次列を読みます。
- レートは静的な公開入力価格だと文書化し、ベンダーが価格ページを変えたら見積もりを更新します。
結果: 「トークンは安い」という曖昧な推測ではなく、ペイロード固有の防御可能な予測になります。
ユースケース: 厳しいトークン予算で RAG チャンクをサイズする
問題: RAG パイプラインがクエリごとに 5 チャンクを取得。一部は空白や定型ヘッダーが多く、有用テキストが切り詰められてモデルが答えを逃します。
このツールの解決方法
- 候補チャンクを個別に貼り付け、検索モデルのエンコーディングでトークン数を記録します。
- より密なチャンクを優先: Strip Spaces、繰り返しナビヘッダー削除、ほぼ重複する段落の除去。
- 送る予定の top-k セットを連結し、質問と回答の余地が残るか確認します。
- boundary map で、人間には短く見えるトークナイザー高コスト列(長い URL、表、絵文字)を見つけます。
- このツールで測った合計を使い、リトリーバーにクエリあたりのハードトークン予算を設定します。
結果: 検索がトークンあたりの信号を増やし、静かなコンテキスト切り詰めによる失敗が減ります。
修正: context_length_exceeded と静かな切り詰め
症状: API 400 context_length_exceeded、切り詰められた completion、セッション途中で初期指示を「忘れる」エージェント。
なぜ起きるのか
system prompt、tools、履歴、ユーザーターンの合計がモデルのコンテキスト窓を超えます。整形 JSON と長い few-shot バンクはよくある静かな原因です。
診断
クライアントが送る正確なペイロードを貼る(または再構築する)。トークン合計をモデルのコンテキスト窓と比較。個別に数えて最大セクションを特定します。
修正
- ツールスキーマを Minify JSON し、散文の余分な空白を削ります。
- まれに使うポリシーを常時 system prompt からオンデマンド検索へ移します。
- 各呼び出し前にチャット履歴を上限(要約または最古ターン削除)。
- 測定後にのみより大きなコンテキストモデルへ切替 — 推測しない。
変更のたびに再カウント。8k トークンの tools ブロブで空白を 10% 削ると、短いポリシー段落を消すより余裕を取り戻すことが多いです。
修正: ローカルカウントが API 使用量と一致しない
症状: ローカルカウントは問題なさそうだが OpenAI 使用ダッシュボードと不一致 — または Claude の請求がスプレッドシートと違う。
なぜ起きるのか
誤ったエンコーディングで予算を立てたか、ロールとツールエンベロープでメッセージを包む API と生テキストを比較した。
診断
モデルの文書化されたトークナイザーを確認。GPT-4o ファミリーは o200k_base、GPT-4 / 3.5 は cl100k_base。ここでの Claude 数値は近似のみとして扱います。
修正
- 比較フォーカスと boundary map を一致するエンコーディングに切り替えます。
- 人間可読のプロンプト下書きだけでなく、SDK が実際に送るシリアライズ済みメッセージを数えます。
- ハード上限を計画するとき、チャット整形用に小さなオーバーヘッドバッファ(しばしば数十〜数百トークン)を足します。
- Anthropic 請求では、SLA を固める前に重要プロンプトを Anthropic 自身のカウンターで検証します。
修正: 整形 JSON と空行がトークンを膨らませる
症状: プロンプトの意味が変わらないのに、Minify JSON または Strip Spaces 後にトークン数が劇的に下がる。
なぜ起きるのか
BPE エンコーディングはインデント改行、整列スペース、繰り返し空行に課金します。人間は無視しますがトークナイザーはしません。
診断
整形ペイロードを貼り、カウントをメモし、Minify JSON / Strip Spaces を実行して比較。大きな差分は空白が主コスト要因だったことを意味します。
修正
- 人間編集用の整形 JSON を git に保存し、リクエスト時に minify。
- system prompt 内のパディング ASCII 図や巨大インデントログを避ける。
- 長いポリシードキュメントの複数空行セクション区切りを折りたたむ。
boundary map は空白トークンを別色スパンとして可視化します — チームに minify の重要性を教えるのに有用です。
トークン境界マップの読み方
Token Boundary Map は各 BPE マージを色付きスパンとして描きます。色は視覚分離のためだけに循環し、トークンカテゴリを符号化しません。
読み方
- スパンにホバーして、選択中のマップエンコーディングの数値 Token ID を表示
- URL や base64 上の長い切れ目のないスパンは、短縮する価値のある高価な 1〜少数トークンチャンクを意味することが多い
- 絵文字と CJK テキストは、同じ見た目の長さのラテン散文より多くのトークンを使うことがある
- 同じ文字列を GPT-4o と GPT-4 がどう分割するか比較するときマップエンコーディングを変更
コスト外挿の仕組み
コストカードはローカルトークン数に静的公開入力レートを掛けます: GPT-4o $5 / 1M、GPT-4o mini $0.15 / 1M、Claude 3.5 Sonnet $3 / 1M。月次ボリュームがクエリ単価をスケールします。
注意点
- 出力トークンは含まれません — 完全な TCO には completion 見積もりを別途追加
- キャッシュ入力やバッチ割引はモデル化されていません
- ベンダー定価は変わります。数値は請求書ではなく計画補助として扱ってください
トークン予算のベストプラクティス
- 本番に一致するエンコーディングで予算を立て、チャットラッパーとリトライ用に 10–20% の安全余裕を残す
- system prompt だけでなく完全なリクエスト形(system + tools + 履歴 + ユーザー)を数える
- 機械消費 JSON は minify、人間用は整形コピーを残す
- few-shot 例、MCP 設定、長いポリシー付録を追加したら再カウント
- ローンチ前にコストが見えるよう設計レビューで月次ボリューム投影を使う
- 独自プロンプトはローカルカウントを優先 — このツールはテキストをアップロードしません
トークナイザーと特殊トークンのリファレンス
境界色は tiktoken のバイトペアエンコーディングに対応します。<|endoftext|> のような特殊トークンはリテラルテキストとして存在する場合にカウントされます。
トークナイザーと特殊トークンの参照
| フィールド種別 | サンプルペイロード | 構造ルール |
|---|---|---|
| cl100k_base | GPT-4, GPT-4 Turbo, Claude 3 | デフォルトの OpenAI チャットエンコーディング。英語散文で約 4 文字/トークン。単語境界をまたいで空白をマージ。 |
| o200k_base | GPT-4o, GPT-4o mini | omni モデル向け拡張語彙エンコーディング。同一文字列でも Token ID は cl100k_base と異なる。 |
| <|endoftext|> | <|endoftext|> | GPT 学習コーパスの文書境界を示す予約制御トークン。リテラル時は 1 トークンとしてカウント。 |
| Unicode emoji | 🚀 | エンコーディングによりしばしば 1–3 トークン。複数コードポイントの書記素は複数 BPE マージに分割され得る。 |
| JSON whitespace | {\n "key": "value"\n} | インデント改行とスペースはトークンを消費 — コンテキスト使用を数える前に JSON ペイロードを minify。 |
よくある質問
一般的なトラブルとデータプライバシーに関する回答です。
関連ツール
このツールを補完する関連ユーティリティをご覧ください。
公式ドキュメントと参照
このユーティリティの公式仕様とプラットフォーム文書です。