2026年5月25日

データサイエンスエージェントのADKを2.0 Betaにアップデートしてみた!新しいWorkflowクラスも試してみる


Content

こんにちは!みっちーです!



これまでの記事で、ADK(Agent Development Kit)を使ったデータサイエンスエージェントの構築から、Agent Runtime(旧:Vertex AI Agent Engine)へのデプロイMCPのfetchツール追加と進めてきました。



そんな中、2026年4月にADK Python 2.0 Beta(v2.0.0b1)がリリースされました。注目ポイントは、グラフベースの明示的なワークフローを定義できるWorkflowクラスの追加と、エージェント実行モデルの大幅な刷新です。「既存のデータサイエンスエージェントがそのまま動くのか?」「新機能でワークフローをどう書き換えられるか?」が気になったので、早速アップデートを試してみました。



なお、ADK 2.0 BetaはBeta版のため本番環境での利用は非推奨です。動作確認やプレビューを目的としてローカルで試しています。

ADK 2.0 Betaの主な変更点

アップデートの前に、今回のリリースで何が変わったかを整理しておきます。

① グラフベースワークフロー(Workflowクラス)

ADK 2.0の最大の目玉がWorkflowクラスです。これまでのマルチエージェント構成では、root_agentの指示に従ってLLMがサブエージェントを呼び分ける「LLM任せのルーティング」でした。2.0ではedgesパラメーターで実行フローを明示的に定義できるようになり、「どのエージェントからどのエージェントへ処理を渡すか」をコードで決定論的に制御できます。

from google.adk.agents import Agent
from google.adk.workflow import Workflow, START

workflow = Workflow(
name="data_science_workflow",
edges=[
(START, classifier_agent, router_function),
(router_function, {
"DATA_QUERY": db_agent,
"ANALYSIS": ds_agent,
"INSIGHT": insight_agent,
})
]
)

② エージェント実行モデルの刷新(ReActループノード)

内部実装として、従来のシングルエージェントフローが明示的なReActループノードに置き換わりました。実行単位がBaseNodeとして統一され、RunnerとCLIの両方でルートとして扱えるようになっています。これによりノード単位での実行分離(NodeRunner)や、ステート・アーティファクトのデルタ管理が可能になりました。

③ セキュリティ修正

ネストされたYAML設定経由のリモートコード実行(RCE)脆弱性が修正されています。エージェントの設定をYAMLで管理しているケースでは、この修正だけでもアップデートする価値があります。

前提条件

    • Python 3.10以上(ADK 2.0の要件)

    • poetryがインストール済みであること。

試した環境

    • データサイエンスエージェント(root_agent、db_agent、ds_agent、insight_agentのマルチエージェント構成)

    • ADK: 1.x2.0.0b1 にアップデート

    • Python 3.12

    • 動作確認はローカル(adk web)で実施。Agent Runtimeへの再デプロイはステージング環境のみ。

やってみた

① ADK 2.0 Betaへのアップグレード

まずはパッケージのアップグレードです。ADK 2.0はBeta版(プレリリース)なので、通常のpip install google-adkではインストールされません。–preフラグが必要です。

pip install google-adk --pre

poetryを使っているデータサイエンスエージェントでは、pyproject.tomlを以下のように変更します。

# Before(ADK 1.x)
[tool.poetry.dependencies]
python = ">=3.10"
google-adk = "^1.0.0"

# After(ADK 2.0 Beta)
[tool.poetry.dependencies]
python = ">=3.10"
google-adk = {version = ">=2.0.0b1", allow-prereleases = true}

ただし、poetry update google-adk は実行できませんgoogle-cloud-aiplatform[adk] との循環依存エラーでpoetryのソルバーが失敗してしまうためです。代わりに、poetryが作成した .venv の pip を直接使ってインストールします。

# poetryのソルバーは失敗するため、.venv内のpipで直接インストールする
.venv/bin/pip install "google-adk>=2.0.0b1" --pre
# Windowsの場合
.venv\Scripts\pip install "google-adk>=2.0.0b1" --pre

インストール後、バージョンを確認してみます。

poetry run python -c "import google.adk; print(google.adk.__version__)"
# 2.0.0b1

無事に2.0.0b1が入りました。



② 既存のマルチエージェント構成で動作確認

パッケージを差し替えただけで、既存のエージェントコードがそのまま動くかを確認します。adk webでローカルサーバーを立ち上げてみました。

cd agents
poetry run adk web

結果から言うと、基本的なマルチエージェント構成(root_agent + サブエージェント)はそのまま動きました。BigQueryへのSQL発行・データ取得・グラフ生成のフローが、1.xのときと同じように動作することを確認できました。

今回のデータサイエンスエージェントは Agent(LlmAgent)のみを使用しているため、起動時にDeprecationWarningは出ませんでした。ただし、SequentialAgentParallelAgentLoopAgent を使っているコードでは、以下のようなDeprecationWarningが出ます。

