Gemini 3 デベロッパー ガイド

Gemini 3 は、最先端の推論を基盤として構築された、Google 史上最もインテリジェントなモデル ファミリーです。エージェント ワークフロー、自律型コーディング、複雑なマルチモーダル タスクをマスターして、あらゆるアイデアを実現できるように設計されています。このガイドでは、Gemini 3 モデル ファミリーの主な機能と、その機能を最大限に活用する方法について説明します。

Gemini 3 Pro は、デフォルトで動的思考を使用してプロンプトを推論します。複雑な推論が必要ない場合に、より高速で低レイテンシのレスポンスを得るには、モデルの思考レベルを low に制限します。

Python

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3-pro-preview",
    contents="Find the race condition in this multi-threaded C++ snippet: [code here]",
)

print(response.text)

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

async function run() {
  const response = await ai.models.generateContent({
    model: "gemini-3-pro-preview",
    contents="Find the race condition in this multi-threaded C++ snippet: [code here]",
  });

  console.log(response.text);
}

run();

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-preview:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [{
      "parts": [{"text": "Find the race condition in this multi-threaded C++ snippet: [code here]"}]
    }]
  }'

探索

Gemini 3 アプレットの概要

Gemini 3 アプリのコレクションで、このモデルが高度な推論、自律的なコーディング、複雑なマルチモーダル タスクをどのように処理するかをご覧ください。

Gemini 3 のご紹介

Gemini 3 Pro は、この新しいシリーズの最初のモデルです。gemini-3-pro-preview は、幅広い世界知識と、複数のモダリティにわたる高度な推論を必要とする複雑なタスクに最適です。

モデル ID コンテキスト ウィンドウ(入力 / 出力) ナレッジ カットオフ 料金(入力 / 出力)*
gemini-3-pro-preview 100 万 / 6 万 4 千 2025 年 1 月 $2 / $12(<200k トークン)
$4 / $18(>200k トークン)

* 料金は 100 万トークンあたりです。記載されている価格は標準テキストのものです。マルチモーダル入力の料金は異なる場合があります。

レート制限、バッチ料金、その他の詳細については、モデルのページをご覧ください。

Gemini 3 の新しい API 機能

Gemini 3 では、レイテンシ、費用、マルチモーダル忠実度をより詳細に制御できるように設計された新しいパラメータが導入されています。

思考レベル

thinking_level パラメータは、モデルがレスポンスを生成する前の内部推論プロセスの最大深度を制御します。Gemini 3 は、これらのレベルを厳密なトークン保証ではなく、思考の相対的な許容範囲として扱います。thinking_level が指定されていない場合、Gemini 3 Pro はデフォルトで high になります。

  • low: レイテンシと費用を最小限に抑えます。簡単な指示の実行、チャット、高スループット アプリケーションに最適
  • medium: (近日提供予定)、リリース時にはサポートされません
  • high(デフォルト): 推論の深さを最大化します。モデルが最初のトークンに到達するまでに時間がかかることがありますが、出力はより慎重に推論されます。

メディアの解像度

Gemini 3 では、media_resolution パラメータを使用してマルチモーダル ビジョン処理をきめ細かく制御できます。解像度が高いほど、モデルが細かいテキストを読み取ったり、小さな詳細を識別したりする能力は向上しますが、トークンの使用量とレイテンシが増加します。media_resolution パラメータは、入力画像または動画フレームごとに割り当てられるトークンの最大数を決定します。

個々のメディア パートごと、またはグローバルに(generation_config 経由で)解像度を media_resolution_lowmedia_resolution_mediummedia_resolution_high に設定できるようになりました。指定しない場合、モデルはメディアタイプに基づいて最適なデフォルトを使用します。

推奨設定

