GEMINI LABEN
MODEL — Gemini 3.5 Flashが一般提供となり、gemini-flash-latestの実体になりましたAPI — Interactions APIが一般提供となり、Geminiモデルとエージェントを扱う主要APIになりましたAGENT — Managed Agentsが公開プレビューで提供され、隔離Linux環境で自律エージェントを動かせますAPI — バックグラウンド実行が加わり、長時間処理を投げて結果を後から受け取れますSEARCH — File Searchがgemini-embedding-2で画像もそのまま検索できるようになりましたNOTICE — 6/19以降、未制限APIキーからのリクエストが遮断されるようになりましたMODEL — Gemini 3.5 Flashが一般提供となり、gemini-flash-latestの実体になりましたAPI — Interactions APIが一般提供となり、Geminiモデルとエージェントを扱う主要APIになりましたAGENT — Managed Agentsが公開プレビューで提供され、隔離Linux環境で自律エージェントを動かせますAPI — バックグラウンド実行が加わり、長時間処理を投げて結果を後から受け取れますSEARCH — File Searchがgemini-embedding-2で画像もそのまま検索できるようになりましたNOTICE — 6/19以降、未制限APIキーからのリクエストが遮断されるようになりました
記事一覧/高度な活用
高度な活用/2026-06-29上級

Gemini エージェントに3つのツール経路を持たせたら、間違った経路を静かに選んでいたとき

Function Calling・Code Execution・Grounding を1つのエージェントに載せると、モデルが間違った経路を選んでも出力はもっともらしいまま返ります。経路選択を計測し、フェーズ分離と検証ゲートで矯正する運用設計を、動くコードでまとめました。

gemini-api258function-calling19code-execution3grounding6agent8observability8

プレミアム記事

ある朝、自動で回しているレポート生成のログを眺めていて、出力そのものは毎回きれいに揃っているのに、数字だけがどこか古いことに気づきました。エラーは一件も出ていません。例外も握りつぶしていません。それでも、本来なら外部 API から取ってくるはずの最新値が、モデルの記憶から生成された「それらしい数字」に静かにすり替わっていました。

原因は、1つのエージェントに Function Calling・Code Execution・Grounding の3つの経路を持たせたことでした。経路が複数あると、モデルは「どれを使うか」を自分で選びます。そして選択を誤っても、出力は破綻しません。むしろ、もっともらしく完成して返ってきます。これが厄介なところです。失敗が例外ではなく、正常に見える応答として現れるのです。

この記事は、その「静かな誤経路」を検知して矯正するために私が組み直した設計のメモです。公式ドキュメントは各ツールを個別に説明してくれますが、3つを束ねたときに何が壊れるかは、自分で計測しないと見えてきませんでした。

なぜ経路選択は静かに間違うのか

3つのツールは、見た目が似ていても解く問題が違います。Function Calling は外部リソースへの手であり、データベースや REST API へのアクセスを担います。Code Execution はモデルが Python を書いて自分で走らせる仕組みで、数値計算や集計に向きます。Grounding with Google Search は学習データに無い「今」の情報を取りに行きます。

問題は、これらの境界が言葉のうえで曖昧なことです。「最新の売上を分析して」という指示は、Grounding でニュースを探すべきか、Function Calling で社内 API を叩くべきか、Code Execution で手元のデータを集計すべきか、文面だけでは一意に決まりません。モデルは確率的に1つを選び、選んだ経路の中で破綻のない答えを作ります。だから、誤りは「空欄」や「例外」ではなく「もっともらしい誤答」になります。

さらに2026年時点でも、Grounding と独自の Function Calling は同一リクエストで併用できないという制約があります。これを知らずに両方を tools に渡すと、片方が黙って効かなくなる。エラーが分かりにくいので、多くの人がここで一度つまずきます。

まず計測する — 構造化トレースを通す

矯正の前に、何が起きているかを見えるようにします。私が最初に入れたのは、1リクエストにつき「どの経路を、なぜ、何回試したか」を1行の構造化ログとして残すことでした。

import json
import time
import logging
from dataclasses import dataclass, asdict, field
 
logger = logging.getLogger("agent.route")
 
@dataclass
class RouteTrace:
    request_id: str
    intent: str = ""           # 分類された意図
    route: str = ""            # grounding / function / code
    fallback_count: int = 0    # フォールバック回数
    grounded_sources: int = 0  # 実際に参照したソース数
    verified: bool = False     # 検証ゲートを通ったか
    latency_ms: int = 0
    notes: list[str] = field(default_factory=list)
 
    def emit(self):
        # 1リクエスト = 1行。後から集計しやすい形にする
        logger.info(json.dumps(asdict(self), ensure_ascii=False))

ポイントは grounded_sources を必ず記録することです。Grounding 経路を選んだはずなのに参照ソースが 0 件なら、それはモデルが検索結果ではなく記憶から答えた疑いが濃い。冒頭の「古い数字」は、まさにこのフィールドが 0 のまま通っていました。計測を入れて初めて、全リクエストのうち約 18% が「Grounding を選んだのにソース 0 件」だったと分かりました。見えなければ直せません。

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

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
「どの経路を選び、何回フォールバックしたか」を後から追える構造化トレースの入れ方
Grounding と Function Calling を同時に使えない制約をフェーズ分離で回避し、経路を明示制御する設計
もっともらしく間違う出力を止める、経路ごとの検証ゲートと再ルーティングの実装
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

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

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

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

関連記事

API / SDK2026-03-20
Gemini API × Python で AI データ分析エージェントを構築する — Code Execution・Function Calling・Structured Output 統合ガイド
Gemini API の Code Execution、Function Calling、Structured Output を組み合わせ、CSV/Excel を自動解析し可視化・レポート生成まで行う AI データ分析エージェントを Python で構築する実践ガイド。
高度な活用2026-04-26
ADKに頼らない Gemini API カスタムエージェントループ設計ガイド — ツール呼び出し・メモリ・並列実行の本番実装
Google ADKを使わずにGemini APIでカスタムエージェントループを実装する完全ガイド。ツール呼び出し・会話メモリ・並列実行・エラー回復まで、本番環境で稼働する自律AIエージェントの設計パターンを詳解します。
高度な活用2026-04-20
Gemini API 本番アーキテクチャ設計2026 — スケーラブルで安定した AI システムを構築する設計パターン集
Gemini APIを本番運用するための設計パターンを徹底解説。レジリエントなAPIクライアント、多層キャッシング、マルチテナント設計、観測可能性、コスト制御まで実装コード付きで解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →