GEMINI LABEN
API — Gemini 3.5 Flashが一般提供。gemini-flash-latestの実体となり、エージェント・コーディングで持続的に高性能を出しますAGENT — Managed Agentsが公開プレビュー。Googleホストの隔離Linuxサンドボックスでステートフルな自律エージェントを構築できますSEARCH — File Searchがマルチモーダル対応。gemini-embedding-2で画像をそのまま埋め込み・検索できますRESEARCH — Deep Researchの新版が協調プランニング・可視化・MCPサーバー連携・File Searchに対応しましたSHEETS — Gemini in Sheetsが周辺データ構造を解析し、数式エラーを1クリックで診断・修正しますROADMAP — Gemini 3.5 Proは品質調整のため7月へ延期。最新の主力はFlash系ですAPI — Gemini 3.5 Flashが一般提供。gemini-flash-latestの実体となり、エージェント・コーディングで持続的に高性能を出しますAGENT — Managed Agentsが公開プレビュー。Googleホストの隔離Linuxサンドボックスでステートフルな自律エージェントを構築できますSEARCH — File Searchがマルチモーダル対応。gemini-embedding-2で画像をそのまま埋め込み・検索できますRESEARCH — Deep Researchの新版が協調プランニング・可視化・MCPサーバー連携・File Searchに対応しましたSHEETS — Gemini in Sheetsが周辺データ構造を解析し、数式エラーを1クリックで診断・修正しますROADMAP — Gemini 3.5 Proは品質調整のため7月へ延期。最新の主力はFlash系です
記事一覧/高度な活用
高度な活用/2026-06-27上級

Gemini Deep Research のレポートを鵜呑みにしない — MCP連携時に引用元を機械検証してから取り込む受け入れゲート

Deep ResearchがMCPで自前データに繋がった今、返ってきたレポートを自動取り込みする前に、引用が信頼ソースへ解決できるかを機械検証する受け入れゲートを実装します。許可リスト・根拠カバレッジ率・却下理由の記録まで動くコードで設計します。

Gemini71Deep Research6MCP3File Search3検証

プレミアム記事

2026年6月27日の更新で、Deep Research の新版が MCP サーバー連携と File Search に対応しました。これまで公開情報を広く調べてくれる機能だったものが、自前のデータストアや手元の MCP ツールを「根拠」として参照できるようになった、という変化です。個人開発で運用の自動化を回している立場からすると、これは素直に嬉しい更新でした。自分のドキュメントやログを根拠に調べ物をさせて、その結果をそのまま下書きパイプラインに流せそうに見えるからです。

ただ、実際に組み込もうとして最初に立ち止まったのは「返ってきたレポートを、本当にそのまま取り込んでよいのか」という点でした。Deep Research の出力は引用つきの散文です。引用がついていると一見もっともらしく読めますが、その引用が本当に自分の信頼しているソースに解決できるのか、それとも外部の出所不明なページや、実体のない参照に紐づいているのかは、文面を眺めただけでは判別できません。無人で取り込む構成では、ここが抜けると「もっともらしいが根拠の怪しい文章」が静かに蓄積していきます。

以下では、Deep Research のレポートを自動取り込みする手前に挟む「受け入れゲート」を実装します。中身は、引用を構造で取り出し、信頼ソースの許可リストへ解決できるかを確かめ、根拠カバレッジ率がしきい値を下回ったら取り込みを止める、という3段構えです。ゲートのコアは外部 API の形に依存しない素の検証ロジックなので、Deep Research の SDK が細部で変わっても作り直さずに済みます。

そのまま信じてしまう構成の、どこが危ういのか

Deep Research を MCP に繋ぐと、調査の根拠として「自分の File Search ストアの文書」と「外部 Web」の両方が混ざり得ます。レポート本文には主張があり、その主張に引用が添えられます。問題は、引用の出所が三種類に分かれることです。ひとつは自分の信頼ソース(許可リストに載っている File Search の文書 ID や自分が許可したドメイン)。ふたつめは外部の知らないドメイン。みっつめは、解決しようとしても実体に辿り着けない引用です。

無人取り込みで事故るのは、二番目と三番目が混じったまま「引用あり=信頼できる」と扱ってしまうときです。とくに三番目は厄介で、引用が形式上は付いているのに、その media_id やページ番号、URL が実際のソースに解決できない、というケースが混ざります。人がレビューしていれば「これは出典が変だ」と気づきますが、自動化ではそのまま通ります。

ですから受け入れゲートで確かめたいのは、レポートの読みやすさでも文章の長さでもなく、たったひとつ「個々の引用が、信頼できるソースへ実際に解決できるか」です。これを主張ごとに集計し、解決できた割合(根拠カバレッジ率)で取り込みの可否を決めます。