メディアタイプ 推奨される設定 最大トークン数 使用ガイダンス
画像 media_resolution_high 1120 品質を最大限に高めるため、ほとんどの画像分析タスクにおすすめします。
PDF media_resolution_medium 560 ドキュメントの理解に最適です。通常、品質は medium で飽和します。high に増やしても、標準的なドキュメントの OCR 結果が改善されることはほとんどありません。
動画(一般) media_resolution_low(または media_resolution_medium 70(フレームごと) 注: 動画の場合、コンテキストの使用を最適化するために、lowmedium の設定は同じ(70 トークン)として扱われます。ほとんどのアクション認識タスクと説明タスクでは、この対応で十分です。
動画(テキスト中心) media_resolution_high 280(フレームあたり) ユースケースで密度の高いテキスト(OCR)や動画フレーム内の細部を読み取る場合にのみ必要です。

Python

from google import genai
from google.genai import types
import base64

# The media_resolution parameter is currently only available in the v1alpha API version.
client = genai.Client(http_options={'api_version': 'v1alpha'})

response = client.models.generate_content(
    model="gemini-3-pro-preview",
    contents=[
        types.Content(
            parts=[
                types.Part(text="What is in this image?"),
                types.Part(
                    inline_data=types.Blob(
                        mime_type="image/jpeg",
                        data=base64.b64decode("..."),
                    ),
                    media_resolution={"level": "media_resolution_high"}
                )
            ]
        )
    ]
)

print(response.text)

JavaScript

import { GoogleGenAI } from "@google/genai";

// The media_resolution parameter is currently only available in the v1alpha API version.
const ai = new GoogleGenAI({ apiVersion: "v1alpha" });

async function run() {
  const response = await ai.models.generateContent({
    model: "gemini-3-pro-preview",
    contents: [
      {
        parts: [
          { text: "What is in this image?" },
          {
            inlineData: {
              mimeType: "image/jpeg",
              data: "...",
            },
            mediaResolution: {
              level: "media_resolution_high"
            }
          }
        ]
      }
    ]
  });

  console.log(response.text);
}

run();

REST

curl "https://generativelanguage.googleapis.com/v1alpha/models/gemini-3-pro-preview:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [{
      "parts": [
        { "text": "What is in this image?" },
        {
          "inlineData": {
            "mimeType": "image/jpeg",
            "data": "..."
          },
          "mediaResolution": {
            "level": "media_resolution_high"
          }
        }
      ]
    }]
  }'

温度

Gemini 3 では、温度パラメータをデフォルト値の 1.0 に設定しておくことを強くおすすめします。

以前のモデルでは、温度を調整して創造性と決定論のバランスを取ることで、パフォーマンスが向上することがよくありましたが、Gemini 3 の推論機能はデフォルト設定で最適化されています。温度を変更すると(1.0 未満に設定すると)、特に複雑な数学的タスクや推論タスクで、ループやパフォーマンスの低下などの予期しない動作が発生する可能性があります。

思考シグネチャ

Gemini 3 は、思考シグネチャを使用して、API 呼び出し全体で推論コンテキストを維持します。これらのシグネチャは、モデルの内部的な思考プロセスを暗号化したものです。モデルが推論機能を維持できるようにするには、リクエストでこれらのシグネチャを、受信したとおりにモデルに返す必要があります。

  • 関数呼び出し(厳格): API は「現在のターン」に対して厳格な検証を実施します。署名がないと、400 エラーが発生します。
  • テキスト/チャット: 検証は厳密に実施されませんが、シグネチャを省略すると、モデルの推論と回答の品質が低下します。

関数呼び出し(厳格な検証)

Gemini が functionCall を生成するとき、次のターンでツールの出力を正しく処理するために thoughtSignature に依存します。[Current Turn] には、最後の標準の User text メッセージ以降に発生したすべての Model(functionCall)ステップと User(functionResponse)ステップが含まれます。

  • 単一の関数呼び出し: functionCall 部分には署名が含まれます。返品する必要があります。
  • 並列関数呼び出し: リストの最初の functionCall 部分のみにシグネチャが含まれます。パーツは受け取った順序で返す必要があります。
  • マルチステップ(順次): モデルがツールを呼び出し、結果を受け取り、別のツールを呼び出す(同じターン内)場合、両方の関数呼び出しにシグネチャがあります。履歴内の累積されたすべてのシグネチャを返す必要があります。

テキストとストリーミング

