GEMINI LABEN
NANOLITE — Nano Banana 2 Liteが登場しました。Googleで最も速く、最もコスト効率の高いGemini Imageモデルで、軽量な画像生成を安く回したい用途に向いていますOMNIFLASH — Gemini Omni Flashがpublic previewになりました。ネイティブにマルチモーダルなモデルで、企業や開発者が独自の動的な動画ワークフローを構築できますAGENTS — Managed Agentsが拡張されました。background: trueでサーバー側の非同期実行とポーリング、リモートMCPサーバー連携、対話をまたぐ認証情報のリフレッシュに対応しますMEMORY — Memory BankのIngestEvents APIが一般提供になりました。イベントの取り込みとメモリ生成を分離し、コンテンツを継続的にストリームできますTHROUGHPUT — Provisioned Throughputで、同一モデル・同一リージョンに対して最大7件の保留オーダーを提出できるようになりましたDEPRECATE — 画像生成モデルは8月17日に、Gemini Enterprise Agent PlatformのGrok 4.1系は8月20日に停止される予定ですNANOLITE — Nano Banana 2 Liteが登場しました。Googleで最も速く、最もコスト効率の高いGemini Imageモデルで、軽量な画像生成を安く回したい用途に向いていますOMNIFLASH — Gemini Omni Flashがpublic previewになりました。ネイティブにマルチモーダルなモデルで、企業や開発者が独自の動的な動画ワークフローを構築できますAGENTS — Managed Agentsが拡張されました。background: trueでサーバー側の非同期実行とポーリング、リモートMCPサーバー連携、対話をまたぐ認証情報のリフレッシュに対応しますMEMORY — Memory BankのIngestEvents APIが一般提供になりました。イベントの取り込みとメモリ生成を分離し、コンテンツを継続的にストリームできますTHROUGHPUT — Provisioned Throughputで、同一モデル・同一リージョンに対して最大7件の保留オーダーを提出できるようになりましたDEPRECATE — 画像生成モデルは8月17日に、Gemini Enterprise Agent PlatformのGrok 4.1系は8月20日に停止される予定です
記事一覧/高度な活用
高度な活用/2026-05-05上級

Gemini 2.5 Flash の思考モードを実務投入する:コスト・精度・速度のトレードオフを読む

Gemini 2.5 Flash の思考モード(Thinking Mode)を実際のプロジェクトで使い、どのタスクで効果があり、どのタスクでは使わない方がよいかをコスト・精度・レイテンシの観点から整理します。

Gemini 2.5 Flash5思考モード2Thinking ModeAPI11コスト最適化26

Gemini 2.5 Flash に追加された思考モード(Thinking Mode)を見て、「これで全部解決する」と思って全タスクに適用したら、APIコストが前月の3倍になりました。冷静に向き合い直した結果、思考モードが本当に効果を発揮するタスクと、使わない方がいいタスクの境界線がかなり明確になってきたので、整理して共有します。

思考モードの仕組みと料金

Gemini 2.5 Flash の思考モードは、応答を返す前に内部で推論ステップを踏む機能です。通常モードと比べて精度が上がりますが、その分トークン数が増え、レイテンシも伸びます。

API では thinking_config パラメータで制御します。

import google.generativeai as genai
 
genai.configure(api_key="YOUR_GEMINI_API_KEY")
 
model = genai.GenerativeModel("gemini-2.5-flash-preview-04-17")
 
# 思考モードを有効にする
response = model.generate_content(
    "与えられたコードのバグを特定して修正してください。\n\n" + code_content,
    generation_config=genai.GenerationConfig(
        thinking_config=genai.ThinkingConfig(
            thinking_budget=8192,  # 思考に使う最大トークン数
        )
    )
)
 
print(response.text)

thinking_budget は 0(思考なし)から 24576 まで設定できます。0 に設定すると思考を完全に無効化でき、事実上の通常モードになります。

どのタスクで思考モードが効くか

3ヶ月の試行錯誤で見えてきたのは、思考モードが効果を発揮するタスクには共通パターンがあるということです。

効果が大きいタスク:

  • 複数ステップの推論が必要なコードレビュー: 「このコードが特定の条件下でメモリリークする可能性がある」といった、複数の実行パスを追う必要がある分析
  • 要件が曖昧な仕様書からの実装方針導出: 矛盾や抜け漏れを検出しながら整合性のある実装方針を作る作業
  • 複雑なSQLのクエリ最適化: 実行計画を頭の中で追いながら改善案を出すタスク
  • 数学的・論理的な証明や計算: ステップを積み重ねる必要があるもの

効果が薄い(または逆効果になりうる)タスク:

  • 単純な要約・翻訳: 思考フェーズが無駄に長くなり、回答の品質差はほぼない
  • 定型フォーマットへのデータ変換: JSONに変換する、CSVを整形するなど
  • 会話型のチャットボット応答: レイテンシが増すだけで精度向上は限定的
  • 画像の説明生成: 視覚的理解は思考フェーズとの相性があまりよくない

タスクによる切り替えを実装する

実務では思考モードのオン/オフを動的に切り替えるラッパーを作っておくと、コスト管理がしやすくなります。

