Gemini 3.5 Flash の新機能

Gemini 3.5 Flash は一般提供(GA)されており、安定していて、大規模な 本番環境での使用に対応しています。最もインテリジェントな Flash モデルとして、エージェント実行、コーディング、長期的なタスクにおいて、最先端のパフォーマンスを大規模に維持します。

このガイドでは、Gemini 3.5 Flash の改善点、API の変更点、移行に関するガイダンスの概要について説明します。

新しいモデル

モデル モデル ID 説明
Gemini 3.5 Flash gemini-3.5-flash エージェント タスクとコーディング タスクにおいて、最先端のパフォーマンスを維持する最もインテリジェントなモデル。

Gemini 3.5 Flash は、100 万トークンのコンテキスト ウィンドウ、最大 65,000 トークンの出力トークン、思考、Gemini 3 Flash と同じツールとプラットフォーム機能をサポートしています。 コンピュータの使用は現時点ではサポートされていません。

完全な仕様については、モデルの概要をご覧ください。 料金については、料金ページをご覧ください。

クイックスタート

このガイドの例では、すべて GenerateContent API を使用しています。Interactions API もサポートされています。同じ構成オプションと推奨事項が適用されます。

Python

from google import genai

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3.5-flash",
    contents="Explain how parallel agentic execution works in three sentences.",
)
print(response.text)

JavaScript

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

const ai = new GoogleGenAI({});

async function main() {
  const response = await ai.models.generateContent({
    model: "gemini-3.5-flash",
    contents: "Explain how parallel agentic execution works in three sentences.",
  });
  console.log(response.text);
}

main();

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [{
      "parts": [{"text": "Explain how parallel agentic execution works in three sentences."}]
    }]
  }'

最新情報

  • 最先端のパフォーマンスの維持: 最もインテリジェントな Flash モデル。大規模なエージェント タスクとコーディング タスク向けに最適化されています。
  • エージェント実行: サブエージェントのデプロイ、問題解決、大規模な迅速なエージェント ループ。
  • コーディング: 反復的なコーディング サイクル、迅速な探索、プロトタイピングにより、代替パスをテストし、ソリューションを動的に探索できます。
  • 長期的なタスク: 大規模な複数ステップのワークフローとツールの使用。
  • 思考の保持: モデルは、マルチターンの会話全体で中間推論を自動的に維持します。API の変更は必要ありません。
  • 新しいデフォルトの労力レベル: デフォルトの思考労力が high から medium に変更されました。詳細については、新しいデフォルトの労力レベルをご覧ください。
  • low の思考の改善: low が大幅に改善され、コード とエージェント タスクで、ステップ数が少なく、低 レイテンシと低コストで高品質を実現できるようになりました。
  • 一般提供リリース: 大規模な本番環境での使用に対応した安定版モデル。

動作の変更点

新しいデフォルトの労力レベル: medium

デフォルトの思考労力が、Gemini 3 Flash プレビュー版の high から medium に変更されました。medium は、幅広いタスクで非常に優れた結果が得られ、高速で費用対効果が高くなります。複雑な問題の場合、high を使用すると、モデルがより深く思考するようになります。

労力レベル 使用する場面
minimal レスポンス速度を重視して最適化されています。チャットのようなユースケース、迅速な事実に基づく回答、シンプルなツール呼び出し。
low 低レイテンシと少ないステップを必要とするコードとエージェント タスク。ある程度の思考を必要とする分析タスクや書き込みタスクにも適しています。
medium(デフォルト) ほとんどのタスクで最高の品質を実現します。複雑なコードとエージェントのユースケースにおすすめします。
high モデルの思考能力とツール使用能力を最大限に高めます。複雑な推論、難しい数学、最も難しいコードやエージェント タスクに最適です。思考と関数呼び出しを拡張できます。

デフォルトをオーバーライドするには、構成で thinking_level を設定します。