標準のチャットやテキスト生成では、署名が必ずしも付加されるとは限りません。

  • 非ストリーミング: レスポンスの最終コンテンツ部分に thoughtSignature が含まれる場合がありますが、常に含まれるとは限りません。返品された場合は、最高のパフォーマンスを維持するために返品する必要があります。
  • ストリーミング: シグネチャが生成された場合、空のテキスト部分を含む最終チャンクで到着する可能性があります。テキスト フィールドが空の場合でも、ストリーム パーサーが署名を確認するようにします。

コードの例

マルチステップ関数呼び出し(シーケンシャル)

ユーザーが 2 つの別々の手順(フライトの確認 -> タクシーの予約)を必要とする質問を 1 回で行っています。

ステップ 1: モデルがフライトツールを呼び出します。
モデルはシグネチャ <Sig_A> を返します。

// Model Response (Turn 1, Step 1)
  {
    "role": "model",
    "parts": [
      {
        "functionCall": { "name": "check_flight", "args": {...} },
        "thoughtSignature": "<Sig_A>" // SAVE THIS
      }
    ]
  }

ステップ 2: ユーザーがフライト結果を送信する
モデルの思考の流れを維持するために、<Sig_A> を返送する必要があります。

// User Request (Turn 1, Step 2)
[
  { "role": "user", "parts": [{ "text": "Check flight AA100..." }] },
  { 
    "role": "model", 
    "parts": [
      { 
        "functionCall": { "name": "check_flight", "args": {...} }, 
        "thoughtSignature": "<Sig_A>" // REQUIRED
      } 
    ]
  },
  { "role": "user", "parts": [{ "functionResponse": { "name": "check_flight", "response": {...} } }] }
]

ステップ 3: モデルがタクシー ツールを呼び出す
モデルは <Sig_A> を介してフライトの遅延を記憶し、タクシーを予約することにしました。新しい署名 <Sig_B> を生成します。

// Model Response (Turn 1, Step 3)
{
  "role": "model",
  "parts": [
    {
      "functionCall": { "name": "book_taxi", "args": {...} },
      "thoughtSignature": "<Sig_B>" // SAVE THIS
    }
  ]
}

ステップ 4: ユーザーがタクシーの結果を送信する
ターンを完了するには、チェーン全体(<Sig_A><Sig_B>)を返送する必要があります。

// User Request (Turn 1, Step 4)
[
  // ... previous history ...
  { 
    "role": "model", 
    "parts": [
       { "functionCall": { "name": "check_flight", ... }, "thoughtSignature": "<Sig_A>" } 
    ]
  },
  { "role": "user", "parts": [{ "functionResponse": {...} }] },
  { 
    "role": "model", 
    "parts": [
       { "functionCall": { "name": "book_taxi", ... }, "thoughtSignature": "<Sig_B>" } 
    ]
  },
  { "role": "user", "parts": [{ "functionResponse": {...} }] }
]

並列関数呼び出し

ユーザーが「パリとロンドンの天気を調べて」と尋ねます。モデルは 1 つのレスポンスで 2 つの関数呼び出しを返します。

// User Request (Sending Parallel Results)
[
  {
    "role": "user",
    "parts": [
      { "text": "Check the weather in Paris and London." }
    ]
  },
  {
    "role": "model",
    "parts": [
      // 1. First Function Call has the signature
      {
        "functionCall": { "name": "check_weather", "args": { "city": "Paris" } },
        "thoughtSignature": "<Signature_A>" 
      },
      // 2. Subsequent parallel calls DO NOT have signatures
      {
        "functionCall": { "name": "check_weather", "args": { "city": "London" } }
      } 
    ]
  },
  {
    "role": "user",
    "parts": [
      // 3. Function Responses are grouped together in the next block
      {
        "functionResponse": { "name": "check_weather", "response": { "temp": "15C" } }
      },
      {
        "functionResponse": { "name": "check_weather", "response": { "temp": "12C" } }
      }
    ]
  }
]

テキスト/コンテキスト内推論(検証なし)

ユーザーが、外部ツールを使用せずにコンテキスト内の推論が必要な質問をします。厳密には検証されませんが、シグネチャを含めることで、モデルはフォローアップの質問に対する推論チェーンを維持できます。

