AI のトークンと単語:費用を見積もる前に要求を数える
トークンはモデルのトークナイザーが作る単位で、固定の単語数や文字数ではありません。正確な文章計測には対応する設定を使います。API 全体ではメッセージ構造やツールも含め、事前推定と返された利用量を照合します。
このガイドの内容
記事の長さには単語カウンターが役立ちますが、AI 要求がコンテキストに入るか、費用がいくらかは正確に分かりません。同じ文章でもトークナイザーで分割が変わり、要求には最後に貼り付けた文以外も含まれます。
ここでは生テキストの計測、要求全体の計測、課金使用量を分けます。オフラインの例と記入用の表を用意します。実行していないモデルに対して、正確そうな数値を作ることはしません。
単語、Unicode 文字、トークンを分ける
一語が一つ、複数の部分語、空白や句読点を含む単位になることがあります。Hugging Face の入門資料は単語、文字、部分語の方法を説明しています。言語、綴り、コード、空白、語彙によって分割が変わります。
Unicode 文字数は別の問いです。複数コード単位やバイトが必要な文字も、複数コードポイントでできた記号もあります。どれもトークンとの普遍的な換算比率はありません。文字数比の経験則は、特定標本の粗い目安として扱います。
| 目的 | 使える測定 | 限界 |
|---|---|---|
| 記事の長さ確認 | 単語数や Unicode 文字数 | モデルのトークン数は確定しない |
| 特定トークナイザーでファイル計測 | 対応設定によるトークン ID | チャット形式や付加情報を除く場合がある |
| 構造化 API 要求の見積もり | 公式計数機能か正しい要求形式 | 最終使用量と異なる場合がある |
| 課金照合 | 実使用量と現在の課金定義 | 別サービスの要求推定ではない |
既知のトークナイザーでローカル文章を数える
Hugging Face tokenizers 形式なら、対応するローカル tokenizer.json を読み、UTF-8 ファイルを符号化します。モデルまたはトークナイザー ID、ファイルの版、パッケージ版、特殊トークンの設定を記録します。この例は公開済み tokenizers 0.23.2 を対象とし、パディングと切り詰めを無効にして数えます。
正規のモデル配布元から得た対応ファイルを使います。例はモデルを取得せず、文章をサーバーに送らず、ホスト型チャット API の完全形式も再現しません。設定が測定対象と合う場合だけ結果が意味を持ちます。特殊な前処理やテンプレートは別途考慮します。
# Example environment: tokenizers==0.23.2
from pathlib import Path
from importlib.metadata import version
from tokenizers import Tokenizer
# Use the matching tokenizer.json already saved locally.
tokenizer = Tokenizer.from_file("tokenizer.json")
tokenizer.no_padding()
tokenizer.no_truncation()
text = Path("sample.txt").read_text(encoding="utf-8")
encoded = tokenizer.encode(text, add_special_tokens=False)
print("tokenizers version:", version("tokenizers"))
print("raw-text tokens:", len(encoded.ids))
# Record tokenizer identity/revision separately.
# This is not a complete chat-request or billing count.コンテキスト計画には要求全体を含める
システム指示、履歴、検索文書、ツール定義、形式情報が最新メッセージ以外に含まれます。チャットテンプレートが役割や境界に制御トークンを加えることもあります。貼り付けた最後の段落だけでは入力を過小評価し得ます。
ホスト型では、入力種別に対応する公式の計数機能があれば使います。Claude の資料は構造化入力の計測と、実使用量の確認が必要な場合を説明しています。ツール、画像、文書では特に、供給元が記す推定の制約に従って解釈します。
未知のオンライン計数機に認証情報や機密文章を渡しません。ローカルは生テキスト計測に使えますが、提供元の端点を使えば入力がその提供元に送られます。測定前にデータに合った経路を選びます。
再現可能な比較表を作る
サポート文、コード、表、利用言語ごとの文章など代表標本を選びます。入力バイトを保存し、比較中に改行、句読点、空白が意図せず変わらないようにします。変更した文章は同じ標本として扱いません。
ID と版、特殊トークン設定、生テキスト数、可能なら要求全体の推定を記録します。未計測値は推測比率で埋めません。異なるトークナイザーの数の違いは、その標本と設定の測定結果であり、言語品質の順位ではありません。
| 標本 | トークナイザーと版 | 生テキスト数 | 要求全体の数または推定 |
|---|---|---|---|
| サポート文 | 正確な ID を記入 | ローカルで測定 | 対応形式で測定 |
| コード断片 | 正確な ID を記入 | ローカルで測定 | 対応形式で測定 |
| 別言語の文章 | 正確な ID を記入 | ローカルで測定 | 対応形式で測定 |
入力追加の前に出力枠を予約する
仮にこの要求形式の総コンテキストを 32,000 とし、出力に 4,000、計画上の余裕に 2,000 を取ると、入力枠は 26,000 です。指示、履歴、ツールが 8,000 なら、検索内容には 18,000 が残ります。
これは仮定の例で、実在する現在のモデル仕様ではありません。コンテキスト、出力、推論、ツール使用の定義は提供元で異なります。現在の契約を確認して実数を予算計算機に入力します。枠に入ることと、すべての段落が役立つことも別です。
Hypothetical planning budget:
32,000 combined context
− 4,000 output reserve
− 2,000 planning buffer
= 26,000 input budget
26,000 − 8,000 instructions/history/tools
= 18,000 available for retrieved content推定と実際の使用量、費用を照合する
小さな実要求の後に、返された使用量を保存して同じ要求の推定と比べます。公開定義に従い、キャッシュ入力、出力、推論などを分けます。ツール定義を数え忘れたなら、単語換算比を変えても原因の説明にはなりません。
費用計算機には実測トークンと確認済みの現行料金を入力します。入力と出力を分け、百万トークン当たりなどの単位を残します。再現可能な費用表は使用量と明示した価格に基づき、単語からの普遍的換算に依存しません。
同じ質問でも履歴やツールが違えば同じ要求ではありません。比較時は構造とキャッシュ条件も記録します。最終回答の文字数だけでは総費用を説明できないため、機密を除いた構造説明と使用量を保管します。
よくある質問
一トークンは常に四文字ですか?
違います。一部の文章とトークナイザーの粗い経験則にすぎません。言語、コード、句読点、空白、設計で結果は変わります。
ローカルの文章数と API 使用量が違うのはなぜですか?
原文にない形式、指示、履歴、ツール、入力種別が要求に含まれ得ます。トークナイザーや特殊トークン設定も確認し、同じ完全要求と提供元の定義を比較します。
このサイトの単語カウンターでモデルの正確なトークン数を出せますか?
出せません。単語や Unicode 文字などの計測用です。対応トークナイザーや公式計数方法で測り、その値を費用やコンテキストの計算に使います。
出典と定義
- Hugging Face LLM Course: Tokenizers
- Claude Platform: Token counting
- Hugging Face tokenizers 0.23.2: published Python package and API examples
- Hugging Face Transformers: Chat templates
計算方法の確認日: