OpenAI
このページは機械翻訳されています。元の英語の記事を表示

トークンとは何か、数え方

更新日: 2 days ago

トークンとは?

トークンは、OpenAI のモデルが処理するテキストの構成単位です。言語や文脈によって、1 文字ほど短い場合も、単語全体ほど長い場合もあります。スペース、句読点、単語の一部も、すべてトークン数に含まれます。API は応答を生成する前に、このようにテキストを内部で分割します。

英語の場合の目安:

  • 1 トークン ≈ 4 文字

  • 1 トークン ≈ ¾ 単語

  • 100 トークン ≈ 75 単語

  • 1~2 文 ≈ 30 トークン

  • 1 段落 ≈ 100 トークン

  • 約 1,500 単語 ≈ 2,048 トークン

トークン化の方法は、モデルとエンコーディングによって異なります。対象モデルの正確なトークン数を確認するには、Tokenizer ツールまたは tiktoken.encoding_for_model(model) を使用してください。

実際のテキスト例と、おおよそのトークン数を以下に示します。

  • ウェイン・グレツキー氏の言葉「打たなかったシュートは 100% 外れる」=11 トークン

  • OpenAI 憲章=476 トークン

  • 米国独立宣言=1,695 トークン

トークン数の計算方法

API にテキストを送信すると、次の処理が行われます。

  1. テキストがトークンに分割されます。

  2. モデルがこれらのトークンを処理します。

  3. 応答がトークンの並びとして生成され、テキストに戻されます。

トークン使用量は、いくつかのカテゴリに分けて記録されます。

  • 入力トークン – リクエストに含まれるトークン

  • 出力トークン – 応答で生成されたトークン

  • キャッシュ済みトークン – 会話履歴から再利用されたトークン(多くの場合、割引料金が適用されます)

  • 推論トークン – 一部の高度なモデルで、最終出力の生成前に内部で追加される「思考ステップ」

これらの数は API 応答のメタデータに表示され、料金計算と使用量の追跡に使用されます。

トークン化について詳しく調べるには、インタラクティブな Tokenizer ツールを使用できます。トークン数を計算し、テキストがどのようにトークンへ分割されるかを確認できます。

また、プログラムでテキストをトークン化する場合は、OpenAI のモデル専用の高速 BPE トークナイザーである Tiktoken を使用してください。

トークン上限

モデルには、入力と出力を合わせた最大トークン数があります。現在の大容量モデルは、コンテキスト内で最大数十万トークンに対応していますが、実際の上限はモデルのバージョンや利用ティアによって異なる場合があります。

上限を超える場合は、次の方法があります。

  • プロンプトを短くするか、言い換える

  • 長いテキストを小さなまとまりに分割する

  • 入力を送信前に要約または前処理する

トークン料金

API の利用料金はトークン単位で設定され、モデルや、入力・出力・キャッシュ済みのいずれのトークンかによって異なります。現在の料金については、OpenAI の料金ページをご覧ください。一部の推論モデルは内部でより多くのトークンを使用する場合がありますが、タスク完了に必要なトークン数を減らし、効率を高めることを目指しています。

トークンの仕組み

API は、コーパスデータ内の文脈に基づいて単語を扱います。モデルはプロンプトを受け取り、入力をトークンのリストに変換して処理した後、予測したトークンを応答として表示される単語に戻します。

同じ 2 つの単語に見えても、テキスト内での構成によっては異なるトークンとして生成される場合があります。テキスト内の文脈に応じて、API が「red」という単語のトークン値をどのように生成するかを見てみましょう。

Sentence split into color-coded tokens with Text selected over Token IDs
Token ID output as a list of integers with the Token IDs tab selected

上の最初の例では、「 red」のトークン「2266」に後続スペースが含まれています(これらのトークン ID は説明用の例です)。

Sentence split into color-coded token blocks: My favorite color is Red.
Tokenizer output with Token IDs selected and a list of numeric token IDs

「 Red」(先頭にスペースがあり、大文字で始まる)のトークン「2296」は、小文字の「 red」のトークン「2266」とは異なります。

Tokenizer example splitting “Red is my favorite color.” into color-coded tokens
Tokenizer output with Token IDs selected and a list of token ID numbers

「Red」が文頭で使われる場合、生成されるトークンに先頭スペースは含まれません。トークン「7738」は、前述の 2 つの例とは異なります。

観察結果:

出現する確率や頻度が高いトークンほど、割り当てられるトークン番号は小さくなります。

  • ピリオドに対して生成されるトークンは、3 つの文すべてで同じ「13」です。これは、コーパスデータ全体を通じて、ピリオドが文脈上ほぼ同じように使われているためです。

  • 「red」に対して生成されるトークンは、文中の位置によって異なります。

    • 文中の小文字:「 red」-(トークン:「2266」)

    • 文中の大文字:「 Red」-(トークン:「2297」)

    • 文頭の大文字:「Red」-(トークン:「7738」)

この記事は役に立ちましたか?