最近、AI エージェント開発の領域で「LangGraph」と「Google ADK」というキーワードを耳にする機会が増えてきました。
どちらも マルチエージェントの設計や運用をサポートするフレームワーク ですが、それぞれがフォーカスしている領域や得意分野が異なります。
この記事では、両者をエンジニア目線で比較しつつ、Python のサンプルコードで動作イメージを確認してみます。
LangGraph とは?
LangGraph は LangChain エコシステムの一部 であり、AI エージェントや LLM を使ったアプリケーションにおいて ワークフローをグラフ構造で設計・制御 するためのフレームワークです。
特徴
- 状態管理(State)が強力で、自動的に追跡・更新される
- 条件分岐・ループ・リトライといった複雑なフロー制御が可能
- マルチエージェントの協調にも対応
- LangChain の既存資産(プロンプト、ツール、モデル統合など)と親和性が高い
👉 ざっくり言うと「複雑な制御ロジックをグラフで設計しやすいエージェント向けワークフローエンジン」。
LangGraph の Python サンプル
以下は「ユーザーからの問い合わせを受けて → 要約 → 回答を生成する」という単純なフローをグラフで定義した例です。
from langgraph.graph import StateGraph, END
from langchain_openai import ChatOpenAI
# モデル準備
llm = ChatOpenAI(model="gpt-4o-mini")
# 状態(State)定義
class WorkflowState(dict):
pass
# ノード定義
def summarize(state: WorkflowState):
summary = llm.invoke(f"次の文章を要約してください: {state['query']}")
state["summary"] = summary.content
return state
def answer(state: WorkflowState):
answer = llm.invoke(f"要約: {state['summary']}\nこの内容に基づいて回答してください")
state["answer"] = answer.content
return state
# グラフ構築
graph = StateGraph(WorkflowState)
graph.add_node("summarize", summarize)
graph.add_node("answer", answer)
graph.set_entry_point("summarize")
graph.add_edge("summarize", "answer")
graph.add_edge("answer", END)
workflow = graph.compile()
# 実行例
result = workflow.invoke({"query": "LangGraphとGoogle ADKの違いを教えてください"})
print(result["answer"])
ここでは 「要約 → 回答」 という2ステップですが、分岐・ループを自由に組み込めるのが強みです。
Google ADK とは?
Google ADK(Agent Development Kit)は、Google が公開した AI エージェント開発のためのフレームワーク です。
Gemini や Vertex AI といった Google サービスとの統合を意識しつつも、汎用的に設計されています。
特徴
- 設計 → 開発 → テスト → デプロイ → 運用までをカバー
- サブエージェントやツールをモジュール的に組み合わせて協調させられる
- 階層化・並列処理といったマルチエージェントのパターンが組みやすい
- Google Cloud / Vertex AI との親和性が高い
👉 「エージェントを短期間で構築し、クラウドにデプロイして運用するところまで含めたフレームワーク」。
Google ADK の Python サンプル
以下は Google ADK を使って「検索用のサブエージェント」と「回答生成エージェント」を組み合わせる例です。
from google import genai
from google.genai.agents import Agent, run
# Gemini モデル準備
model = genai.GenerativeModel("gemini-1.5-flash")
# サブエージェント定義
search_agent = Agent(
name="search_agent",
instructions="ユーザーの質問に関連する検索キーワードを生成してください。",
model=model,
)
answer_agent = Agent(
name="answer_agent",
instructions="検索結果を使ってユーザーにわかりやすく回答してください。",
model=model,
)
# 実行例(runで複数エージェントを調整)
response = run(
agents=[search_agent, answer_agent],
task="LangGraphとGoogle ADKの違いを説明して"
)
print(response.output_text)
Google ADK では 「エージェントを並べて役割を分担させる」 設計が自然にできます。さらに Vertex AI 上にすぐデプロイできるのが強みです。
LangGraph vs Google ADK 比較表
観点 | LangGraph | Google ADK |
---|---|---|
出自 | LangChain エコシステム | Google 提供 |
主な目的 | 複雑なワークフロー制御、状態管理 | 設計~運用まで一気通貫で支援 |
強み | - 分岐・ループなどの制御が強力 - 状態管理が自然にできる - LangChain ツール資産を活用可能 |
- クラウド連携(Gemini, Vertex AI)が容易 - サブエージェント/並列処理が得意 - 運用・監視まで意識した設計 |
学習コスト | グラフ設計に慣れる必要あり | Quickstart が用意されており導入は比較的簡単 |
適したケース | ・複雑なワークフロー設計が必要な場合 ・LangChain をすでに使っている場合 |
・Google Cloud を活用する場合 ・エージェントを素早く構築し運用まで回したい場合 |
設計観点からの使い分け
-
LangGraph を選ぶと良いケース
- 複雑な分岐・ループ・リトライを多用する業務プロセス自動化
- LangChain を既に利用している
- ワークフローを「見える化」して制御したい
-
Google ADK を選ぶと良いケース
- Google Cloud / Vertex AI / Gemini を積極的に活用したい
- 小さなサブエージェントを組み合わせて大きな仕組みを作りたい
- 運用・監視・スケーラビリティを重視する本番システム
-
ハイブリッド活用もアリ
- LangGraph で複雑なフローを定義しつつ、ADK 上のエージェントとして実行する
- LangGraph = 制御ロジック、ADK = デプロイ&運用基盤、という役割分担も可能
まとめ
- LangGraph → 複雑なワークフロー制御に強み
- Google ADK → 設計から運用まで一気通貫で支援
- 選択基準は 既存エコシステム(LangChain / Google Cloud)との親和性 と 要件(ワークフローの複雑さ vs 運用のしやすさ)