Python

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3.5-flash",
    contents="Prove that the square root of 2 is irrational.",
    config=types.GenerateContentConfig(
        thinking_config=types.ThinkingConfig(thinking_level="high")
    ),
)

print(response.text)

JavaScript

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

const ai = new GoogleGenAI({});

async function main() {
  const response = await ai.models.generateContent({
    model: "gemini-3.5-flash",
    contents: "Prove that the square root of 2 is irrational.",
    config: {
      thinkingConfig: {
        thinkingLevel: "HIGH",
      },
    },
  });
  console.log(response.text);
}

main();

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [{
      "parts": [{"text": "Prove that the square root of 2 is irrational."}]
    }],
    "generationConfig": {
      "thinkingConfig": {
        "thinkingLevel": "HIGH"
      }
    }
  }'

思考の保持

モデルは、マルチターンの会話全体で中間推論を自動的に維持します。会話履歴に推論コンテキストが存在する場合、推論コンテキストが引き継がれるため、反復デバッグやコード リファクタリングなどの複雑な複数ステップのタスクのパフォーマンスが向上します。API の変更は必要ありません。

  • Interactions API: 思考はすでに自動的に保持されています。動作に変更はありません。
  • GenerateContent API: Gemini 3.5 Flash 以降では、会話履歴に思考シグネチャが存在する場合、モデルは以前のすべてのターンの 推論コンテキストを使用します。これを有効にするには、完全な、 変更されていない会話履歴( 思考シグネチャを含む)を contents に渡します。 SDK が自動的に処理します。

Gemini 3.x のパラメータの更新とベスト プラクティス

以下は、Gemini 3.5 Flash を含むすべての Gemini 3.x モデル に適用されます。

  • temperaturetop_ptop_k: デフォルト値を変更しないことを強くおすすめします。Gemini 3 の推論機能は、デフォルト設定に最適化されています。
  • thinking_budget ではなく thinking_level を使用します。
  • 関数呼び出しレスポンスのマッチング: idname、レスポンス数 は前の呼び出しと一致する必要があります。
  • マルチモーダル関数レスポンス: 関数レスポンスの外部ではなく、内部にマルチモーダル コンテンツを含めます。
  • 関数レスポンスのインライン指示: 個別の部分としてではなく、関数 レスポンス テキストに追加します。
  • 不要なツール呼び出しを減らす: 思考レベルを下げるか、 システム指示を試して、エージェント ワークフローでのツール呼び出しを減らします。

コードを更新する方法については、以下のセクションをご覧ください。

サンプリング パラメータ(非推奨)

temperaturetop_ptop_k は、すべての Gemini 3.x モデルで非推奨になりました。Gemini 3 の推論機能は、デフォルト設定に最適化されています。すべてのリクエストからこれらのパラメータを削除してください。

# ⚠️ Remove these parameters (not recommended)
config = types.GenerateContentConfig(
    temperature=0.7,
    top_p=0.9,
    top_k=40
)

決定性を確保するには、特定のユースケースに明示的なルールを設定したシステム指示を定義することをおすすめします。

thinking_budget(非推奨)

生の数値の thinking_budget パラメータは、すべての Gemini 3.x モデルで非推奨になりました。代わりに、thinking_level 文字列列挙型を使用してください。

# ⚠️ Before (not recommended)
config = types.GenerateContentConfig(
    thinking_config=types.ThinkingConfig(thinking_budget=7500)
)

# ✅ After
config = types.GenerateContentConfig(
    thinking_config=types.ThinkingConfig(thinking_level="medium")
)

使用可能な値: minimallowmedium(デフォルト)、high

関数呼び出し: 厳密なレスポンス マッチング

Interactions API では、関数レスポンスが一致しない場合、すでにエラーが発生しています。GenerateContent API ではまだエラーは発生しませんが、レスポンスが一致しない場合、ほとんどの場合、モデルは finish_reason: STOP の空のレスポンスを返します。常に次の規則に従ってください。