// User Request (Follow-up question)
[
  { 
    "role": "user", 
    "parts": [{ "text": "What are the risks of this investment?" }] 
  },
  { 
    "role": "model", 
    "parts": [
      {
        "text": "I need to calculate the risk step-by-step. First, I'll look at volatility...",
        "thoughtSignature": "<Signature_C>" // Recommended to include
      }
    ]
  },
  { 
    "role": "user", 
    "parts": [{ "text": "Summarize that in one sentence." }] 
  }
]

他のモデルからの移行

別のモデル(Gemini 2.5)を呼び出すか、Gemini 3 で生成されていないカスタム関数呼び出しを挿入すると、有効なシグネチャは得られません。

これらの特定のシナリオで厳密な検証をバイパスするには、この特定のダミー文字列 "thoughtSignature": "context_engineering_is_the_way_to_go" をフィールドに入力します。

ツールを使用した構造化出力

Gemini 3 では、構造化された出力を、Google 検索によるグラウンディングURL コンテキストコード実行などの組み込みツールと組み合わせることができます。

Python

from google import genai
from google.genai import types
from pydantic import BaseModel, Field
from typing import List

class MatchResult(BaseModel):
    winner: str = Field(description="The name of the winner.")
    final_match_score: str = Field(description="The final match score.")
    scorers: List[str] = Field(description="The name of the scorer.")

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3-pro-preview",
    contents="Search for all details for the latest Euro.",
    config={
        "tools": [
            {"google_search": {}},
            {"url_context": {}}
        ],
        "response_mime_type": "application/json",
        "response_json_schema": MatchResult.model_json_schema(),
    },  
)

result = MatchResult.model_validate_json(response.text)
print(result)

JavaScript

import { GoogleGenAI } from "@google/genai";
import { z } from "zod";
import { zodToJsonSchema } from "zod-to-json-schema";

const ai = new GoogleGenAI({});

const matchSchema = z.object({
  winner: z.string().describe("The name of the winner."),
  final_match_score: z.string().describe("The final score."),
  scorers: z.array(z.string()).describe("The name of the scorer.")
});

async function run() {
  const response = await ai.models.generateContent({
    model: "gemini-3-pro-preview",
    contents: "Search for all details for the latest Euro.",
    config: {
      tools: [
        { googleSearch: {} },
        { urlContext: {} }
      ],
      responseMimeType: "application/json",
      responseJsonSchema: zodToJsonSchema(matchSchema),
    },
  });

  const match = matchSchema.parse(JSON.parse(response.text));
  console.log(match);
}

run();

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-preview:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [{
      "parts": [{"text": "Search for all details for the latest Euro."}]
    }],
    "tools": [
      {"googleSearch": {}},
      {"urlContext": {}}
    ],
    "generationConfig": {
        "responseMimeType": "application/json",
        "responseJsonSchema": {
            "type": "object",
            "properties": {
                "winner": {"type": "string", "description": "The name of the winner."},
                "final_match_score": {"type": "string", "description": "The final score."},
                "scorers": {
                    "type": "array",
                    "items": {"type": "string"},
                    "description": "The name of the scorer."
                }
            },
            "required": ["winner", "final_match_score", "scorers"]
        }
    }
  }'

Gemini 2.5 から移行する

