
Gemini 3.6 Flash 移行:5 つの API 変更と 1 つの静かな失敗
TL;DRgemini-3.6-flashまたはgemini-3.5-flash-liteへの移行では、リクエストに 5 つの変更が入ります。うち 4 つは HTTP 400 を返すので、すぐに気づきます。残る 1 つは違います。temperature、top_p、top_kは受け付けられ、そのまま無視されます。出力の安定をtemperature=0に頼っているパイプラインなら、頼りにしていた保証が消えたあとも API は 200 OK を返し続けます。まずこの 1 つを直し、それから声の大きい 4 つに取りかかってください。Last verified: 2026-07-21
設定ファイルで model ID を差し替えるだけで、あとはそのまま動くと思っているなら、デプロイする前に最初のセクションを読んでください。
5 つの変更、「いつ気づくか」で並べる
| 変更 | 新モデルで何が起きるか | どう気づくか |
|---|---|---|
temperature、top_p、top_k | 受け付けられ、そのあと無視される | 気づきません。エラーも警告もありません。 |
thinking_budget を thinking_level と同時に送る | リクエスト拒否 | HTTP 400 |
リクエストの最後の turn が model ロール | リクエスト拒否 | HTTP 400 |
call_id と name がない FunctionResponse | リクエスト拒否 | HTTP 400 |
candidate_count | Gemini 3.x では非対応 | リクエスト失敗、またはフィールドが破棄される |
5 つのうち 4 つは自分から声を上げます。統合テストが捕まえ、エラートラッカーが呼び出し、午後いっぱいで直せます。問題を抱えたまま本番に届くのは、最初の 1 つです。
危険な 1 つ:temperature、top_p、top_k は無視されるようになった

