🤖

ADK 1.13.0 で追加された BigQueryに自然言語で問い合わせできる ask_data_insights tool

に公開

こんにちは、サントリーこと大橋です。

本日(2025/08/28)、Agent Development Kit(以降、ADK) 1.13.0がリリースされました。

https://github.com/google/adk-python/releases/tag/v1.13.0

今回は木曜日リリースでした。金曜日リリースから木曜日リリースに変わったみたいですね。
今回のリリースで追加された主な機能は以下です。

Features
[Tools] Add the ask_data_insights tool for natural language queries on BigQuery data 47b88d2
Improvements
Allow user to specify protocol for A2A RPC URL in to_a2a utility 157f731
Passthrough extra args for adk deploy cloud_run as Cloud Run args 6806dea

  • 機能
    • ask_data_insightsの追加 (このあと書きます)
  • 改善
    • to_a2aメソッドで protocol を設定できるようになった
    • adk deploy cloud_runで追加の設定が可能になった
    • adk deploy agent_engineに、Agent Engineの設定をJSONファイルで保存できる--agent_engine_config_fileオプションが追加(リリースノート未記載)。

他にもバグフィックスや細々した機能追加やドキュメントの改善が行われています。
adk deploy周りの改善はよりプロダクション環境への幅広い利用用途をサポートするためのリリースで非常に好感が持てます。

今回は新しく追加された ask_data_insights toolについて書いていきます。

対象読者

  • ADKユーザー
  • ADKをこれから使いたいPythonユーザー
  • ADKをこれから使いたいAI エージェント開発者
  • BigQueryユーザー

※本文中ではADKのAgentを「Agent」とアルファベット表記、ADKだけではなく一般的なAIエージェントを「AIエージェント」とカタカナ表記しています。

課題: AI エージェントでのデータ解析はコンテキストウィンドウに問題が発生しやすい

BigQueryなどのデータソースを用いて解析を行うAIエージェントを開発していると、よく直面する課題があります。
「コンテキストウィンドウ溢れちゃう問題」です。

Geminiの様に大量のコンテキストウィンドウを持つLLMだとしても、BigQueryから大量のデータを受け取り、それを利用して解析、もっと言えばグラフ表示用のコード生成などを行うと、コンテキストウィンドウを超えたプロンプトが作成されてしまい、解析やコード生成ができない課題が発生しがちです。

また基本的にLLMを利用する場合、過去の会話を認識させるために、毎回のLLM APIを呼ぶごとにすべて会話履歴をLLMへ送信します。
このため、一度大量データが会話履歴に入ってしまうと、その後の会話でも裏側でやり取りされているプロンプトが大きくなり、大量のコンテキストウィンドウを消費してしまうことになります。

このため、複数ステップにわたる大規模なデータ解析は、従来のAIエージェントにとって必ずしも得意なタスクとは言えませんでした。

BigQueryのConversational Analytics API

上記課題を解決できるであろうBigQueryの新機能がConversational Analytics APIです。

https://cloud.google.com/gemini/docs/conversational-analytics-api/overview?hl=ja

Conversational Analytics APIは、Google Cloudが提供する AIを活用したチャットインターフェース(データエージェント) を構築するためのAPIです。このAPIを使うと、開発者は自然言語を使って構造化データに関する質問に答えるデータエージェントを作成できます。

主な機能と特徴

  • 自然言語でのデータ分析: ユーザーは通常の言葉で質問するだけで、BigQuery、Looker、Looker Studioに格納されたデータから回答を得ることができます。
  • データエージェントの構築: ビジネス情報やデータ(「コンテキスト」)を提供し、SQL、Python、可視化ライブラリなどのツールへのアクセスをデータエージェントに与えることができます。
  • 対話形式での操作:
    • ステートフルな会話: 既存の会話を参照してチャットを続けることができ、Google Cloudが会話履歴を管理します。
    • ステートレスな会話: 保存されたデータエージェントを参照するか、リクエストに直接コンテキストを提供してチャットできます。この場合、アプリケーションが会話履歴を管理する必要があります。
  • 可視化された応答: APIからの応答に含まれるチャート仕様を処理し、Python SDKとVega-Altairライブラリを使用してデータエージェントの応答を視覚化することも可能です。
  • 豊富なAPI操作: データエージェントの作成、取得、更新、削除、IAMポリシーの設定、会話の作成、メッセージのリスト表示など、多様なエンドポイントが提供されています。
  • コスト管理: BigQueryのコストをプロジェクトレベル、ユーザーレベル、クエリレベルで設定することで、データエージェントにかかる費用を監視・管理できます。

対応するデータソース

  • BigQuery
  • Looker
  • Looker Studio

要するに、BigQueryに自然言語で問い合わせができるAPIとなります。

ADKのask_data_insights tool

ADKのask_data_insights toolは、このBigQuery Conversational Analytics APIをADKから利用できるようにしたADKのNative Toolです。ADKのBigQueryToolsetから利用できます。

このツールを利用するとエージェントは、BigQueryへSQLを利用した問い合わせではなく、自然言語を利用して問い合わせが行えるようになります。