要件 詳細
id を含める すべての FunctionResponse に、対応する FunctionCallid を含める必要があります。
name を一致させる レスポンスの name は、呼び出しの name と一致する必要があります。
一致数 受信した FunctionCall ごとに 1 つの FunctionResponse を返します。

Python

# ✅ Include matching id and name in the function response
final_response = client.models.generate_content(
    model="gemini-3.5-flash",
    config=config,
    contents=[
        *previous_contents,
        response.candidates[0].content,
        types.Content(role="user", parts=[
            types.Part.from_function_response(
                name=tool_call.name,
                response={"result": result},
                id=tool_call.id,
            )
        ]),
    ],
)

JavaScript

// ✅ Include matching id and name in the function response
const functionResponsePart = {
  functionResponse: {
    name: toolCall.name,
    response: { result: result },
    id: toolCall.id,
  },
};

const finalResponse = await ai.models.generateContent({
  model: "gemini-3.5-flash",
  contents: [
    ...previousContents,
    { role: "model", parts: [{ functionCall: toolCall }] },
    { role: "user", parts: [functionResponsePart] },
  ],
  config: config,
});

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [
      {"role": "user", "parts": [{"text": "..."}]},
      {"role": "model", "parts": [{"functionCall": {"name": "my_function", "args": {...}}}]},
      {"role": "user", "parts": [{"functionResponse": {"name": "my_function", "id": "call_id", "response": {"result": "..."}}}]}
    ]
  }'

マルチモーダル関数レスポンス

クライアントが関数レスポンスの外部に画像を提供していることがよくあります。これにより、モデルの動作が予期しないものになり(思考の漏洩など)、出力の品質が低下する可能性があります。代わりに、 マルチモーダル関数レスポンス API ドキュメント の推奨事項に従い、 モデルに送信する関数レスポンス部分にマルチモーダル コンテンツを含めます。モデルは、次のターンでこのマルチモーダル コンテンツを処理して、より多くの情報に基づいたレスポンスを生成できます。

Python

# ✅ Include multimodal content in the function response
final_response = client.models.generate_content(
    model="gemini-3.5-flash",
    config=config,
    contents=[
        *previous_contents,
        response.candidates[0].content,
        types.Content(role="user", parts=[
            types.Part.from_function_response(
                name=tool_call.name,
                response={
                    "result": "instrument.jpg",
                    "image": base64_image_data,
                },
                id=tool_call.id,
            )
        ]),
    ],
)

JavaScript

// ✅ Include multimodal content in the function response
const finalResponse = await ai.models.generateContent({
  model: "gemini-3.5-flash",
  contents: [
    ...previousContents,
    { role: "model", parts: [{ functionCall: toolCall }] },
    {
      role: "user",
      parts: [{
        functionResponse: {
          name: toolCall.name,
          id: toolCall.id,
          response: {
            result: "instrument.jpg",
            image: base64ImageData,
          },
        },
      }],
    },
  ],
  config: config,
});

関数レスポンスのインライン指示

クライアントが、関数レスポンスとともに、後続の Parts として追加の指示を提供していることがよくあります。これにより、モデルの動作が予期しないものになり(思考の漏洩など)、出力の品質が低下する可能性があります。代わりに、追加の指示を、2 つの改行で区切って関数レスポンス テキストの末尾に追加します。個別の部分として追加しないでください。

Python

# ✅ Append inline instructions to the end of the function response separated by two newlines
result_text = f"{json.dumps(result)}\n\n<your inline instructions>"

final_response = client.models.generate_content(
    model="gemini-3.5-flash",
    config=config,
    contents=[
        *previous_contents,
        response.candidates[0].content,
        types.Content(role="user", parts=[
            types.Part.from_function_response(
                name=tool_call.name,
                response={"result": result_text},
                id=tool_call.id,
            )
        ]),
    ],
)

JavaScript

// ✅ Append inline instructions to the end of the function response separated by two newlines
const resultText = `${JSON.stringify(result)}\n\n<your inline instructions>`;

