2025年9月30日 【ADK+BigQuery】ADK の BigQuery ツールセットを使用してデータ分析エージェントを構築してみた Agent Development Kit BigQuery Google Cloud 生成AI(Generative AI) 検索する Popular tags 生成AI(Generative AI) Vertex AI Search Looker Studio BigQuery AlloyDB Google Workspace 事例紹介 Cloud SQL Category Google Cloud Author ya SHARE 目次 BigQuery のツールセット 検証に使用するデータセット ソースコード 実際にエージェントにデータに関する質問をしてみる まとめ Content こんにちは。 本記事では、ADK(Agent Development Kit)の組み込みツールである、BigQuery ツールセットを試してみたいと思います。 ADK とは、Google が提供しているオープンソースの AI エージェント開発のフレームワークです。 ADK の文脈において、ツールとは、AI エージェントに提供される特定の機能のことで、これにより、エージェントはコアとなるテキスト生成および推論能力を超えたアクション(Web検索、データベースへのクエリなど)を実行することが可能になります。 ADK にはいくつかの種類のツールがありますが、組み込みツールは、Google 検索や、今回試してみる BigQuery へのクエリなど、すぐに使える機能を提供してくれます。 今回は、BigQuery の一般公開データセットである「thelook_ecommerce」を使用して、これらデータに対して自然言語での質問に答えるデータ分析エージェントを構築してみようと思います。 【参考】 BigQuery と ADK & MCP: 新しいファーストパーティ ツールセットでエージェント開発を加速 BigQuery のツールセット ADK では、複数の組み込みツールが提供されています。 今回は、BigQuery のツールセットを使用します。ツールセットには、以下ツールが含まれています。 list_dataset_ids: プロジェクト内に存在するデータセット ID を取得する get_dataset_info: データセットに関するメタデータを取得する list_table_ids: データセット内に存在するテーブル ID を取得する get_table_info: テーブルに関するメタデータを取得する execute_sql: SQL を実行し、結果を取得する ask_data_insights: 自然言語を使用して、テーブル内のデータに関する質問に回答する 検証に使用するデータセット 今回は、BigQuery の一般公開データセットである「thelook_ecommerce」を使用します。 「thelook_ecommerce」には、架空のeコマース衣料品サイト(TheLook)に関する、以下テーブルが含まれています。 users: 顧客テーブル products: 商品テーブル orders: 注文テーブル order_items: 注文商品テーブル inventory_items: 在庫テーブル distribution_centers: 物流テーブル events: ウェブイベントテーブル thelook_ecommerce-table: 記載なし ソースコード フォルダ構成 adk-agent └bq-agent-app ├__init__.py ├.env └agent.py __init__.py from . import agent .env GOOGLE_GENAI_USE_VERTEXAI=1 GOOGLE_CLOUD_PROJECT=your_project GOOGLE_CLOUD_LOCATION=us-central1 agent.py from google.adk.agents.llm_agent import Agent from google.adk.tools.bigquery import BigQueryCredentialsConfig from google.adk.tools.bigquery import BigQueryToolset from google.adk.tools.bigquery.config import BigQueryToolConfig from google.adk.tools.bigquery.config import WriteMode import google.auth # エージェントの BigQuery へのアクセス制御を指定 tool_config = BigQueryToolConfig(write_mode=WriteMode.BLOCKED) # BLOCKED: 読み取り専用 # BigQuery への認証(Application Default Credentials を使用) application_default_credentials, _ = google.auth.default() credentials_config = BigQueryCredentialsConfig( credentials=application_default_credentials ) # BigQuery ジョブを実行するプロジェクトID PROJECT_ID = "your_project" # BigQuery ツールセット bigquery_toolset = BigQueryToolset( credentials_config=credentials_config, bigquery_tool_config=tool_config ) # エージェント root_agent = Agent( model="gemini-2.0-flash", name="bigquery_agent", description=( "あなたは、SQL を実行して BigQuery のデータに関する質問に答えるエージェントです。" ), instruction=f""" あなたは、複数の BigQuery ツールにアクセスできるデータ分析エージェントです。 これらのツールを活用して、ユーザの質問に答えてください。 ユーザからの質問に対しては、プロジェクトID: `bigquery-public-data` 、データセット: `thelook_ecommerce` のみのデータを使用して回答してください。 BigQuery ジョブは、プロジェクトID: `{PROJECT_ID}` で実行してください。" """, tools=[bigquery_toolset] ) 実際にエージェントにデータに関する質問をしてみる 「adk-agent」をカレントディレクトリにした状態で、adk web コマンドを使用してエージェントを実行し、実際にエージェントにデータに関する質問をしてみようと思います。 今回は、以下の4つで試してみました。 1.データセット内のテーブルを全て教えてください。 2.それぞれのテーブルの件数を教えてください。 3.今月一番売れている商品は? 4.一緒に注文されることが多い商品はどれですか? 1.データセット内のテーブルを全て教えてください。 ツール: list_table_ids が実行され、結果も合っていました。 2.それぞれのテーブルの件数を教えてください。 ツール:execute_sql が複数回実行され、こちらの結果も合っていました。 3.今月一番売れている商品は? ツール: execute_sql が実行され、結果も問題なさそうでした。参考までに実行された SQL 載せております。 エージェントからの回答では、「…ordersテーブルとorder_itemsテーブルを結合して、…」とありますが、実際には productsテーブル も結合され、商品名が取得できていました。 【参考】SQL SELECT p.name, COUNT(oi.product_id) AS total_ordered FROM bigquery-public-data.thelook_ecommerce.order_items oi JOIN bigquery-public-data.thelook_ecommerce.products p ON oi.product_id = p.id JOIN bigquery-public-data.thelook_ecommerce.orders o ON oi.order_id = o.order_id WHERE EXTRACT(YEAR FROM o.created_at) = 2025 AND EXTRACT(MONTH FROM o.created_at) = 9 GROUP BY p.name ORDER BY total_ordered DESC LIMIT 1 4.一緒に注文されることが多い商品はどれですか? ツール: execute_sql が実行され、結果も概ねは問題なさそうでした。参考までに実行された SQL 載せております。 今回は5件のみ表示しているため、結果からは分からないですが、SQL の仕様上、product_id1 と product_id2 が逆でも一緒に注文される商品の組み合わせとして表示される可能性があるため、若干修正の余地はある印象でした。 【参考】SQL SELECT oi1.product_id AS product_id1, oi2.product_id AS product_id2, COUNT(*) AS order_count FROM bigquery-public-data.thelook_ecommerce.order_items oi1 JOIN bigquery-public-data.thelook_ecommerce.order_items oi2 ON oi1.order_id = oi2.order_id AND oi1.product_id != oi2.product_id GROUP BY oi1.product_id, oi2.product_id ORDER BY order_count DESC LIMIT 5 まとめ まず、ADK からの BigQuery のツールセットの呼び出しが非常に簡単でした。 BigQuery に対する基本的なアクションを、開発者が独自のカスタムツールを作成することなく簡単に実現できる点は魅力的ですね。今後も各種ツールが追加される予定とのことだったので、期待したいです。 また、実際のツール自体の精度も予想より高くて驚きました。 実務な活用の観点では、やはり精度はかなり重要になるかと思うため、ユーザの質問の意図を整理するエージェントや、エージェントが出力した内容をレビューするエージェントなど、複数エージェントの活用が必須のように感じました。こういったマルチエージェント化の検証も進めていきたいと思います。 最後まで読んでいただき、ありがとうございました。 関連コンテンツ Agent Development Kitでデータサイエンスエージェントを開発してみた! by みっちーon 2025年6月13日 データサイエンスエージェントでArtifactを使えるようにしてみた!(ローカル開発編) by みっちーon 2025年9月5日 データサイエンスエージェントを「考察サブエージェント」で強化してみた! by みっちーon 2025年9月18日 頂きましたご意見につきましては、今後のより良い商品開発・サービス改善に活かしていきたいと考えております。 よく分かった 勉強になった 難しかった もっと知りたい Author ya SI営業(2017/4~) → データアナリスト(2021/1~) 趣味は、漫画、アニメ、旅行(47都道府県制覇が目標)です。 よろしくお願いいたします。 Agent Development Kit BigQuery Google Cloud 生成AI(Generative AI) 2025年9月30日 【ADK+BigQuery】ADK の BigQuery ツールセットを使用してデータ分析エージェントを構築してみた Category Google Cloud 前の記事を読む 【お知らせ】Google Cloud Next Tokyo’25:『 Gemini 』が生み出す新しい楽曲と『出会える』カラオケ体験 (動画視聴リンクあり) Recommendation オススメ記事 2023年9月5日 Google Cloud 【Google Cloud】Looker Studio × Looker Studio Pro × Looker を徹底比較!機能・選び方を解説 2023年8月24日 Google Cloud 【Google Cloud】Migrate for Anthos and GKEでVMを移行してみた(1:概要編) 2022年10月10日 Google Cloud 【Google Cloud】AlloyDB と Cloud SQL を徹底比較してみた!!(第1回:AlloyDB の概要、性能検証編) BigQuery ML ワークショップ開催のお知らせ 生成AI導入支援パッケージ Discovery AI導入支援パッケージ Google Cloud ホワイトペーパー 新着記事 2025年9月30日 Google Cloud 【ADK+BigQuery】ADK の BigQuery ツールセットを使用してデータ分析エージェントを構築してみた 2025年9月29日 お知らせ 【お知らせ】Google Cloud Next Tokyo’25:『 Gemini 』が生み出す新しい楽曲と『出会える』カラオケ体験 (動画視聴リンクあり) 2025年9月29日 お知らせ 【Google Cloud】データ分析 – サービス分野におけるスペシャライゼーション認定(継続)のお知らせ HOME Google Cloud 【ADK+BigQuery】ADK の BigQuery ツールセットを使用してデータ分析エージェントを構築してみた