エラーを出さずに壊れるパイプラインはどれか
静かな no-op が危険なのは、そのパラメータに依存していた場合だけです。よくある構成は 4 つあります。
- 決定性に頼るパイプライン。 繰り返し呼び出しの結果を一致させるために
temperature=0を設定しているものすべて。モデル出力から作るキャッシュキー、重複排除の処理、下流のステートマシンに結果を渡す分類ジョブなど。この設定はいま無効なので、それが買っていた出力の安定性は、もう買えていません。 - golden file / スナップショットテスト。
temperature=0を固定し、モデル出力を保存済みの期待文字列と diff するテストスイート。モデルを差し替えると不安定になり始めますが、その不安定さは設定の問題ではなくモデル品質の劣化のように見えるため、間違った方向のデバッグに向かわされます。 - 低い温度でつなぎ止めていた構造化出力。 構造化出力を導入せず、代わりに
temperatureをほぼ 0、top_pを絞って、モデルにパース可能な JSON を安定して吐かせていたチーム。2 つのつまみが同時に無効になります。 - ルートごとに調整した設定。 「創造性」スライダーを出しているプロダクトや、「要約」を 1 つの温度で、「ブレインストーム」を別の温度でルーティングしているもの。スライダーは UI 上ではまだ動きます。モデルの中では、もう何も動かしません。
どれもスタックトレースは出しません。出てくるのは、あなたが検証したものとわずかに違う出力です。しかもシステムは自身を健全だと報告します。
ゲートウェイも警告してくれない
ここは慎重なチームでも足をすくわれる部分です。モデルゲートウェイは、各モデルがどのパラメータをサポートするかを記述した機械可読なメタデータを公開しており、ツール類はそのメタデータを読んで何を送るかを決めます。
google/gemini-3.6-flash と google/gemini-3.5-flash-lite の両方について、supported_parameters に temperature、top_p、seed をまだ載せています。ゲートウェイはこれらのフィールドを受け付けて転送します。受け取ったモデル側はそれを無視します。この経路のどこもエラーを出さず、メタデータもそのフィールドが死んでいることを教えてくれません。temperature の代わりになるもの
Google が示す代替は、別のパラメータではありません。system instruction です。欲しい挙動を、サンプリング定数としてではなく、モデルが読むルールとして書くのです。
これは意図の表現方法そのものの変化なので、削除ではなく翻訳してください。
| これまで数字で表していた意図 | いまはどこに書くか |
|---|---|
簡潔で再現可能な回答のための temperature=0 | 必要な形式・長さ・トーンを明記し、前置きなしで答えるルールを加えた system instruction |
| JSON をパース可能に保つための低い温度 | 構造化出力。gemini-3.6-flash と gemini-3.5-flash-lite の両方が対応 |
| 多様性のための高い温度 | candidate_count も無くなったので、1 回の応答で N 個の異なる案を求める指示 |
temperature と candidate_count を両方削除すると、チームが出力の多様性に使っていた仕組みを一度に取り除くことになります。多様性に依存した機能があるなら、必要なのは設定の変更ではなく、本当の再設計です。デプロイ前にすべての呼び出し箇所を見つける方法
設定レイヤーを信用せず、コードベースをパラメータ名で検索してください。これらの値はたいてい、複数の場所で別々の人によって設定されているからです。
# Gemini ネイティブと OpenAI 互換の綴り、およびそれらを載せる設定オブジェクト
grep -rn "temperature\|top_p\|topP\|top_k\|topK\|candidate_count\|candidateCount" \
--include="*.py" --include="*.ts" --include="*.js" --include="*.go" --include="*.java" .
# それらを隠しているラッパー
grep -rn "generation_config\|generationConfig\|GenerateContentConfig\|thinking_budget\|thinkingBudget" .声を上げて失敗する 4 つ
こちらは単純です。API が教えてくれるからです。テストスイートが表面化させた順に直してください。
thinking_budget と thinking_level は同時に指定できない
thinking_budget を、minimal、low、medium、high を取る文字列 enum の thinking_level に置き換えました。1 つのリクエストで両方を送ると 400 が返ります。Google の移行ノートはthinking_budget を thinking_level に置き換えることであり、互換性のために両方を残すことではありません。値を選ぶ際に知っておくべき既定値が 2 つあります。2 つのモデルで異なるからです。
gemini-3.6-flashの既定はmedium。gemini-3.5-flash-liteの既定はminimalで、これはスループット向けに調整されています。
minimal 既定は自律的なサブエージェントとしての利用には向かず、複数ステップのタスクでは tool call を早すぎるタイミングで打ち切ると明言しています。Flash-Lite にコードを書かせたり、ターミナルコマンドを実行させたり、外部 API を呼ばせたりするなら、意図的に medium か high に上げてください。これは、既定値を受け入れることが形式的な手続きではなく、実際のプロダクト判断になる唯一の移行作業です。minimal 既定の Flash-Lite が、3 ステップの通知チェーンで 3 回とも失敗しました。形は毎回まったく同じでした。最初の 2 つの tool を正しく呼び、そこで止まり、最後の通知を送らないまま成功したと報告しました。 エラーもなく、例外もなく、下流サービスが受け入れる整った応答でした。同じモデルを high に上げると、このタスクは毎回通りました。thinking_level を未設定のままにすると、リクエストは失敗しません。やり終えていない作業について、自信たっぷりの答えを返します。 レベルを明示的に設定し、そのうえで、返ってきた応答ではなく、ワークフローが本来生み出すはずだった効果に対してアサーションを書いてください。model turn の prefill はもうできない
model ロールだと、API は 400 を返します。prefill はよく使われる小技でした。{"role": "model", "parts": [{"text": "{"}]} のような途中までの assistant turn を末尾に足して、モデルに JSON の波括弧で始めさせたり、おしゃべりな前置きを抑えたりするものです。すべての FunctionResponse に call_id と name が必要
generateContent API を使う場合、各 FunctionResponse は対応する call_id と関数の name の両方を持たなければなりません。ここで犠牲になりがちなのは手書きの tool ループです。その多くは結果だけ返せば十分だった時代に書かれ、モデルが送ってきたものをそのまま返すのではなく、応答オブジェクトをゼロから組み立て直すからです。call_id を保持し、返す応答にそれを戻します。tool ループをフレームワーク上に組んでいるなら、周りにパッチを当てるのではなくフレームワークを更新してください。candidate_count は無くなった
candidate_count は Gemini 3.x では非対応です。削除してください。複数の答えをサンプリングして最良のものを選ぶために使っていたなら、そのロジックはいまや明示的に書く必要があります。1 回の応答の中で複数の案を求めるか、複数のリクエストを発行してそれぞれ別に課金されるかのどちらかです。変更前 / 変更後:きれいに移行できるリクエスト
非推奨のフィールドをすべて載せた Gemini ネイティブの呼び出しと、移行を生き延びるバージョンを示します。
# 変更前:2.5 世代のモデルでは動くが、3.6 Flash では壊れるか、静かに誤動作する
config = {
"temperature": 0, # いまは無視される、エラーなし
"top_p": 0.95, # いまは無視される、エラーなし
"top_k": 40, # いまは無視される、エラーなし
"candidate_count": 1, # Gemini 3.x では非対応
"thinking_budget": 8192, # thinking_level と同時に送ると 400
}
# 変更後:意図をサンプリング定数から指示へ移した
config = {
"system_instruction": (
"回答は最大 3 文で。平叙文で述べること。"
"前置きを付けず、質問を繰り返さず、追加の提案もしないこと。"
"答えが不確かなら、その旨を 1 文で述べること。"
),
"thinking_level": "medium",
}temperature=0 は、自分自身を説明してくれたことは一度もありません。import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["EVOLINK_API_KEY"],
base_url="https://api.evolink.ai/v1"
)
response = client.chat.completions.create(
model="gemini-3.6-flash",
messages=[
{"role": "system", "content": "回答は最大 3 文で。前置きなし。"},
{"role": "user", "content": "このインシデントレポートを要約してください。"}
]
# temperature も top_p も渡さない:渡しても受け付けられ、下流で無視される
)
print(response.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env["EVOLINK_API_KEY"],
baseURL: "https://api.evolink.ai/v1",
});
const response = await client.chat.completions.create({
model: "gemini-3.6-flash",
messages: [
{ role: "system", content: "回答は最大 3 文で。前置きなし。" },
{ role: "user", content: "このインシデントレポートを要約してください。" },
],
// temperature も top_p も渡さない
});
console.log(response.choices[0].message.content);gemini-3.6-flash です。preview サフィックスも日付スタンプもないので、固定すべき日付付きエイリアスは存在しません。デプロイプロセスが -preview や -001 のバリアントの存在を前提にしているなら、その前提はリクエスト時に崩れます。静かな失敗を捕まえる移行手順
順序が重要です。声の大きいエラーは簡単で、静かなものはそうではないからです。この順序で進めてください。

