思考モード

最近の Gemini モデルはすべて、推論と複数ステップの計画能力を大幅に向上させる内部の「思考プロセス」を使用しています。これにより、コーディング、高度な数学、データ分析などの複雑なタスクに非常に効果的です。

思考モデルには、次の構成とオプションがあります。

  • 思考量を制御する
    モデルが実行できる「思考」の量を構成できます。この構成は、レイテンシや費用の削減が優先される場合に特に重要です。また、タスクの難易度の比較を確認して、モデルがどの程度の思考能力を必要とするかを判断します。

    この構成は、思考レベル Gemini 3.x 以降のモデル)または思考予算 Gemini 2.5 モデル)で制御します。

  • 思考の要約を取得する
    思考の要約を有効にして、生成された回答に含めることができます。これらの要約は、モデルの未加工の思考を合成したもので、モデルの内部推論プロセスに関する分析情報を提供します。

  • 思考シグネチャを処理する
    Firebase AI Logic SDK は、思考シグネチャを自動的に処理します。これにより、関数呼び出しを使用する場合に、モデルが前のターンの思考コンテキストにアクセスできるようになります。

思考モデルを使用する際のベスト プラクティスとプロンプトのガイダンスを必ずご確認ください。



思考モデルを使用する

他の Gemini モデルと同様に、思考モデルを使用します。

思考モデルを最大限に活用するには、このページの後半にある思考モデルを使用するためのベスト プラクティスとプロンプトのガイダンスをご覧ください。

この機能をサポートするモデル

最近の Gemini モデルはすべて、この機能をサポートしています。

  • gemini-3.1-pro-preview
  • gemini-3.7-flash(および古い gemini-3.6-flashgemini-3.5-flash
  • gemini-3.5-flash-lite(および以前の gemini-3.1-flash-lite
  • gemini-3-pro-image(別名「Nano Banana Pro」)
  • gemini-3.1-flash-image(別名「Nano Banana 2」)
  • gemini-3.1-flash-lite-image(別名「Nano Banana 2 Lite」)
  • gemini-2.5-pro
  • gemini-2.5-flash
  • gemini-2.5-flash-lite

思考モデルを使用する際のベスト プラクティスとプロンプトのガイダンス

Google AI Studio または Agent  Studio でプロンプトをテストすることをおすすめします。これらのツールでは、思考プロセス全体を確認できます。モデルが逸脱した可能性のある領域を特定し、プロンプトを調整して、より一貫性のある正確なレスポンスを得ることができます。

まず、望ましい結果を示す一般的なプロンプトから始め、モデルがどのように応答を決定するのか、その最初の思考を観察します。レスポンスが期待どおりでない場合は、次のプロンプト手法のいずれかを使用して、モデルがより良いレスポンスを生成できるようにします。

  • 詳しい手順を説明する
  • 入出力ペアの例をいくつか提供する
  • 出力と回答の言い回しと形式に関するガイダンスを提供する
  • 具体的な確認手順を提供する

プロンプトに加えて、次の推奨事項も検討してください。

  • システム指示を設定します。これは、プロンプトまたはエンドユーザーからの詳細な指示がモデルに伝達される前に追加する「前文」のようなものです。システム指示を使用すると、特定のニーズやユースケースに基づいてモデルの動作を制御できます。

  • 思考レベル(または Gemini 2.5 モデルの場合は思考予算)を設定して、モデルが実行できる思考の量を制御します。思考レベルを高く設定すると、モデルは必要に応じてより多くの思考を行うことができます。値を小さくすると、モデルがレスポンスを「考えすぎ」なくなり、実際のレスポンス用にトークン出力上限の多くが予約されるため、レイテンシと費用を削減できます。

  • Firebase コンソールの AI モニタリングを有効にして、思考トークンの数と、思考が有効になっているリクエストのレイテンシをモニタリングします。思考の要約が有効になっている場合は、コンソールに表示されます。コンソールでモデルの詳細な推論を調べて、プロンプトのデバッグと調整を行うことができます。



思考量を制御する

モデルがレスポンスを返す前に実行できる「思考」と推論の量を構成できます。この構成は、レイテンシや費用の削減が優先される場合に特に重要です。

タスクの難易度の比較を確認して、モデルの思考能力がどの程度必要になるかを判断してください。概要は次のとおりです。

  • 複雑でないタスクの場合や、レイテンシや費用の削減が優先される場合は、思考値を低く設定します。
  • 複雑なタスクには、より高い思考値を設定します。

この構成は、思考レベルGemini 3.x 以降のモデル)または思考予算Gemini 2.5 モデル)で制御します。

