GPT-4、ChatGPT、AIモデル用の無料トークンカウンター
OpenAIのtiktokenライブラリを使用して、任意のテキストのトークン数を数える無料ツールです。GPT-4、GPT-3.5、ChatGPTが実際のAPI課金や文脈長の上限判定に使うのと同じ計算方式を採用しており、プロンプトの最適化やコスト見積もりに役立ちます。
トークンカウンター
無効な入力
ドキュメンテーション
トークンカウンターとは何か?
トークンカウンターは、AI言語モデルがテキストを読み取ったとき、そのテキストがいくつのトークンに分割されるかを測定します。トークンとは、モデルが生の文字列の代わりに処理する小さなテキストのまとまりです。GPT-4やChatGPTなどのモデルでは、単語全体、単語の一部、句読点などがトークンになります。このツールは、OpenAIが公開したオープンソースのトークナイザーライブラリであるtiktokenを使用しているため、カウント結果はOpenAI独自のモデルやAPIが返すものと一致します。
トークン化の仕組み
トークナイザーは、単純に単語を数えるわけではありません。テキストを、バイトペアエンコーディング(BPE)と呼ばれるアルゴリズムにかけます。このアルゴリズムは、テキストの個々のバイトから始め、学習中に大量のテキストから学習したパターンに基づいて、隣り合うペアのうち最も頻出するものを繰り返し結合します。その結果、数万種類の一般的なまとまりからなる固定語彙が作られます。そこには、短い単語全体、頻出する単語の断片、そして珍しいものに対応する単一文字が含まれます。
このため、英語の単語は1トークンになることが多い一方、長い単語や珍しい単語は2つ以上に分割されることがあります。空白は通常、それ自体で数えられるのではなく、次のトークンの先頭に付加されます。句読点は一般に、それぞれ独立したトークンになります。
このツールが対応するエンコーディング
Tiktokenには複数のエンコーディングがあり、それぞれOpenAIのモデルファミリーに対応しています。このツールは次の3つに対応しています。
| エンコーディング | 使用モデル | おおよその語彙サイズ |
|---|---|---|
cl100k_base | GPT-3.5およびGPT-4ファミリーのモデル、ChatGPT | 約100,000トークン |
p50k_base | 後期のGPT-3モデル | 約50,000トークン |
r50k_base | 初期のGPT-3およびGPT-2モデル | 約50,000トークン |
cl100k_baseがデフォルトで選択されます。現在、多くの人が使用しているモデルファミリーを対象としているためです。同じテキストでも、エンコーディングごとに異なるトークン数になることがあります。各エンコーディングは異なるテキストで学習され、文字の結合方法も異なるためです。
トークン数の計算方法
BPEの結合は特定のテキストと学習済みの語彙に依存するため、文字数や単語数をトークン数に変換する単純な算術式はありません。正確な方法は、テキストをトークナイザー自体に通すことだけです。
- 対象モデルに対応するエンコーディングを選びます。
- そのエンコーディングのトークナイザーにテキストを入力します。
- 得られたトークンIDのリストを数えます。そのリストの長さがトークン数です。
英語のテキストでは、概算として1トークンは約4文字、または単語の約4分の3に相当します。これはあくまで目安です。数字、コード、英語以外のテキスト、珍しい綴りによって、この比率は大きく変わることがあります。
計算例
次の文を見てみましょう。
「トークン化はテキストを断片に分割します。」
cl100k_baseエンコーディングでは、tiktokenはこれを7個のトークンに分割します。
Token、ization、 splits、 text、 into、 pieces、.
「Tokenization」自体は「Token」と「ization」という2つのトークンに分割されますが、それ以外の単語はすべてそのままです。最後のピリオドは独立したトークンです。そのため、37文字、5語の文は、6ではなく7トークンになります。
トークン数が重要な理由
AIプロバイダーはAPIの利用料金をトークン単位で請求します。送信したテキストと、応答として生成されたテキストの両方が数えられるため、トークン数からリクエスト送信前に費用を予測できます。各モデルには最大コンテキスト長もあり、1回のリクエストとその返信を合わせて含められるトークン数に上限があります。この上限はモデルによって異なり、プロバイダーが新しいバージョンを公開するたびに変わるため、記憶に頼らず、使用中のモデルの最新ドキュメントで確認するのが最善です。
よくある質問
AI言語モデルにおけるトークンとは何ですか。 トークンとは、言語モデルが1つの単位として読み取るテキストのまとまりです。短い単語全体、長い単語の一部、句読点、または次の単語に付加された空白などがトークンになります。
同じテキストでもエンコーディングによってトークン数が異なるのはなぜですか。 各エンコーディングはそれぞれ異なるテキストサンプルで学習され、一般的なまとまりからなる独自の語彙を構築しています。ある語彙では1トークンになるほど一般的な単語でも、別の語彙には含まれていないことがあり、その場合は異なる形に分割されます。
句読点もトークンとして数えられますか。 はい。句読点は通常、それぞれ独立したトークンとして数えられます。ただし、トークナイザーの学習中にその組み合わせがどの程度頻繁に現れたかによって、隣接する文字と結合されることもあります。
トークンは単語と同じですか。 いいえ。短く一般的な単語は通常、それぞれ1トークンです。長い単語やあまり一般的でない単語、そして英語以外の単語の大半は、2つ以上のトークンに分割されることがよくあります。
このツールの精度はどの程度ですか。 OpenAI独自のtiktokenライブラリを使い、OpenAIが内部で使用しているものと同じエンコーディング処理を実行してトークンを数えるため、同じテキストとエンコーディングに対するOpenAI APIの呼び出し結果と一致します。
このツールはOpenAI以外のモデルのトークンも数えられますか。 このツールは、OpenAIのモデル向けに作られたtiktokenのエンコーディングを使用しています。AnthropicやGoogleなどの他のプロバイダーは独自のトークナイザーを使用しているため、同じテキストでも異なるカウントになることがあります。
参考文献
- OpenAI。"tiktoken." GitHub、https://github.com/openai/tiktoken.
- Sennrich, Ricoほか。"Neural Machine Translation of Rare Words with Subword Units." arXiv:1508.07909、2016、http://arxiv.org/abs/1508.07909.
- Brown, Tom B.ほか。"Language Models are Few-Shot Learners." arXiv:2005.14165、2020、http://arxiv.org/abs/2005.14165.