- まず棚卸し。 上の grep を実行し、sampling parameter が設定されているすべての場所を、設定ストアやダッシュボードも含めて列挙します。それぞれがどの挙動を守っていたかを書き留めます。
- 意図を翻訳する、ただ削除しない。 見つけた
temperatureごとに、それが何のためだったかを判断し、等価な system instruction を書きます。翻訳せずに削除するのは、品質劣化を出荷する手口そのものです。 - 400 を直す。
thinking_budgetをthinking_levelに差し替え、candidate_countを削除し、prefill された model turn を取り除き、すべてのFunctionResponseにcall_idとnameを付けます。 - thinking レベルを意図して選ぶ。 とくに Flash-Lite では、
minimal既定は自律的な複数ステップ作業に向きません。これは移行における最大のコストレバーでもあります。 私たちのタスクセットでは、minimalの 3.6 Flash は、同じモデルのmedium既定より 1 パスあたり 73.6% 安く、mediumでは thinking token が課金対象の出力の 85% を占めました。テストすべきは、あなたのワークロードがこの降格に耐えられるかどうかであって、その節約が本物かどうかではありません。 - 何かを比較する前に、スナップショットテストを新モデルで取り直します。 古い golden file は、もはや効かないパラメータの下で生成されたもので、有効な基準点ではありません。
- 同じタスクセットで両モデルの評価を回し、 合格率だけでなく出力の分布を比較します。静かな挙動変化は、誤答として現れる前に、形式・長さ・冗長さのドリフトとして現れます。
- 実トラフィックで canary し、API のエラー率だけでなく下流のパーサーを監視します。 何かが静かに壊れるとしたら、それは呼び出し自体ではなく、モデルの出力を消費するコードで壊れます。
temperature=0 がまだ効いていた頃に生成した golden file に対して新しい出力を diff すると、どの差分もモデルの問題に見え、しかもそのどれも問題ではありません。Google の移行 skill に最初の一巡をさせる
npx skills add google-gemini/gemini-skills --skill gemini-interactions-api --globalそのあと、コーディング agent の中でプロジェクトに向けます。
/gemini-interactions-api migrate my app to Gemini 3.6 Flash
実行する価値があります。機械的な作業を引き受けてくれます。非推奨フィールドの発見、リクエスト構築の書き換え、呼び出し箇所の更新で、上のステップ 3 の大半をカバーします。
temperature=0 を削除すべきだと分かります。しかし、その値が存在したのは、ある下流サービスが「同じ入力には同じ出力」を前提にしていたからだ、とは分かりませんし、その意図を保つ system instruction を書くこともできません。 skill はコードを一掃する一巡として扱い、意図の翻訳は自分でやってください。廃止スケジュール:選択の余地がなくなるとき
| モデル | 停止日 | 公式の推奨代替 |
|---|---|---|
gemini-2.5-flash | 2026-10-16 | gemini-3.6-flash |
gemini-2.5-flash-lite | 2026-10-16 | gemini-3.1-flash-lite |
gemini-3.1-flash-lite | 2027-05-07 | gemini-3.5-flash-lite |
gemini-3-flash-preview | 停止日は未発表 | gemini-3.6-flash |
gemini-3.6-flash、gemini-3.5-flash-lite | 停止日は未発表 | 該当なし |
gemini-2.5-flash-lite の代替として名指しているのは gemini-3.1-flash-lite であり、新しくリリースされた gemini-3.5-flash-lite ではありません。最新の Lite モデルへ一足飛びに行くのは筋の通った選択ですが、それはあなたの選択であって、文書化された移行パスではなく、しかも 1 世代ではなく 2 世代のジャンプです。そのつもりで計画し、テストしてください。gemini-3-flash-preview を使っているなら、公表された終了日はありませんが、preview モデルはそもそもロードマップの土台にするものではありません。Computer Use:4 つの公式ページ、2 つの答え
いま文書からは決着がつかない能力の問いが 1 つあります。これらのモデルが Computer Use に対応するかどうか、Google 自身の資料で記述が食い違っています。
- Gemini API のモデル文書は 3.6 Flash について Computer Use を対応(preview)と記していますが、同じモデルのエンタープライズプラットフォームページは非対応と載せています。
- 3.5 Flash-Lite については、モデルページは非対応と言い、リリース告知と Gemini 3 開発者ガイドは動くと言っています。
今週ちょうどプロバイダを選び直しているなら
ついでに確認する価値があることが 2 つあります。
- 切り替え期間中、新旧のモデルを並べて動かせますか? 上のステップ 6 はそれを要求します。
gemini-3.5-flashとgemini-3.6-flashを同じタスクセットで動かすのが、いまの構成では面倒なら、その摩擦は次の移行でもそこにあります。そして次は必ずあります。Google は、これらのルールが今後リリースされるすべてのモデルに適用されると言っています。 - 新しいモデルは、どれだけ速く呼べるようになりますか?
gemini-3.6-flashは初日に、preview サフィックスなしで一般提供に到達しました。モデルが出てから、自分のコードがそれを呼べるようになるまでの間隔は、リリースのたびに払うコストです。
model 文字列の変更で済みます。新しいモデルも、すでに使っている同じエンドポイントから利用できます。まずこの特定のモデルの現状を見たいなら、Gemini 3.6 Flash リリーストラッカーに提供状況と model ID の詳細があり、3.6 Flash と 3.5 Flash の比較は、このアップグレードをそもそもやる価値があるかどうかを扱います。これは、安全にやる方法とは別の問いです。gemini-3.6-flash ではもう使えません。FAQ
temperature、top_p、top_k は受け付けられて無視され、エラーも警告もありません。Google は、将来のモデル世代ではこれらのパラメータに HTTP 400 を返すと述べているので、この静けさは一時的ですが、今のところ、それらを載せたリクエストは完全に健全に見えます。minimal、low、medium、high の文字列 enum thinking_level を使います。同じリクエストで thinking_budget と thinking_level を送ると HTTP 400 が返ります。既定は 3.6 Flash が medium、3.5 Flash-Lite が minimal です。gemini-3.1-flash-lite であり、gemini-3.5-flash-lite ではありません。停止日は 2026 年 10 月 16 日です。代わりに 3.5 Flash-Lite へ移ることもできますが、それは 2 世代のジャンプで、文書化されたパスではなくあなた自身の判断です。thinking_level への切り替え、prefill の制限、FunctionResponse の要件、candidate_count の削除は、いずれも gemini-3.5-flash-lite にも当てはまり、Google はこの 2 つ以降にリリースされるすべてのモデルに適用されると述べています。コードの変更はどちらでも同じなので、2 つのうちどちらへ移るかを決める前に移行を始められます。 その選択は別の問いで、Gemini 3.6 Flash と 3.5 Flash-Lite の比較で扱っています。gemini-3.6-flash で、preview サフィックスも日付スタンプもありません。デプロイのツール類が日付付きエイリアスを期待しているなら、リクエスト時に失敗します。出典
- Using the latest Gemini models(Google AI for Developers):非推奨の sampling parameter、
thinking_level、candidate_count、prefill 制限、FunctionResponse要件、移行 skill コマンド - Gemini deprecations(Google AI for Developers):停止日と推奨代替
- Gemini API models(Google AI for Developers):model ID と能力サポートマトリクス
- Gemini 3 開発者ガイド(Google AI for Developers):Gemini 3 のリクエスト挙動と能力
- Gemini 3.6 Flash(Gemini Enterprise Agent Platform)(Google Cloud):エンタープライズ側の能力一覧と、ページに表示されるパラメータ既定値
- Introducing Gemini 3.6 Flash, 3.5 Flash-Lite, and 3.5 Flash Cyber(Google):リリース告知とリリース日
- google-gemini/gemini-skills(GitHub):公式の移行 skill
- OpenRouter models エンドポイント(OpenRouter):ゲートウェイのメタデータが両モデルの対応パラメータとして
temperature、top_p、seedをいまだに列挙、2026-07-21 観測 - EvoLink モデルカタログ、Gemini 3.6 Flash リリーストラッカー、3.6 Flash と 3.5 Flash の比較、Gemini 3.5 Flash と Gemini 3 Flash Preview の移行ガイド、Gemini 3 Pro 廃止移行ガイド、EvoLink API ベース URL


