0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LangGraph と Google ADK を比較してみた

Posted at

最近、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 運用のしやすさ)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?