Content
データサイエンスの世界は常に進化しており、日々膨大なデータを分析し、そこから価値ある洞察を引き出す作業は、データサイエンティストにとって大きな腕の見せ所です。しかし、データの取得から、前処理、分析、可視化、そして機械学習モデルの構築…と、作業しなければならないことが膨大に存在します。

 

そんなデータサイエンスの現場に、近年「AIエージェント」という概念が新たな光を投げかけています。AIエージェントは、特定のゴール達成のために自律的に思考し、行動する能力を持つAIです。そこで今回は、Google Cloud が提供する「Agent Development Kit (ADK)」のデータサイエンスエージェントのサンプルプログラムを使って、このAIエージェントをデータサイエンスのワークフローに適用してみます。

 

本記事では、ADKを活用し、BigQueryとの連携、Pythonによる高度な分析・可視化、さらにはBigQuery ML (BQML) を用いた機械学習までこなせる、まさに「データサイエンティストのアシスタント」となるマルチエージェントシステムを開発した様子をご紹介します。

 

本記事では 2025 年 5月時点の情報に基づいてご紹介します。今後、構築手順等が変更される可能性がありますのでご留意ください。

なぜ今、マルチエージェントなのか?

単一のAIモデルやエージェントで、データサイエンスの全行程を完璧にこなすのは至難の業です。データ取得の専門家、分析の専門家、機械学習の専門家…といった具合に、人間社会と同様に、役割を分担し、それぞれが専門性を高めることで、全体としてより複雑で高度なタスクを効率的にこなせるようになります。

 

これが「マルチエージェントアーキテクチャ」の考え方です。今回のデータサイエンスエージェントシステムでは、以下のようなサブエージェントが連携して動作します。

 

  • データベースエージェント:データ取得・加工の専門家。SQLを駆使してBigQueryから必要な情報を引き出します。
  • データサイエンスエージェント:分析・可視化の専門家。Pythonを操り、複雑な分析やグラフの描画を行います。
  • BQMLエージェント:機械学習の専門家。BigQuery MLを活用し、モデルのトレーニングや評価を実行します。

そして、これらのサブエージェントを束ね、ユーザーの指示に応じて適切なエージェントにタスクを割り振る「トップレベルエージェント」が全体を指揮します。

今回構築するデータサイエンスエージェントの概要

今回開発したデータサイエンスマルチエージェントシステムの主な特徴は以下の通りです。

 

  • インタラクションタイプ:会話型(自然言語での対話)
  • 複雑さ:高度(複数ステップの推論やツール利用を伴う)
  • エージェントタイプ:マルチエージェント
  • コンポーネント:ツール、エージェントツール、セッションメモリ、RAG
  • 適用範囲:あらゆる業界の高度なデータ分析に適用可能

 

特にADKの強力な点は、これらのエージェント間の連携をスムーズにし、各種ツール(BigQuery、Pythonのコードインタプリタなど)へのアクセスを容易にする点にあります。また、ユーザーフレンドリーなWeb GUIも提供されており、開発から対話まで直感的に行えます。

各エージェントの役割について

システム全体の流れとしては、ユーザーからのクエリをまずトップレベルエージェントが受け取り、その内容を理解した上で、最も適切なサブエージェントにタスクを渡します。

 

  • データベースインタラクション (NL2SQL):
    データ取得の要となる「データベースエージェント」は、自然言語の質問を自動的にBigQuery向けのSQLクエリに変換し、実行します。これにより、データ抽出の際にSQLの知識がなくてもデータを扱うことが可能になります。
  • データサイエンス分析 (NL2Py):
    分析の中核を担う「データサイエンスエージェント」は、自然言語の指示を受けてPythonコードを生成し、実行します。これはVertex AIのコードインタプリタ拡張機能と連携しており、複雑なデータ操作や視覚化を柔軟に行えます。
    プロットやグラフなどのビジュアル出力も可能で、分析結果を直感的に理解できるよう支援してくれます。
  • 機械学習 (BQML):
    そして、「BQMLエージェント」は、BigQuery MLの機能を活用し、ユーザーの指示で機械学習モデルのトレーニングと評価を行います。BQMLのリファレンスガイド全体をRAG(Retrieval Augmented Generation)エンジンで参照し、最適なモデル選択やパラメータ設定を支援する能力も備えています。

動作手順について

それでは、実際にこの魅力的なデータサイエンスエージェントを動かしてみましょう。

前提条件

  • Google Cloud アカウント:BigQueryが有効になっているアカウントが必要です。
  • Python 3.12+:最新バージョンを使用します。
  • Poetry:Pythonプロジェクトの依存関係管理ツールです。
  • Git:リポジトリのクローンに使用します。

 

Poetry を使用したプロジェクトのセットアップ

  1. リポジトリをクローン:
    git clone https://github.com/google/adk-samples.git
    cd adk-samples/python/agents/data-science
  2. Poetry で依存関係をインストール:以下のコマンドで、必要なすべてのライブラリが仮想環境にインストールされます。Poetryを使うことで、プロジェクトごとに独立した環境を簡単に構築できるのがメリットです。
    poetry install
  3. Poetry シェルをアクティブ化:仮想環境をアクティブにします。
    poetry env activate

    これで、プロジェクトの環境でコマンドを実行する準備が整いました。

環境変数の設定

.env-exampleというファイルを.envにリネームし、以下の変数を設定します。

GOOGLE_GENAI_USE_VERTEXAI=1 # Vertex AIを使用

GOOGLE_CLOUD_PROJECT='YOUR_CLOUD_PROJECT_ID' # 使用するGoogle CloudのプロジェクトIDを設定
GOOGLE_CLOUD_LOCATION='YOUR_CLOUD_LOCATION' # 使用するリージョンを指定

BigQuery のセットアップ

 

本記事では、ADKのサンプルプログラムに倣い、Kaggleの「ステッカー販売の予測」データセットを使用します。

  1. .envファイルにBigQueryプロジェクトIDを設定: BQ_PROJECT_ID を入力します。サンプルデータを使用する場合は、BQ_DATASET_ID=`forecasting_sticker_sales`のままにしておきます。
  2. サンプルデータのロード:
    poetry run python data_science/utils/create_bq_table.py

    このコマンドを実行すると、サンプルデータがBigQueryに自動的にロードされます。

BQML のセットアップ (RAG エンジンの構築)

BQMLエージェントはVertex AI RAGエンジンを活用して、BQMLのリファレンスガイドを検索します。

  1. .envファイルにGCPプロジェクトIDを設定:GOOGLE_CLOUD_PROJECTが正しく設定されていることを確認してください。
  2. RAG コーパスのセットアップ:
    poetry run python data_science/utils/reference_guide_RAG.py

    これにより、BQML関連の知識がRAGとしてエージェントに提供されます。

その他の環境変数

  • NL2SQL_METHOD:SQL生成の方法 (BASELINEまたはCHASE)
  • CODE_INTERPRETER_EXTENSION_NAME:Vertex AIのコードインタプリタ拡張機能の既存リソース名。特に指定しない場合は新規作成されますが、複数作成されるのを避けるために、作成されたIDを環境変数に設定すると良いでしょう。

エージェントの実行

セットアップが完了すれば、いよいよエージェントとの対話です!

 

エージェント起動方法

CLI(コマンドラインインターフェース)またはADK Web UIでエージェントを起動できます。

  • CLIで実行
    poetry run adk run data_science
  • ADK Web UIで実行
    poetry run adk web

    Web UIは、視覚的にエージェントと対話できるためおすすめです。

対話例

実際に私がエージェントと対話した際の流れをお見せします。


ここでデータベースエージェントが活躍し、trainテーブルに対してSQLクエリを実行し、国名と店舗数を集計してくれました。SQLを書く手間が省けるのは非常に便利ですね!

 



まずデータベースエージェントが国ごとの総売上高を取得するSQLを実行し、その結果をデータサイエンスエージェントに渡します。データサイエンスエージェントは受け取ったデータをもとにPythonで棒グラフを生成します。テキストでの説明だけでなく、すぐにビジュアルで結果を確認できるのは非常に便利です!

 

ここからはBQMLエージェントの出番です。BQMLの知識を活用し、どのようなモデルが利用可能かを教えてくれます。最終的には、予測に必要な列名(日付、予測対象、時系列IDなど)を指定することで、実際にモデルトレーニングに進むことができます。

 

このように、データ取得から分析、可視化、機械学習まで、自然言語でシームレスにデータサイエンスのタスクを進めることが可能です。まるで熟練のアシスタントが隣にいるかのような体験でした。

まとめと今後の展望

今回、Google Cloud のAgent Development Kit (ADK) を利用して、データサイエンスの複雑なワークフローをこなすマルチエージェントシステムを構築・体験しました。自然言語での指示だけで、データ取得、分析、可視化、そして機械学習モデルのトレーニングまで一貫してサポートできることに大きな可能性を感じました。

 

ADKは、さまざまな専門性を持つエージェントを組み合わせ、ツールを連携させることで、高度なAIシステムを構築することを容易にします。データサイエンティストは、煩雑なコーディングや技術的な詳細に時間を費やす代わりに、より本質的な問題解決や洞察の発見に集中することができるようになります!

 

AIエージェントが、私たちの仕事を「自動化」するだけでなく、「共同作業者」として強力にアシストしてくれる未来は、もうすぐそこまで来ています。ぜひ皆さんもADKを試して、ご自身のデータサイエンスワークフローを革新してみてください。

2025年6月13日 Agent Development Kitでデータサイエンスエージェントを開発してみた!

Category ブログ

ご意見・ご相談・料金のお見積もりなど、
お気軽にお問い合わせください。

お問い合わせはこちら