思考レベル Gemini 3.x 以降のモデル)

Gemini 3.x 以降のモデルがレスポンスを生成するために実行できる思考の量を制御するには、使用できる思考トークンの量に対して思考レベルを指定します。

思考レベルを設定する

Gemini API プロバイダをクリックして、このページでプロバイダ固有のコンテンツとコードを表示します。

GenerativeModel インスタンスの作成の一環として、GenerationConfig の思考レベルを設定します。構成はインスタンスの存続期間中維持されます。リクエストごとに異なる思考レベルを使用する場合は、各レベルで構成された GenerativeModel インスタンスを作成します。

思考レベルでサポートされている値については、このセクションの後半で説明します。

Swift

GenerativeModel インスタンスの作成の一環として、GenerationConfig で思考レベルを設定します。


// ...

// Set the thinking configuration.
// Use a thinking level value appropriate for your model (example value shown here).
let generationConfig = GenerationConfig(
  thinkingConfig: ThinkingConfig(thinkingLevel: .low)
)

// Specify the config as part of creating the `GenerativeModel` instance.
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
  modelName: "GEMINI_3.x_MODEL_NAME",
  generationConfig: generationConfig
)

// ...

Kotlin

GenerativeModel インスタンスの作成の一環として、GenerationConfig のパラメータの値を設定します。


// ...

// Set the thinking configuration.
// Use a thinking level value appropriate for your model (example value shown here).
val generationConfig = generationConfig {
  thinkingConfig = thinkingConfig {
      thinkingLevel = ThinkingLevel.LOW
  }
}

// Specify the config as part of creating the `GenerativeModel` instance.
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
  modelName = "GEMINI_3.x_MODEL_NAME",
  generationConfig,
)

// ...

Java

GenerativeModel インスタンスの作成の一環として、GenerationConfig のパラメータの値を設定します。


// ...

// Set the thinking configuration.
// Use a thinking level value appropriate for your model (example value shown here).
ThinkingConfig thinkingConfig = new ThinkingConfig.Builder()
    .setThinkingLevel(ThinkingLevel.LOW)
    .build();

GenerationConfig generationConfig = GenerationConfig.builder()
    .setThinkingConfig(thinkingConfig)
    .build();

// Specify the config as part of creating the `GenerativeModel` instance.
GenerativeModelFutures model = GenerativeModelFutures.from(
        FirebaseAI.getInstance(GenerativeBackend.googleAI())
                .generativeModel(
                  /* modelName */ "GEMINI_3.x_MODEL_NAME",
                  /* generationConfig */ generationConfig
                );
);

// ...

Web

GenerativeModel インスタンスの作成の一環として、GenerationConfig のパラメータの値を設定します。


// ...

const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Set the thinking configuration.
// Use a thinking level value appropriate for your model (example value shown here).
const generationConfig = {
  thinkingConfig: {
    thinkingLevel: ThinkingLevel.LOW
  }
};

// Specify the config as part of creating the `GenerativeModel` instance.
const model = getGenerativeModel(ai, { model: "GEMINI_3.x_MODEL_NAME", generationConfig });

// ...

Dart

GenerativeModel インスタンスの作成の一環として、GenerationConfig のパラメータの値を設定します。


// ...

// Set the thinking configuration.
// Use a thinking level value appropriate for your model (example value shown here).
final thinkingConfig = ThinkingConfig.withThinkingLevel(ThinkingLevel.low);

final generationConfig = GenerationConfig(
  thinkingConfig: thinkingConfig
);

// Specify the config as part of creating the `GenerativeModel` instance.
final model = FirebaseAI.googleAI().generativeModel(
  model: 'GEMINI_3.x_MODEL_NAME',
  config: generationConfig,
);

// ...

Unity

GenerativeModel インスタンスの作成の一環として、GenerationConfig のパラメータの値を設定します。


// ...

// Set the thinking configuration.
// Use a thinking level value appropriate for your model (example value shown here).
var thinkingConfig = new ThinkingConfig(thinkingLevel: ThinkingLevel.Low);

var generationConfig = new GenerationConfig(
  thinkingConfig: thinkingConfig
);

// Specify the config as part of creating the `GenerativeModel` instance.
var model = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetGenerativeModel(
  modelName: "GEMINI_3.x_MODEL_NAME",
  generationConfig: generationConfig
);

// ...

サポートされている思考レベルの値

次の表に、モデルの thinkingLevel を構成することで、各モデルに設定できる思考レベルの値を示します。

MINIMAL LOW MEDIUM HIGH

モデルはできるだけ少ないトークンを使用します。思考はほとんど行われません。

複雑性の低いタスク

モデルで使用されるトークンが少なく、レイテンシと費用が最小限に抑えられます。

単純なタスクと高スループットのタスク

モデルはバランスの取れたアプローチを使用します

中程度の複雑さのタスク

モデルは最大レベルまでトークンを使用します

深い推論を必要とする複雑なプロンプト

Gemini 3.x Pro
gemini-3.1-pro-preview
(デフォルト)
Gemini 3.x Flash
gemini-3.7-flash
gemini-3.6-flash
gemini-3.5-flash

gemini-3.7-flash 1 ではサポートされていません
(デフォルト)
Gemini 3.x Flash‑Lite
gemini-3.5-flash-lite
gemini-3.1-flash-lite
(デフォルト)
Gemini 3.x Pro Image
gemini-3-pro-image
("Nano Banana Pro")
(デフォルト)
eurosGemini 3.x Flash Image
gemini-3.1-flash-image
("Nano Banana 2")
(デフォルト)
Gemini 3.x Flash‑Lite Image
gemini-3.1-flash-lite-image
("Nano Banana 2 Lite")
(デフォルト)

1 gemini-3.7-flashMINIMAL 思考レベルをサポートしていません。思考レベルを MINIMAL に設定すると、リクエストは 400 エラーで失敗します。



思考予算 Gemini 2.5 モデル)

Gemini 2.5 モデルが回答を生成するために実行できる思考の量を制御するには、使用できる思考トークンの量に対して思考予算を指定します。

思考予算を設定する

Gemini API プロバイダをクリックして、このページでプロバイダ固有のコンテンツとコードを表示します。

Gemini 2.5 モデルの GenerativeModel インスタンスを作成する際に、GenerationConfig で思考予算を設定します。構成はインスタンスの存続期間中維持されます。リクエストごとに異なる思考予算を使用する場合は、各予算で構成された GenerativeModel インスタンスを作成します。

思考予算でサポートされている値については、このセクションで後ほど説明します。

Swift

GenerativeModel インスタンスの作成の一環として、GenerationConfig で思考予算を設定します。


// ...

// Set the thinking configuration.
// Use a thinking budget value appropriate for your model (example value shown here).
let generationConfig = GenerationConfig(
  thinkingConfig: ThinkingConfig(thinkingBudget: 1024)
)

// Specify the config as part of creating the `GenerativeModel` instance.
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
  modelName: "GEMINI_2.5_MODEL_NAME",
  generationConfig: generationConfig
)

// ...

Kotlin

GenerativeModel インスタンスの作成の一環として、GenerationConfig のパラメータの値を設定します。


// ...

// Set the thinking configuration.
// Use a thinking budget value appropriate for your model (example value shown here).
val generationConfig = generationConfig {
  thinkingConfig = thinkingConfig {
      thinkingBudget = 1024
  }
}

// Specify the config as part of creating the `GenerativeModel` instance.
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
  modelName = "GEMINI_2.5_MODEL_NAME",
  generationConfig,
)

// ...

Java

GenerativeModel インスタンスの作成の一環として、GenerationConfig のパラメータの値を設定します。


// ...

// Set the thinking configuration.
// Use a thinking budget value appropriate for your model (example value shown here).
ThinkingConfig thinkingConfig = new ThinkingConfig.Builder()
    .setThinkingBudget(1024)
    .build();

GenerationConfig generationConfig = GenerationConfig.builder()
    .setThinkingConfig(thinkingConfig)
    .build();

// Specify the config as part of creating the `GenerativeModel` instance.
GenerativeModelFutures model = GenerativeModelFutures.from(
        FirebaseAI.getInstance(GenerativeBackend.googleAI())
                .generativeModel(
                  /* modelName */ "GEMINI_2.5_MODEL_NAME",
                  /* generationConfig */ generationConfig
                );
);

// ...

Web

GenerativeModel インスタンスの作成の一環として、GenerationConfig のパラメータの値を設定します。


// ...

const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Set the thinking configuration.
// Use a thinking budget value appropriate for your model (example value shown here).
const generationConfig = {
  thinkingConfig: {
    thinkingBudget: 1024
  }
};

// Specify the config as part of creating the `GenerativeModel` instance.
const model = getGenerativeModel(ai, { model: "GEMINI_2.5_MODEL_NAME", generationConfig });

// ...

Dart

GenerativeModel インスタンスの作成の一環として、GenerationConfig のパラメータの値を設定します。


// ...

// Set the thinking configuration.
// Use a thinking budget value appropriate for your model (example value shown here).
final thinkingConfig