Gemini モデルのトークン数をカウントする

Gemini モデルは、トークンと呼ばれる単位で入力と出力を処理します。

トークンは、z などの単一の文字、cat などの単語全体にすることができます。長い単語は複数のトークンに分割されます。モデルで使用されるすべてのトークンのセットを語彙と呼び、テキストをトークンに分割するプロセスをトークン化と呼びます。

Gemini モデルの場合、1 個のトークンは約 4 文字に相当します。100 トークンは、約 60 ~ 80 ワード(英語)に相当します。

各モデルには、プロンプトとレスポンスで処理できるトークンの最大数があります。プロンプトのトークン数がわかれば、この上限を超えているかどうかを確認できます。また、リクエストの費用は入力トークンと出力トークンの数によって決まるため、トークンのカウント方法を把握しておくと便利です。

サポートされているモデル

  • gemini-4-argon
  • gemini-3.8-flash(および以前の gemini-3.7-flash、gemini-3.6-flash、gemini-3.5-flash)
  • gemini-3.5-flash-lite(および以前の gemini-3.1-flash-lite)
  • gemini-nano-banana-2.1(Nano Banana 2.1)
  • gemini-3.1-flash-image(Nano Banana 2)
  • gemini-3.1-flash-lite-image(Nano Banana 2 Lite)
  • gemini-3-pro-image(Nano Banana Pro)
  • gemini-3.1-flash-tts-preview

gemini-3.1-pro-preview と、一般用途および画像生成用の Gemini 2.5 モデル(非推奨)も、この機能をサポートしています。

トークンをカウントするオプション

Gemini API のすべての入出力は、テキスト、画像ファイル、その他のテキスト以外のモダリティを含めてトークン化されます。トークンをカウントするオプションは次のとおりです。

リクエストのみのトークン数を確認します(モデルに送信する前)。
リクエストをモデルに送信する前に、リクエストの入力を使用して countTokens を呼び出します。次の結果が返されます。
  • total_tokens: 入力のみのトークン数
リクエストとレスポンスの両方のトークン数を確認します。
レスポンス オブジェクトの usageMetadata 属性にアクセスします。これには、以下が含まれます。
  • prompt_token_count: 入力のみのトークン数
  • candidates_token_count: 出力のトークン数のみ(思考トークンは含まれません)
  • thoughts_token_count: レスポンスの生成に使用された思考トークンのトークン数
  • total_token_count: 入力と出力の両方のトークンの合計数(思考トークンを含む)

出力をストリーミングする場合、usageMetadata 属性はストリームの最後のチャンクにのみ表示されます。中間チャンクの場合は nil です。

上記のオプションについて、次の点に注意してください。

  • 入力画像の数や、動画または音声の入力ファイルの秒数はカウントされません。ただし、これらの各モダリティのトークン数は、これらの値と相関します。
  • 入力トークン数には、プロンプト(テキストと入力ファイル)に加えて、システム指示とツールが含まれます。
  • 出力トークン数には思考トークンは含まれません。思考トークンは別のフィールドに表示されます。
  • このページの後半にあるリクエストの種類ごとの追加情報を確認します。
  • Gemini Live API モデルは countTokens をサポートしていません。また、Firebase AI Logic は、Live API モデルからのレスポンスの usageMetadata 属性をまだサポートしていませんが、近日公開予定です。

これらのオプションの料金

  • countTokens の呼び出し: countTokens(Count Tokens API)の呼び出しに料金はかかりません。Count Tokens API の最大割り当ては、1 分あたり 3,000 リクエスト(RPM)です。

  • usageMetadata 属性の使用: この属性は常にレスポンスの一部として返され、トークンや料金は発生しません。

その他の情報

特定の種類のリクエストを処理する際の追加情報を以下に示します。

テキスト入力トークンをカウントする

追加情報なし。

マルチターン(チャット)トークンをカウントする

チャットを使用する際に countTokens を呼び出す場合は、次の点に注意してください。

  • チャット履歴を指定して countTokens を呼び出すと、チャットの両方のロール(total_tokens)の合計トークン数が返されます。
  • 次の会話ターンの大きさを把握するには、countTokens を呼び出すときに履歴に追加する必要があります。

マルチモーダル入力トークンをカウントする

マルチモーダル入力でトークンをカウントする際は、次の点に注意してください。

  • 必要に応じて、テキストとファイルに対して countTokens を個別に呼び出すことができます。
  • どちらのトークン カウント オプションでも、ファイルをインライン データとして指定しても、URL を使用して指定しても、同じトークン数が返されます。

画像入力ファイル

画像入力ファイルは、サイズに基づいてトークンに変換されます。

  • 両方の寸法が 384 ピクセル以下の画像入力: 各画像は 258 トークンとしてカウントされます。
  • 1 つまたは両方の寸法が大きい画像入力: 各画像は必要に応じて 768x768 ピクセルのタイルに切り抜かれ、スケーリングされます。各タイルは 258 トークンとしてカウントされます。

動画と音声の入力ファイル

動画と音声の入力ファイルは、次の固定レートでトークンに変換されます。

  • 動画: 1 秒あたり 263 トークン
  • 音声: 1 秒あたり 32 トークン

ドキュメント(PDF など)入力ファイル

PDF 入力ファイルは画像として扱われるため、PDF の各ページは画像と同じ方法でトークン化されます。