Gemini 3 は、これまでで最も高性能なモデル ファミリーであり、Gemini 2.5 Pro から段階的に改善されています。移行する際は、次の点に注意してください。

  • 思考: 以前に複雑なプロンプト エンジニアリング(Chain-of-thought など)を使用して Gemini 2.5 に推論を強制していた場合は、thinking_level: "high" と簡略化されたプロンプトを使用して Gemini 3 を試してください。
  • 温度設定: 既存のコードで温度が明示的に設定されている場合(特に決定論的出力の低い値に設定されている場合)、このパラメータを削除し、Gemini 3 のデフォルト値である 1.0 を使用して、複雑なタスクでの潜在的なループの問題やパフォーマンスの低下を回避することをおすすめします。
  • PDF とドキュメントの理解: PDF のデフォルトの OCR 解像度が変更されました。密なドキュメントの解析に特定の動作を使用していた場合は、新しい media_resolution_high 設定をテストして、精度が維持されることを確認してください。
  • トークンの消費量: Gemini 3 Pro のデフォルトに移行すると、PDF のトークン使用量は増加する可能性がありますが、動画のトークン使用量は減少します。デフォルトの解像度が高くなったことでリクエストがコンテキスト ウィンドウを超えるようになった場合は、メディアの解像度を明示的に下げることをおすすめします。
  • 画像セグメンテーション: 画像セグメンテーション機能(オブジェクトのピクセルレベルのマスクを返す)は、Gemini 3 Pro ではサポートされていません。ネイティブ画像セグメンテーションが必要なワークロードには、思考をオフにした Gemini 2.5 Flash または Gemini Robotics-ER 1.5 を引き続き使用することをおすすめします。

OpenAI の互換性

OpenAI 互換レイヤを使用しているユーザーの場合、標準パラメータは Gemini の同等のパラメータに自動的にマッピングされます。

  • reasoning_effort(OAI)は thinking_level(Gemini)にマッピングされます。reasoning_effort の中程度は thinking_level の高にマッピングされます。

プロンプトのベスト プラクティス

Gemini 3 は推論モデルであるため、プロンプトの作成方法が変わります。

  • 正確な指示: 入力プロンプトは簡潔にしてください。Gemini 3 は、明確で直接的な指示に最もよく応答します。古いモデルで使用される冗長または過度に複雑なプロンプト エンジニアリング手法を過度に分析する可能性があります。
  • 出力の冗長性: デフォルトでは、Gemini 3 は冗長性が低く、直接的で効率的な回答を好みます。ユースケースでより会話的な「おしゃべり」なペルソナが必要な場合は、プロンプトでモデルを明示的に誘導する必要があります(例: 「これを親切で話し好きなアシスタントとして説明してください」)。
  • コンテキスト管理: 大規模なデータセット(書籍全体、コードベース、長い動画など)を扱う場合は、データ コンテキストの後に、プロンプトの最後に具体的な指示や質問を配置します。「上記の情報に基づいて...」などのフレーズで質問を始め、モデルの推論を提示されたデータに固定します。

プロンプト設計戦略の詳細については、プロンプト エンジニアリング ガイドをご覧ください。

よくある質問

  1. Gemini 3 Pro の知識のカットオフとは何ですか?Gemini 3 の知識のカットオフは 2025 年 1 月です。最新の情報については、検索グラウンディング ツールを使用してください。

  2. コンテキスト ウィンドウの上限はどのくらいですか?Gemini 3 Pro は、100 万トークンの入力コンテキスト ウィンドウと最大 64,000 トークンの出力をサポートしています。

  3. Gemini 3 Pro の無料枠はありますか?Google AI Studio でモデルを無料でお試しいただけますが、現在、Gemini API の gemini-3-pro-preview には無料枠はありません。

  4. 以前の thinking_budget コードは引き続き機能しますか?はい。下位互換性を維持するために thinking_budget は引き続きサポートされますが、パフォーマンスの予測可能性を高めるために thinking_level への移行をおすすめします。同じリクエストで両方を使用しないでください。

  5. Gemini 3 は Batch API をサポートしていますか?はい。Gemini 3 は Batch API をサポートしています。

  6. コンテキスト キャッシュ保存はサポートされていますか?はい。Gemini 3 ではコンテキスト キャッシュ保存がサポートされています。キャッシュ保存を開始するために必要な最小トークン数は 2,048 個です。

  7. Gemini 3 でサポートされているツールを教えてください。Gemini 3 は、Google 検索ファイル検索コード実行URL コンテキストをサポートしています。独自のカスタムツール用の標準の関数呼び出しもサポートしています。Google マップパソコンの使用は現在サポートされていません。

次のステップ

  • Gemini 3 Cookbook を使ってみる
  • 思考レベルと、思考予算から思考レベルに移行する方法については、専用のクックブック ガイドをご覧ください。