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

トークンとは何ですか?また、どのように数えますか?

更新日: 13 days ago

トークンとは?

トークンは、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にテキストを送信すると:

  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」)

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