const finalResponse = await ai.models.generateContent({
  model: "gemini-3.5-flash",
  contents: [
    ...previousContents,
    { role: "model", parts: [{ functionCall: toolCall }] },
    {
      role: "user",
      parts: [{
        functionResponse: {
          name: toolCall.name,
          id: toolCall.id,
          response: { result: resultText },
        },
      }],
    },
  ],
  config: config,
});

不要なツール呼び出しを減らす

ツール呼び出しが過剰に使用されている場合は、次の 2 つの方法で最小限に抑えることができます。

  1. まず、思考レベルを下げますmediumlowminimal)。思考レベルが高いほど、モデルはより多くのツールを使用して探索と検証を行うため、レベルを下げることでツール呼び出しを減らすことができます。

  2. システム指示を追加する: 思考レベルを調整しても過剰な使用が続く場合は、ツールの使用を制限するプロンプトを検討してください。次に例を示します。

    You have a limited action budget of <n> tool calls. Use them efficiently.
    

移行チェックリスト

Gemini 3 Flash プレビュー版から移行する

  • モデル名を更新する: gemini-3-flash-previewgemini-3.5-flash
  • 料金を確認する。Gemini 3.5 Flash は、Gemini 3 Flash プレビュー版よりも高額です。詳細については、料金ページをご覧ください。
  • 構成から temperaturetop_ptop_k を削除します(非推奨)。
  • thinking_budgetthinking_level に置き換えます。
  • すべての FunctionResponse 部分に id と一致する name を追加します。
  • プロンプトをテストします。デフォルトの労力が highmedium に変更されました。品質、速度、コストを確認してください。
  • 思考の保持がデフォルトでオンになりました。推論コンテキストがターン間で引き継がれるため、パフォーマンスは向上しますが、トークンの使用量が増加する可能性があります。
  • 不要なツール呼び出しを減らす: まず、思考レベル(mediumlowminimal)を下げます。過剰な使用が続く場合は、ツールの使用を制限するシステム指示を追加します。
  • コンピュータの使用は、現時点では Gemini 3.5 Flash でサポートされていません。コンピュータの使用ワークロードの場合は、Gemini 3 Flash プレビュー版を引き続き使用してください。

Gemini 2.5 から移行する

上記のすべてに加えて、次の操作を行います。

  • プロンプトを簡素化します。思考連鎖プロンプト エンジニアリングを使用して 推論を強制していた場合は、代わりに簡単なプロンプトで thinking_level: "medium" または "high" を試してください。
  • PDF とメディアのワークロードをテストします。高密度ドキュメントの解析で特定の動作に依存していた場合は、新しい media_resolution_high 設定をテストして、精度が維持されることを確認してください。Gemini 3 のデフォルトに移行すると、PDF のトークン使用量が増加する可能性がありますが、動画のトークン使用量は減少する可能性があります。リクエストがコンテキスト ウィンドウを超える場合は、media_resolution を明示的に減らしてください。詳細については、 メディアの解像度に関するドキュメントをご覧ください。
  • ツールの組み合わせを活用します。 Google 検索、URL コンテキスト、コード実行、カスタム関数は、同じリクエストで使用できます。
  • マルチモーダル関数レスポンスを使用する場合は、マルチモーダル コンテンツを関数レスポンス部分の内部に移動します。並列に配置しないでください。
  • 関数レスポンスでインライン指示を使用する場合は、個別の部分としてではなく、2 つの改行で区切って関数レスポンス テキストに追加します。
  • Gemini 3.x では、画像セグメンテーションはサポートされていません。セグメンテーション ワークロードの場合は、思考をオフにした Gemini 2.5 Flash または Gemini Robotics-ER 1.6 を引き続き使用してください。

Gemini 3 ファミリーの機能

Gemini 3.5 Flash は、コンピュータの使用を除くすべての Gemini 3 ファミリーの機能を継承しています。 Gemini 3 で導入され、引き継がれた機能は次のとおりです。

次のステップ