レポートを構造で受け取る

検証を機械でやるには、まず引用を散文から取り出して構造にする必要があります。Deep Research を Interactions API 経由で呼ぶときは、ツールとして自分の MCP コネクタと File Search を渡し、出力に grounding メタデータを含めて受け取る形になります。下記はリクエストの骨格です。フィールド名は2026年6月の changelog に沿っていますが、利用中の SDK バージョンに合わせて微調整してください。検証の本体は次節以降の純粋なロジックなので、ここが多少変わってもゲートは作り直しになりません。

from google import genai
from google.genai import types
 
client = genai.Client()
 
# Deep Research を「自前データ優先」で走らせる骨格
# - 自分の MCP サーバーと File Search を根拠ソースとして渡す
op = client.interactions.create(
    model="gemini-flash-latest",  # 3.5 Flash GA。下調べ用途は速度とコストが効く
    agent="deep-research",
    input="社内の運用ログを根拠に、今月の自動投稿の失敗傾向をまとめてください",
    tools=[
        types.Tool(file_search=types.FileSearch(
            file_search_store_names=["projects/me/locations/global/fileSearchStores/ops-logs"],
        )),
        types.Tool(mcp=types.McpConnector(
            server_url="https://mcp.example.internal/ops",
            allowed_tools=["search_runs", "get_run"],
        )),
    ],
    config=types.InteractionConfig(
        include_grounding_metadata=True,  # 引用を構造で受け取る
        background=True,                  # 長時間処理は webhook で受ける
    ),
)

ここで大切なのは include_grounding_metadata=True です。これがないと、引用は本文中の脚注的な表現としてしか得られず、機械検証が一気に難しくなります。構造化された引用が取れれば、後段は素直なデータ処理になります。

受け取り側では、レポートを「主張(claim)」と「その主張に紐づく引用(citations)」の配列として正規化します。引用は出所の種類によって持っている情報が違うので、共通の形に寄せておきます。

from dataclasses import dataclass, field
 
@dataclass
class Citation:
    kind: str                       # "file_search" | "web" | "mcp"
    doc_id: str | None = None       # File Search の文書 ID
    media_id: str | None = None     # 視覚引用の media_id
    page_numbers: list[int] = field(default_factory=list)
    url: str | None = None          # web / mcp の出所 URL
 
@dataclass
class Claim:
    text: str
    citations: list[Citation]
 
def normalize_report(grounding) -> list[Claim]:
    claims: list[Claim] = []
    for seg in grounding.segments:
        cites = []
        for c in seg.citations:
            cites.append(Citation(
                kind=c.source_type,
                doc_id=getattr(c, "document_id", None),
                media_id=getattr(c, "media_id", None),
                page_numbers=list(getattr(c, "page_numbers", []) or []),
                url=getattr(c, "uri", None),
            ))
        claims.append(Claim(text=seg.text, citations=cites))
    return claims

この normalize_report を通すと、レポートが「主張と引用のリスト」という、検証しやすい形になります。ここから先は外部 API に触れません。

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

この記事の続きを読む

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

この記事で得られること
Deep Research の grounding メタデータ(doc_id / media_id / page_numbers)を構造で受け取り、信頼ソースへの解決可否で判定する具体実装
File Search 文書IDと許可ドメインの許可リスト照合、根拠カバレッジ率(初期しきい値 0.85)による縮退ロジック
却下理由(doc_id_not_allowed / media_unresolvable / domain_not_allowed)をSQLiteに記録し毎晩見直す運用設計
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

高度な活用2026-06-04
Gemini の画像理解で壁紙アプリの審査リスクを事前点検した2週間の運用メモ
壁紙アプリの新規バッチを提出する前に、Gemini の画像理解でストア審査リスクを事前点検する運用を2週間試しました。何を拾えて、何を拾えなかったか。個人開発者としての実測メモです。
高度な活用2026-05-05
Gemini 2.5 Pro × Function Calling で作るB2B業務自動化SaaS — 収益モデル設計から初契約獲得まで
Gemini 2.5 Pro のFunction Callingを活用して、中小企業の業務自動化SaaSを構築・販売する方法を完全解説。API設計・プライシング・クライアント提案まで、実際のコードと営業スクリプトで学ぶ実践ガイドです。
高度な活用2026-04-29
Gemini の長文出力で『最後だけ手抜き』を防ぐ — 完成度を落とさないプロンプト設計
Gemini に長文を書かせると終盤の質が落ちる現象を、プロンプト設計と分割生成、検証エージェントの三段構えで防ぐ方法を、廣川政樹の実運用例とともに整理します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →