トークンとは?
トークンは、OpenAI モデルが処理するテキストの構成単位です。言語や文脈によって、1 文字ほど短い場合もあれば、単語全体ほど長い場合もあります。スペース、句読点、単語の一部もすべてトークン数に含まれます。API は、応答を生成する前にこのようにテキストを内部で分割します。
英語における便利な目安:
1 トークン ≈ 4 文字
1 トークン ≈ ¾ 単語
100 トークン ≈ 75 単語
1~2 文 ≈ 30 トークン
1 段落 ≈ 100 トークン
約 1,500 単語 ≈ 2,048 トークン
トークン化の方法は、モデルやエンコーディングによって異なります。対象モデルの正確なトークン数を確認するには、Tokenizer ツールまたは tiktoken.encoding_for_model(model) を使用してください。
例
実際のテキストと、そのおおよそのトークン数をいくつか紹介します。
Wayne Gretzky 氏の名言「打たなかったシュートは 100% 外れる」= 11 トークン
OpenAI 憲章 = 476 トークン
米国独立宣言 = 1,695 トークン
トークン数の計算方法
API にテキストを送信すると、次のように処理されます。
テキストがトークンに分割されます。
モデルがこれらのトークンを処理します。
応答が一連のトークンとして生成され、テキストに戻されます。
トークン使用量は、次のカテゴリ別に記録されます。
入力トークン – リクエスト内のトークン
出力トークン – 応答で生成されたトークン
キャッシュ済みトークン – 会話履歴から再利用されたトークン(通常は割引料金が適用されます)
推論トークン – 一部の高度なモデルで、最終出力の生成前に内部で追加される「思考ステップ」
これらの数値は API 応答のメタデータに表示され、請求と使用量の追跡に使用されます。
トークン化について詳しく調べるには、インタラクティブな Tokenizer ツールをご利用ください。トークン数を計算し、テキストがどのようにトークンへ分割されるかを確認できます。
また、プログラムでテキストをトークン化する場合は、OpenAI モデル専用の高速 BPE トークナイザーである Tiktoken を使用してください。
トークン上限
各モデルには、入力と出力を合わせたトークン数の上限があります。現在の大容量モデルは、コンテキスト内で最大数十万トークンに対応しています。ただし、実際の上限はモデルのバージョンや利用ティアによって異なる場合があります。
上限を超える場合は、次の方法があります。
プロンプトを短くするか、表現を変える
長いテキストを小さなチャンクに分割する
送信前に入力を要約または前処理する
トークン料金
API の利用料金はトークン単位で決まり、モデルやトークンの種類(入力、出力、キャッシュ済み)によって異なります。現在の料金については、OpenAI の料金ページをご覧ください。一部の推論モデルは内部でより多くのトークンを使用する場合がありますが、タスクの完了に必要なトークン数を減らすことで効率の向上を目指しています。
トークンは、AI モデルやプロバイダー間で標準化されていません。同じテキストでも、モデルによって処理や生成に使うトークン数が異なるため、100 万トークン当たりの表示価格が安くても、総コストが低いとは限りません。
目に見える応答の長さだけでは、全体像を把握できません。一部のモデルは回答を生成する前に内部で推論トークンを使用するため、表示される応答が長くても、モデル全体のトークン使用量が多いとは限りません。
モデルを比較する際は、必要な総トークン数と、成果を得るまでのコストを考慮してください。ベンチマークは有用な出発点ですが、実際のコストと性能を把握するには、ご自身のユースケースでモデルをテストするのが最善です。
トークンの仕組み
API は、コーパスデータ内の文脈に応じて単語を扱います。モデルはプロンプトを受け取り、入力をトークンのリストに変換して処理し、予測したトークンを応答として表示される単語に戻します。
同じ単語に見えても、テキスト内での構成によって、異なるトークンとして生成される場合があります。テキスト内の文脈に応じて、API が「red」という単語のトークン値をどのように生成するか見てみましょう。
上の最初の例では、「 red」のトークン「2266」に末尾のスペースが含まれています(これらは説明用のトークン ID の例です)。
「 Red」(先頭にスペースがあり、大文字で始まる)のトークン「2296」は、小文字の「 red」のトークン「2266」と異なります。
「Red」が文頭で使われる場合、生成されるトークンに先頭のスペースは含まれません。トークン「7738」は、前の 2 つの例とは異なります。
確認できる点:
出現する可能性や頻度が高いトークンほど、割り当てられるトークン番号が小さくなります。
ピリオドに対して生成されるトークンは、3 つの文すべてで同じ「13」です。これは、コーパスデータ全体で、文脈上ピリオドがほぼ同じように使われているためです。
「red」に対して生成されるトークンは、文中の位置によって異なります。
文中の小文字:「 red」-(トークン:「2266」)
文中の大文字:「 Red」-(トークン:「2297」)
文頭の大文字:「Red」-(トークン:「7738」)