from enum import Enum
import google.generativeai as genai
 
class TaskComplexity(Enum):
    SIMPLE = "simple"      # 翻訳・要約・フォーマット変換
    MODERATE = "moderate"  # コード生成・説明文作成
    COMPLEX = "complex"    # バグ解析・設計レビュー・複雑な推論
 
THINKING_BUDGET_MAP = {
    TaskComplexity.SIMPLE: 0,      # 思考なし
    TaskComplexity.MODERATE: 2048, # 軽い思考
    TaskComplexity.COMPLEX: 8192,  # 深い思考
}
 
def generate_with_complexity(prompt: str, complexity: TaskComplexity) -> str:
    model = genai.GenerativeModel("gemini-2.5-flash-preview-04-17")
    budget = THINKING_BUDGET_MAP[complexity]
 
    if budget == 0:
        response = model.generate_content(prompt)
    else:
        response = model.generate_content(
            prompt,
            generation_config=genai.GenerationConfig(
                thinking_config=genai.ThinkingConfig(thinking_budget=budget)
            )
        )
 
    return response.text
 
# 使用例
summary = generate_with_complexity(article_text, TaskComplexity.SIMPLE)
bug_analysis = generate_with_complexity(code_with_bug, TaskComplexity.COMPLEX)

thinking_budget=0 にすると完全に思考を無効化できます。単純タスクではこれが最もコストパフォーマンスが高い設定です。

思考の中身を確認する

デバッグに役立つのが、思考の中間プロセス(thinking parts)を取得する方法です。

response = model.generate_content(
    complex_prompt,
    generation_config=genai.GenerationConfig(
        thinking_config=genai.ThinkingConfig(thinking_budget=8192)
    )
)
 
# 思考プロセスと最終回答を分けて取得
for part in response.candidates[0].content.parts:
    if hasattr(part, "thought") and part.thought:
        print("🧠 思考プロセス:")
        print(part.text[:500])  # 長い場合は先頭だけ表示
    else:
        print("💬 最終回答:")
        print(part.text)

思考の中身を見ると、モデルが何を考慮して答えを出しているかが分かります。これが間違った方向を向いている場合は、プロンプトに追加情報を入れることで修正できることが多いです。

コスト削減の実測値

同一のコードレビュータスクを思考モードあり/なしで100件ずつ実行して比較した結果です。

設定平均レイテンシ入力+出力トークンバグ検出率
思考なし(budget=0)2.1秒~1,20061%
軽い思考(budget=2048)4.8秒~2,80078%
深い思考(budget=8192)9.3秒~5,60086%

バグ検出率は「モデルが指摘したバグのうち、実際に修正が必要だったものの割合」です。コードレビューでは思考あり(2048)が最もコストパフォーマンスが高く、それ以上の budget はバグ検出率の伸びに対してコスト増が大きくなりました。

thinking_budget の選び方

実務で安定して使えている目安は以下の通りです。

  • budget=0: 翻訳・要約・データ変換など、「正解が一意に定まるタスク」
  • budget=1024〜2048: コード生成・説明文作成など、「少し考えた方がいいが深い推論は不要なタスク」
  • budget=4096〜8192: バグ解析・仕様検討・複雑なリファクタリング判断など、「複数の可能性を考慮する必要があるタスク」
  • budget=16384以上: 数学的証明や極めて複雑な推論など、「コストより精度が絶対優先のタスク」(ほぼ使わない)

一つのアプリ内で全て同じ設定を使うのではなく、タスクの種類に応じて切り替える設計にすると、コストと精度の両方で満足できる結果になります。

思考モードは「コストをかけて精度を買う」機能

整理すると、思考モードは「追加コストを払って推論精度を上げる」オプションです。全タスクに適用するものではなく、精度の差が結果を左右するタスクにだけ使うのが正しい使い方です。

まず今使っている API 呼び出しのログを確認して、「どのタスクに最もトークンを使っているか」を把握するところから始めてみてください。そのタスクが「深い推論が必要か」を問い直すと、最適な budget の設定が見えてきます。

シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

高度な活用2026-07-15
分類ラベルの近ミスはリトライで直らない — 閉じた語彙を正規化する層を挟んだ実測ノート
responseSchema の enum を外したラベルをリトライで直そうとすると同じ近ミスが返ります。壁紙アプリの30分類バッチで外れ方の分布を測り、別名表と埋め込み最近傍で正規化する受け入れ層を挟んだ実装と実測値をまとめました。
高度な活用2026-07-10
カテゴリを30から34に増やした日 — 8,000枚を全部かけ直さない差分再分類の設計
分類カテゴリを追加したとき、既存資産を全件かけ直す必要はありません。埋め込みで影響ラベルを絞り、確信度マージンで境界資産を拾う差分再分類の実装と実測値をまとめました。
高度な活用2026-07-03
ツール結果が会話を静かに食いつぶす — Gemini Function Calling の巨大レスポンスをハンドル渡しで軽くする設計
Function Calling のツール結果が会話履歴に滞留し、入力トークンを複利で膨らませる問題を分解します。トークン予算つき圧縮とハンドル渡しの2実装で、実測で入力を約1/8に抑えた手順と落とし穴をまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →