Google ADKで「Deep Research」を自作する
**投稿者:** @codesmith_xyz(推定)
**元記事著者:** xxkuboxx (Zenn)
**投稿日時:** 2025年12月頃
**記事URL:** https://zenn.dev/xxkuboxx/articles/7c9f7c70987770
**GitHub:** https://github.com/xxkuboxx/ADK-DeepResearch
---
概要
Google Agent Development Kit (ADK) を使用して、ChatGPTやGeminiのDeep Research機能を自作。「深掘り回数を変えたり検索対象を限定したり、もっと挙動を制御したい」というエンジニアの欲求を満たす。
---
なぜADKで自作するのか?
1. Google検索が標準装備
Deep Researchタスクでは「検索品質」が命綱。ADKはGoogle検索が標準でサポートされており、現代において最も信頼性が高く広範な検索を、エージェントがツールとして自然に使いこなせる。
2. ブラックボックスを開けたい
既製品の不満:
- 「あと何回深掘りするか」を指定できない
- 使用するモデル(Pro/Flash等)を明示的に選べない
自作すれば、これらのパラメータを完全に制御下に置ける。
3. RAGチャットボットのDeep Research化への応用
特定のドキュメントのみを参照するRAGチャットボットのDeep Research化が可能に。
---
設計思想:「広さ」より「深さ」
「クエリを叩く → 結果を分析する → その結果からさらにクエリを叩く」というシーケンシャルなプロセス。
人間が本気で調査する時と同じように、一つ判明した事実から次の疑問を見つけ、真相に迫っていく動きを再現。
---
エージェント構成:対立構造を作る
| エージェント | 役割 |
|-------------|------|
| **Research Agent(調査役)** | 一生懸命情報を探してくる |
| **Questioner Agent(質問役)** | 調査結果に「ここが足りない」「もっと詳しく」と執拗に深掘りを要求 |
| **Reporter Agent(報告役)** | 上記2者のやり取りを最終的に綺麗なレポートにまとめる |
あえて「調査役 vs 質問役」という対立構造を作ることで、妥協のないリサーチ結果を得る。
---
技術的知見
Sub Agent vs Agent as a Tool
- Sub Agent(Sequential Agent)を採用
- Agent as a Toolは、ADK Web上でツールの内部が見えないためデバッグが難しい
Streamlit連携
- UIから「使用モデル」や「深掘りの回数」を指定可能
- クラス化してリクエストの都度エージェントインスタンスを生成
- ただし、Agent Engineへのデプロイはできなくなる
参照元(Citations)の明示
- 「情報のソース」は最重要項目
- eventにgrounding_metadataが存在するときに取り出す
rate_limitエラー回避
- 無料版APIはすぐにrate_limitエラーが起きる
- リトライ機構を組み込むことが必須
---
まとめ
この「調査役と質問役を戦わせて、深さを追求するアーキテクチャ」は、あらゆるドキュメント検索RAGチャットボットにもそのまま応用できる。
---
参考リンク
- [Google ADK GitHub](https://github.com/google/adk)
- [Google Cloud公式ブログ: ADKでDeep Research](https://cloud.google.com/blog/ja/products/ai-machine-learning/build-a-deep-research-agent-with-google-adk)
- [社内BigQueryにアクセスしてDeep Research - Commune](https://tech.commune.co.jp/entry/google-adk-bigquery-deep-research)
---
*保存日: 2026-01-30*