DeprecationWarning: SequentialAgent is deprecated and will be removed in future versions. Please use Workflow instead.
# ParallelAgent、LoopAgent も同様のメッセージが出る

Agent クラス自体は非推奨ではありませんが、SequentialAgentParallelAgentLoopAgent は ADK 2.0 で deprecated になりました。これらを使っているコードは新しいWorkflowクラスへの移行が必要です。せっかくなので、次のステップで試してみます。

③ Workflowクラスでデータサイエンスエージェントを書き直す

データサイエンスエージェントの処理フローをWorkflowクラスで表現してみます。元の構成はroot_agentが質問の意図を判断して各サブエージェントを呼ぶLLM任せのルーティングでした。これを、明示的なルーティング関数を介したグラフ構造に変えてみます。

まず、質問の種類を判定するルーター関数を定義します。

from google.adk.agents import Agent
from google.adk.workflow import Workflow, START
from google.adk.events import Event

def route_query(node_input: str) -> Event:
"""ユーザーの質問をルーティングする関数"""
content = node_input.lower()
if any(kw in content for kw in ["グラフ", "可視化", "トレンド", "chart"]):
return Event(route="VISUALIZATION")
elif any(kw in content for kw in ["予測", "モデル", "forecast"]):
return Event(route="FORECASTING")
else:
return Event(route="DATA_QUERY")

# エージェントの定義(既存のdb_agent, ds_agent, insight_agentを流用)
workflow = Workflow(
name="data_science_workflow",
edges=[
(START, route_query),
(route_query, {
"DATA_QUERY": db_agent,
"VISUALIZATION": ds_agent,
"FORECASTING": insight_agent,
})
]
)

ルーター関数がLLMではなくPythonコードで動くため、ルーティングの結果が予測可能になります。「可視化の質問のつもりだったのにdb_agentに渡ってしまった」というLLMの気まぐれが起きにくくなるのが地味に嬉しいポイントです。

adk webで動作確認したところ、質問の内容に応じて期待通りのサブエージェントに処理が渡ることを確認できました。また、Workflowベースに変えたことで各エージェントの実行ログがノード単位で分かれて表示されるようになり、どのサブエージェントがどのステップで何を処理したかがより追いやすくなりました。


つまずいたポイント・気づいたこと

① poetryで google-adk 2.0 はインストールできない(循環依存エラー)

poetry update google-adk を実行すると、google-cloud-aiplatform[adk] との循環依存エラーでpoetryのソルバーが失敗します。allow-prereleases = true を設定しても同様です。回避策は、poetryが作成した .venv に対して pip を直接使うことです。.venv\Scripts\pip install “google-adk>=2.0.0b1” –pre で問題なくインストールできました。

② SequentialAgent/ParallelAgent/LoopAgent を使っている場合は早めに移行を

Agent(LlmAgent)自体は非推奨ではなく、今のマルチエージェント構成はそのまま動きます。ただし、SequentialAgentParallelAgentLoopAgent を使っているコードは DeprecationWarning が出ており、GA版に向けてサポートが外れる可能性があります。Beta期間を Workflow クラスへの移行準備期間として使うのがよさそうです。

③ Agent Runtimeへの再デプロイはステージングで十分確認してから

2.0 BetaはBeta版のため、Agent Runtimeへの再デプロイは本番環境では行っていません。ローカル環境での動作確認にとどめています。GA版がリリースされたタイミングで本番対応する予定です。

④ Workflowのルーター関数はシンプルに保つ

ルーター関数にLLMを使わない分、キーワードマッチの精度がそのままルーティング精度に直結します。今回はシンプルなキーワードマッチにしましたが、入力の多様性に対応するには少し工夫が必要でした。「グラフ表示しつつデータも抽出して」のような複合的な質問は現状うまく処理できていないので、複数ルートを通れる構成か、LLMエージェントとWorkflowを組み合わせる構成を検討中です。

まとめ

データサイエンスエージェントをADK 2.0 Betaにアップデートして試してみました。

    • 既存の Agent ベースのマルチエージェント構成はそのまま動く(SequentialAgentParallelAgentLoopAgent は deprecated のため Workflow への移行が必要)

    • 新しいWorkflowクラスでルーティングを明示的にコードで制御できるようになり、動作の予測可能性が上がる

    • 実行ログがノード単位になり、デバッグがしやすくなった

    • YAML設定のRCE脆弱性修正など、セキュリティ面の改善も含まれている

    • Beta版のため本番環境への適用はGA版リリース後が安心

ADK 1.xのマルチエージェント構成を使っている方は、2.0 Betaを試してみてもローカル環境では特に困らないと思います。GA版に向けてWorkflowクラスへの移行パスを早めに試しておくと、本番適用のときにスムーズに進められそうです。フィードバックはGitHubのイシュートラッカーに報告するのが推奨されているので、気になった挙動があれば積極的に報告してみてください!

2026年5月25日 データサイエンスエージェントのADKを2.0 Betaにアップデートしてみた!新しいWorkflowクラスも試してみる

Category Google Cloud

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

お問い合わせはこちら