準備: Conversational Analytics APIの準備

ask_data_insightsを利用するには、Conversational Analytics APIを有効にする必要があります。

Conversational Analytics APIを利用するには、まず 「Data Analytics API with Gemini」をプロジェクトで有効にする必要があります。

https://console.cloud.google.com/apis/enableflow;apiid=cloudaicompanion.googleapis.com?hl=ja

次にConversational Analytics APIを有効にします。
https://console.cloud.google.com/apis/enableflow?apiid=cloudaicompanion.googleapis.com&hl=ja
※BigQueryも利用するのでBigQuery APIも無効の場合は、有効にしてください。

準備2: BigQueryToolsetを利用したAgentの作成

次にBigQueryToolsetを利用するAgentを作成します。
まず基本となるAgentを作成しましょう。adk createコマンドでAgentを作成します。

$  adk create ask_data_insights

Choose a model for the root agent:
1. gemini-2.5-flash
2. Other models (fill later)
Choose model (1, 2): 1
1. Google AI
2. Vertex AI
Choose a backend (1, 2): 2

You need an existing Google Cloud account and project, check out this link for details:                                                                                                                          
https://google.github.io/adk-docs/get-started/quickstart/#gemini---google-cloud-vertex-ai                                                                                                                     
Enter Google Cloud project ID [your-project-id]: 
Enter Google Cloud region [us-central1]: 

Agent created in /path/to/current_dir/ask_data_insights:                                                                                                                                
- .env          
- __init__.py                                                       
- agent.py

次にagent.pyBigQueryToolsetが利用できるように設定を行います。
BigQueryToolsetを利用するには、認証の設定が必要です。認証の設定にはBigQueryCredentialsConfigを利用します。
今回はApplication Default Credentials(ADC)を利用して認証します。

agent.py
from google.adk.agents.llm_agent import Agent
from google.adk.tools.bigquery import BigQueryToolset, BigQueryCredentialsConfig
import google.auth
from google.adk.tools.bigquery.config import BigQueryToolConfig, WriteMode

# 書き込み拒否の設定
tool_config = BigQueryToolConfig(write_mode=WriteMode.BLOCKED)

# Application Default Credentialを利用した認証設定
application_default_credentials, _ = google.auth.default()
credentials_config = BigQueryCredentialsConfig(
  credentials=application_default_credentials
)

# BigQueryToolsetのインスタンス化
bigquery_toolset = BigQueryToolset(
    credentials_config=credentials_config, bigquery_tool_config=tool_config
)

root_agent = Agent(
    model='gemini-2.5-flash',
    name='root_agent',
    description='A helpful assistant for user questions.',
    instruction="""
    You are a data science agent with access to several BigQuery tools.
    Make use of those tools to answer the user's questions.
    """,
    tools=[bigquery_toolset]
)

またADCを利用するので、ローカルで実行する場合は以下のコマンドを実行してADCを作成してください。

$ gcloud auth  application-default login

ask_data_insightsを利用するAgentを動かしてみる

準備が整ったら Agentを起動してみましょう。

$ adk web . 

次に問い合わせてみます。

bigquery-public-data.new_york_taxi_tripsを利用して、平均乗客数が多い地域と時間帯の組み合わせについてトップ10を教えて。
プロジェクトは [YOUR_PROJECT_ID] を利用して
ask_data_insights ツールを使って調査して


※ADK Webで上で取得した結果

無事自然言語で解析結果を得ることができました。
BigQuery上で実際に実行されているSQLも確認ができます。

まとめ

今回は1.13.0で追加されたask_data_insights toolについて解説しました。
BigQuery上で解析を行えるため、コンテキストウィンドウの節約など多くの点でメリットがありそうです。
BigQueryに保存されているデータを解析するAIエージェントは非常に望まれることも多いでしょうから利用することも多くなるでしょう。

なおConversational Analytics API自体は、vega-lite形式のグラフ出力(文字でのグラフ形式出力)などにも対応しています。

ただし ask_data_insights tool自体は、現状ではグラフ出力に関する機能を意図的に制限している(docstringで無効化されている)ようです。そのため、エージェントにvega-lite形式の文字列を生成させ、それをフロントエンドでグラフとして描画するような応用は、一手間必要になりそうです。

参考: エージェントの回答を可視化としてレンダリングする
https://cloud.google.com/gemini/docs/conversational-analytics-api/render-visualization?hl=ja


お知らせ/宣伝

先日、ADKユーザー向けのイベント「ADK UG #0」が開催され、ADKユーザーが集う日本語のDiscordコミュニティが誕生しました。ADKに関する情報交換や議論に興味がある方は、ぜひご参加ください!

https://discord.gg/BKpGRzjtqZ

また、ADKの最新のコミットログやリリースノートを分かりやすく解説するPodcastを、月・水・金に配信しています。ADKの動向を追いかけたい方は、ぜひ聴いてみてください。

https://www.youtube.com/playlist?list=PL0Zc2RFDZsM_MkHOzWNJpaT4EH5fQxA8n

Discussion