トークンとは?
トークンは、OpenAIのモデルが処理するテキストの基本単位です。言語や文脈によって、1文字ほど短い場合もあれば、1語まるごとほど長い場合もあります。スペースや句読点、単語の一部もトークン数に影響します。APIは応答を生成する前に、内部でテキストをこのように分割(セグメント化)します。
英語の場合の目安:
1トークン ≈ 4文字
1トークン ≈ 1語の約¾
100トークン ≈ 75語
1~2文 ≈ 30トークン
1段落 ≈ 100トークン
約1,500語 ≈ 2,048トークン
トークン化は言語によって異なることがあります。たとえば「Cómo estás」(スペイン語で「How are you」)は、10文字で5トークンになります。英語以外のテキストは、文字数に対するトークン数の比率が高くなることが多く、コストや上限に影響する場合があります。
例
以下は、実際のテキスト例とおおよそのトークン数です:
ウェイン・グレツキーの名言「You miss 100% of the shots you don’t take」= 11トークン
OpenAI Charter = 476トークン
アメリカ独立宣言 = 1,695トークン
トークン数の計算方法
APIにテキストを送信すると:
テキストがトークンに分割されます。
モデルがそれらのトークンを処理します。
応答がトークン列として生成され、最後にテキストへ変換されます。
トークン使用量はいくつかのカテゴリで追跡されます:
入力トークン – リクエスト内のトークン。
出力トークン – 応答で生成されたトークン。
キャッシュされたトークン – 会話履歴で再利用されたトークン(多くの場合、割引料金で課金)。
推論トークン – 一部の高度なモデルでは、最終出力を生成する前に内部で追加の「思考ステップ」が含まれます。
これらのカウントはAPI応答のメタデータに表示され、課金および使用量の追跡に利用されます。
トークン化をさらに詳しく調べるには、インタラクティブなTokenizerツールを使えます。トークン数の計算や、テキストがどのようにトークンへ分割されるかを確認できます。
また、プログラムでテキストをトークン化したい場合は、OpenAIモデルで使用される高速BPEトークナイザーであるTiktokenを利用してください。
トークン上限
各モデルには、最大の合計トークン上限(入力 + 出力)があります。現在の高容量モデルでは、コンテキストとして最大で数十万トークンまで対応していますが、実際の上限はモデルのバージョンや利用プランによって異なる場合があります。
上限を超える場合は、次の方法があります:
プロンプトを短くする、または言い換える。
大きなテキストを小さなチャンクに分割する。
送信前に要約する、または入力を前処理する。
トークン料金
APIの利用料金はトークン単位で、モデルや、トークンが入力・出力・キャッシュのいずれかによって異なります。最新の料金はOpenAIの料金ページをご覧ください。一部の推論モデルは内部でより多くのトークンを使用する場合がありますが、タスク完了に必要なトークン数を減らすことで効率向上を目指しています。
トークンを探る
APIは、コーパスデータ内の文脈に応じて単語を扱います。モデルはプロンプトを受け取り、入力をトークンのリストに変換し、プロンプトを処理し、予測されたトークンを応答として見える単語へ戻します。
私たちには同じに見える2つの単語でも、テキスト内での構造によっては別のトークンとして生成されることがあります。以下は、テキスト内の文脈に基づいて、APIが「red」という単語のトークン値をどのように生成するかを示す例です:
上の最初の例では、「 red」に対するトークン「2266」には末尾のスペースが含まれています(注: これらは説明用の例のトークンIDです)。
「 Red」(先頭にスペースがあり、大文字で始まる)に対するトークン「2296」は、小文字の「 red」に対するトークン「2266」とは異なります。
「Red」が文頭で使われる場合、生成されるトークンには先頭のスペースが含まれません。トークン「7738」は、これまでの2つの例とは異なります。
観察結果:
確率が高い(より頻出する)トークンほど、割り当てられるトークン番号は小さくなります:
ピリオドに対して生成されるトークンは、3つの文すべてで同じ(「13」)です。これは、文脈的にピリオドがコーパスデータ全体でほぼ同様に使われているためです。
「red」に対して生成されるトークンは、文中での位置によって変化します:
文中の小文字: 「 red」-(トークン: 「2266」)
文中の大文字: 「 Red」-(トークン: 「2297」)
文頭の大文字: 「Red」-(トークン: 「7738」)
