AI 代理框架詳細比較:Claude Agent SDK vs LangChain vs LangGraph vs Google ADK

AI 代理框架詳細比較:Claude Agent SDK vs LangChain vs LangGraph vs Google ADK


0. 為什麼需要這篇比較?

2025 年,AI Agent 開發框架百花齊放。對於想要構建 AI Agent 應用的開發者來說,選擇合適的框架是第一個重要決策。本文將從架構設計、功能特性、代碼質量、擴展能力等多個維度,全面比較四大主流框架:

框架開發者版本代碼規模主要定位
Claude Agent SDKAnthropic0.1.17~3K 行Claude 專屬 SDK
LangChain V1LangChain1.2.0~11K 行中間件驅動框架
LangGraphLangChainlatest~15K 行圖編排引擎
Google ADKGoogle1.21.0~79K 行企業級全功能平台

1. 架構設計比較

1.1 核心架構模式

flowchart TD
  subgraph Claude["Claude Agent SDK"]
    C1["User API"] --> C2["Internal Layer"]
    C2 --> C3["Transport"]
    C3 --> C4["Claude Code CLI"]
  end

  subgraph LangChain["LangChain V1 + LangGraph"]
    L1["create_agent()"] --> L2["AgentMiddleware"]
    L2 --> L3["StateGraph"]
    L3 --> L4["Pregel Engine"]
  end

  subgraph ADK["Google ADK"]
    A1["App"] --> A2["Plugins"]
    A2 --> A3["Agent Tree"]
    A3 --> A4["Runner"]
  end
特性Claude Agent SDKLangChain V1LangGraphGoogle ADK
架構模式CLI 包裝器中間件管道Pregel BSP 圖無狀態編排引擎
執行引擎Claude Code CLI基於 LangGraphPregel 算法自建 Runner
狀態管理CLI 內部管理委託給 LangGraph通道 + Checkpoint事件溯源
擴展方式Hook + MCP中間件組合自定義節點/通道插件系統
代理模式單一代理單一代理 + 工具任意圖結構多代理樹結構

1.2 LangChain V1 與 LangGraph 的關係

這是很多人容易混淆的點:

flowchart TD
  LCV1["LangChain V1 (高層 API)"]
  LG["LangGraph (低層編排)"]
  LCC["LangChain Core (基礎組件)"]

  LCV1 -->|"內部使用"| LG
  LG -->|"調用"| LCC

  LCV1_desc["提供 create_agent() 高層 API<br/>和中間件系統"]
  LG_desc["提供底層圖編排、持久化<br/>人在迴圈"]
  LCC_desc["LLM, Tools, Messages<br/>基礎組件"]

  LCV1 --- LCV1_desc
  LG --- LG_desc
  LCC --- LCC_desc

關係總結:

  • LangChain V1:提供 create_agent() 高層 API 和中間件系統
  • LangGraph:提供底層圖編排、持久化、人在迴圈
  • LangChain V1 是 LangGraph 之上的便利層

1.3 分層架構對比

層級Claude Agent SDKLangChain V1LangGraphGoogle ADK
用戶 APIquery(), Clientcreate_agent()StateGraphAgent, Runner
中間層InternalClientAgentMiddlewareCompiledGraphPlugin, Flows
執行層SubprocessTransportLangGraphPregel + LoopInvocationContext
存儲層-(委託)Checkpointer, StoreSessionService
模型層Claude Code CLIBaseChatModelBaseChatModelBaseLlm

2. 功能特性對比

2.1 基本功能

功能Claude Agent SDKLangChain V1LangGraphGoogle ADK
同步執行✓✓✓✓
異步執行✓✓✓✓
流式輸出✓✓✓ (5 種模式)✓
結構化輸出✓✓✓✓
工具調用✓✓✓✓
會話持久化✓ (CLI)✓✓ (核心功能)✓

2.2 高級功能

功能Claude Agent SDKLangChain V1LangGraphGoogle ADK
多代理協作✗✗✓ (子圖)✓ (代理樹)
並行節點執行✗✗✓ (BSP)✓
動態路由✗✓✓ (Send/Command)✓
中間件/插件Hook 系統14+ 中間件自定義節點6+ 插件
人在迴圈Hook中間件✓ (interrupt)插件
時間旅行✗✗✓ (狀態歷史)✗
循環圖支持✗✗✓ (原生)✗
文件檢查點✓✗✗✗
代碼執行沙箱✓ (CLI)✓ (Docker)✗✓ (多種)
實時音頻流✗✗✗✓

2.3 工具生態系統

工具類型Claude Agent SDKLangChain V1LangGraphGoogle ADK
內建工具數量~10 (CLI)~5ToolNode50+
MCP 支持✓ (核心)✗✗✓
自定義函數工具✓✓✓✓
Google 服務集成✗✗✗✓ (原生)
LangChain 工具✗✓ (原生)✓ (原生)✓ (適配器)

2.4 LLM 支持

提供者Claude Agent SDKLangChain V1LangGraphGoogle ADK
Claude✓ (唯一)✓✓✓
Gemini✗✓✓✓ (推薦)
GPT-4✗✓✓✓ (LiteLLM)
開源模型✗✓✓✓
提供者數量120+20+5+

3. 執行模型對比

3.1 LangGraph 的 Pregel BSP 模型

LangGraph 的執行模型基於 Google Pregel 論文的 BSP(Bulk Synchronous Parallel)算法:

flowchart TD
  Start([開始])

  subgraph SuperStep["Super-step 循環"]
    Plan["1. Plan: 計算活躍節點<br/>(版本比較)"]
    Execute["2. Execute: 並行執行<br/>(ThreadPoolExecutor)"]
    Update["3. Update: 聚合通道更新<br/>(channel.update())"]
    Checkpoint["4. Checkpoint: 保存狀態<br/>(sync/async)"]
  end

  Check{還有活躍節點?}
  End([結束])

  Start --> Plan
  Plan --> Execute --> Update --> Checkpoint --> Check
  Check -->|是| Plan
  Check -->|否| End

特點:

  • 確定性:版本追蹤保證相同輸入產生相同結果
  • 並行性:節點天然並行執行
  • 可恢復:任意超步都可作為檢查點恢復

3.2 Google ADK 的事件溯源模型

flowchart TD
  Start([開始])

  subgraph RunnerLoop["Runner Loop"]
    Load["1. 加載 Session + 事件歷史"]
    Loop["2. 代理推理-行動循環<br/>- 調用 LLM<br/>- 執行工具<br/>- 生成 Event"]
    Persist["3. 持久化 Event 到 Session"]
    Compress["4. 可選: 事件壓縮"]
  end

  End([結束])

  Start --> Load --> Loop --> Persist --> Compress --> End

3.3 執行模型對比表

特性LangGraph (BSP)Google ADK (事件溯源)
確定性高 (版本追蹤)中 (事件順序)
並行性原生並行節點順序代理執行
恢復粒度超步級事件級
記憶體開銷通道版本追蹤事件累積
適用場景複雜工作流多代理系統

4. 持久化與狀態管理

4.1 Checkpoint 系統對比

特性Claude Agent SDKLangChain V1LangGraphGoogle ADK
持久化方式CLI 內部委託 LangGraph原生 Checkpoint事件存儲
粒度會話級步驟級超步級事件級
時間旅行✗✗✓✗
分支/合併✗✗✓✗
版本追蹤✗✗✓ (通道版本)✗

4.2 存儲後端支持

後端Claude Agent SDKLangChain V1LangGraphGoogle ADK
內存✓✓✓✓
SQLite✗✓✓✓
PostgreSQL✗✓✓✓
Redis✗✓✗✗
Spanner✗✗✗✓
Vertex AI✗✗✗✓

5. 人在迴圈 (Human-in-the-Loop)

5.1 實現方式對比

框架實現方式代碼示例
Claude Agent SDKHook 系統hooks={"PreToolUse": [...]}
LangChain V1HumanInTheLoopMiddlewaremiddleware=[HumanInTheLoopMiddleware()]
LangGraphinterrupt() + Commandanswer = interrupt("Approve?")
Google ADK插件回調await interrupt({"question": "..."})

5.2 LangGraph 的中斷機制

LangGraph 提供了最完整的人在迴圈支持:

from langgraph.types import interrupt, Command

def review_node(state: State):
    # 動態中斷 - 等待人工輸入
    approval = interrupt({
        "question": "Approve this action?",
        "data": state["pending_action"]
    })
    if approval:
        return {"approved": True}
    return {"approved": False}

# 靜態中斷點
graph = builder.compile(
    checkpointer=checkpointer,
    interrupt_before=["tools"],   # 工具執行前中斷
    interrupt_after=["chatbot"],  # 聊天後中斷
)

# 恢復執行
result = graph.invoke(
    Command(resume="approved"),
    config={"configurable": {"thread_id": "1"}}
)

5.3 功能對比

特性Claude Agent SDKLangChain V1LangGraphGoogle ADK
動態中斷✓ (Hook)✓✓✓
靜態中斷點✗✗✓✗
恢復值傳遞✓✓✓ (Command)✓
中斷 ID 追蹤✗✗✓✗
狀態編輯✗✗✓✗

6. 多代理架構

6.1 支持的模式

模式Claude Agent SDKLangChain V1LangGraphGoogle ADK
Network (全連接)✗✗✓✗
Supervisor (監督者)✗✗✓✓
Hierarchical (分層)✗✗✓ (子圖)✓ (代理樹)
Handoffs (切換)✗✗✓ (Command)✓
Sequential (順序)✗✗✓✓
Parallel (並行)✗✗✓ (Send)✓

6.2 LangGraph 多代理示例

from langgraph.types import Command, Send

# Supervisor 模式
def supervisor(state: State):
    response = llm.invoke(f"Route to: {agents}")
    return Command(goto=response.agent_name)

# 動態並行 (Map-Reduce)
def route(state: State):
    return [Send("process", {"item": item}) for item in state["items"]]

# 子圖嵌套
subgraph = create_subgraph()
builder.add_node("sub_workflow", subgraph)

6.3 Google ADK 多代理示例

from google.adk.agents import Agent, SequentialAgent, ParallelAgent

# 代理樹
root = Agent(
    name="root",
    sub_agents=[
        SequentialAgent(name="pipeline", sub_agents=[a1, a2]),
        ParallelAgent(name="parallel", sub_agents=[b1, b2]),
    ]
)

7. 流式處理

7.1 流模式對比

模式Claude Agent SDKLangChain V1LangGraphGoogle ADK
values (完整狀態)✓✓✓✓
updates (增量)✗✓✓✓
messages (LLM token)✓✓✓✓
custom (自定義)✗✗✓✓
debug (詳細)✗✗✓✗

7.2 LangGraph 流式處理

LangGraph 提供了最豐富的流模式:

# 5 種流模式
for chunk in graph.stream(input, stream_mode="values"):    # 完整狀態
    print(chunk)

for chunk in graph.stream(input, stream_mode="updates"):   # 增量更新
    print(chunk)

for chunk in graph.stream(input, stream_mode="messages"):  # LLM token
    print(chunk)

for chunk in graph.stream(input, stream_mode="custom"):    # 自定義
    print(chunk)

for chunk in graph.stream(input, stream_mode="debug"):     # 詳細追蹤
    print(chunk)

# 自定義流寫入
from langgraph.config import get_stream_writer

def my_node(state):
    writer = get_stream_writer()
    writer({"progress": 50})  # 發送自定義信號
    # 處理邏輯...
    writer({"progress": 100})
    return state

8. 開發體驗對比

8.1 快速開始代碼

Claude Agent SDK (最簡潔):

from claude_agent_sdk import query

async for msg in query(prompt="Hello"):
    print(msg)

LangChain V1 (高層 API):

from langchain.agents import create_agent

agent = create_agent(
    model="anthropic:claude-sonnet-4-5-20250929",
    tools=[...]
)
result = agent.invoke({"messages": [...]})

LangGraph (低層控制):

from langgraph.graph import StateGraph, START, END

builder = StateGraph(State)
builder.add_node("chatbot", chatbot)
builder.add_edge(START, "chatbot")
builder.add_edge("chatbot", END)
graph = builder.compile()
result = graph.invoke({"messages": [...]})

Google ADK (企業級):

from google.adk import Agent, Runner
from google.adk.sessions import InMemorySessionService

runner = Runner(
    app_name="app",
    agent=Agent(name="assistant", model="gemini-2.5-flash"),
    session_service=InMemorySessionService()
)
result = runner.run(user_id="u", session_id="s", new_message=content)

8.2 學習曲線

框架學習曲線文檔質量示例數量概念複雜度
Claude Agent SDK低良好16低
LangChain V1中良好~20中
LangGraph中-高優秀30+高 (BSP, Channel)
Google ADK高詳細60+中

9. 擴展能力對比

9.1 擴展點數量

擴展類型Claude Agent SDKLangChain V1LangGraphGoogle ADK
自定義節點✗函數/Runnable函數/RunnableAgent/Tool
自定義通道✗✗BaseChannel✗
自定義存儲✗✗BaseCheckpointSaverBaseSessionService
中間件/插件Hook (6點)AgentMiddleware✗BasePlugin (8點)
工具權限can_use_toolwrap_tool_call條件邊before_tool_callback
LLM 擴展✗BaseChatModel (20+)BaseChatModelBaseLlm (5+)
傳輸層擴展Transport ABC✗✗✗

擴展點總數: Claude SDK 8 | LangChain 生態 20+ | Google ADK 15+

9.2 擴展難度

擴展類型Claude Agent SDKLangChain 生態Google ADK
自定義工具簡單 (@tool)簡單 (@tool)簡單 (函數)
自定義節點N/A簡單 (函數)中等 (Agent)
自定義通道N/A中等 (ABC)N/A
自定義存儲N/A中等 (ABC)中等 (ABC)
自定義中間件中等 (Hook)簡單 (裝飾器)中等 (Plugin)

10. 部署和運維

10.1 部署選項

部署方式Claude Agent SDKLangChain V1LangGraphGoogle ADK
本地開發✓✓✓✓
Docker✗✓✓✓
Kubernetes✗✓✓✓
LangGraph Cloud✗✗✓✗
Vertex AI✗✗✗✓
內建 CLI✗✗✗✓

10.2 可觀測性

特性Claude Agent SDKLangChain V1LangGraphGoogle ADK
日誌基本基本基本結構化
追蹤✗LangSmithLangSmithOpenTelemetry
指標✗✗✗✓
評估框架✗✗✗✓ (內建)

11. 代碼質量與擴展度綜合評分

11.1 三方對比(將 LangChain V1 + LangGraph 合併為一個生態系統)

評估維度Claude Agent SDKLangChain 生態Google ADK
類型安全4/55/54/5
架構清晰度4/55/53/5
錯誤處理3/55/54/5
測試質量3/55/55/5
文檔質量4/55/55/5
擴展點數量2/55/54/5
擴展難度4/54/53/5
組合能力2/55/54/5
第三方集成2/55/54/5
代碼簡潔度5/53/52/5
────────────────────────────────────────────
代碼質量總分3.6/54.6/53.9/5
擴展度總分2.5/54.8/53.8/5
綜合評分3.1/54.7/53.9/5

12. 適用場景分析

12.1 按框架選擇

框架最適合場景
Claude Agent SDKClaude 專屬應用、快速原型、IDE 集成、簡單工作流
LangChain V1多模型支持、中間件密集、現有 LangChain 生態、結構化輸出
LangGraph複雜工作流、需要持久化/恢復、人在迴圈、多代理協作、循環圖
Google ADK企業級應用、Google Cloud 集成、實時音頻、完整平台需求

12.2 決策矩陣

需求推薦框架原因
只用 ClaudeClaude Agent SDK最簡單直接
多模型 + 簡單工作流LangChain V1高層 API
複雜狀態管理LangGraph原生持久化
需要時間旅行LangGraph狀態歷史
人在迴圈 (高級)LangGraphinterrupt/Command
多代理協作LangGraph 或 ADK子圖/代理樹
Google CloudGoogle ADK原生集成
企業部署Google ADK完整工具鏈
MCP 工具Claude Agent SDK核心功能

12.3 組合使用建議

flowchart TD
  subgraph Combo1["推薦組合 1: LangChain V1 + LangGraph"]
    L1["LangChain V1<br/>高層 create_agent() API"]
    L2["LangGraph<br/>底層持久化和人在迴圈"]
    L1 --> L2
  end

  subgraph Combo2["推薦組合 2: LangGraph + LangChain Core"]
    LG["LangGraph<br/>構建圖"]
    LC["LangChain Core<br/>LLM 和工具"]
    LG --> LC
  end

  subgraph Combo3["推薦組合 3: Google ADK (獨立)"]
    ADK["Google ADK<br/>完整企業級平台"]
  end

  Combo1_use["適合: 需要中間件 + 持久化"]
  Combo2_use["適合: 複雜工作流,最大控制"]
  Combo3_use["適合: Google Cloud 用戶"]

  Combo1 --- Combo1_use
  Combo2 --- Combo2_use
  Combo3 --- Combo3_use

13. 總結

13.1 核心差異一覽

維度Claude Agent SDKLangChain V1LangGraphGoogle ADK
設計哲學簡單直接可組合中間件圖編排引擎企業級平台
代碼量最少中等中等最多
學習曲線最低中等中-高最高
靈活性低高最高中
功能完整度基礎中等中等完整
生產就緒開發階段生產可用生產可用企業級
狀態管理CLI 內部委託原生 (核心)事件溯源

13.2 選擇建議

  1. 選 Claude Agent SDK 如果:

    • 只使用 Claude 模型
    • 需要最快的開發速度
    • 不需要複雜的狀態管理
    • 想要使用 MCP 工具生態
  2. 選 LangChain V1 如果:

    • 需要多模型支持
    • 重視中間件架構
    • 想要高層 API + LangGraph 底層能力
  3. 選 LangGraph 如果:

    • 需要複雜的圖工作流
    • 需要原生持久化和時間旅行
    • 需要高級人在迴圈功能
    • 需要最大的架構控制
  4. 選 Google ADK 如果:

    • 構建企業級應用
    • 使用 Google Cloud
    • 需要完整的 DevOps 工具
    • 需要多代理樹結構

附錄:快速參考

A. 安裝命令

# Claude Agent SDK
pip install claude-agent-sdk

# LangChain V1
pip install langchain langchain-anthropic

# LangGraph
pip install langgraph langgraph-checkpoint-sqlite

# Google ADK
pip install google-adk

B. 最小代碼範例

# === Claude Agent SDK ===
from claude_agent_sdk import query
async for msg in query(prompt="Hello"): print(msg)

# === LangChain V1 ===
from langchain.agents import create_agent
agent = create_agent(model="anthropic:claude-sonnet-4-5-20250929")
result = agent.invoke({"messages": [{"role": "user", "content": "Hello"}]})

# === LangGraph ===
from langgraph.graph import StateGraph, START, END
builder = StateGraph(dict)
builder.add_node("echo", lambda x: x)
builder.add_edge(START, "echo")
builder.add_edge("echo", END)
graph = builder.compile()
result = graph.invoke({"message": "Hello"})

# === Google ADK ===
from google.adk import Agent, Runner
from google.adk.sessions import InMemorySessionService
runner = Runner(
    app_name="app",
    agent=Agent(name="a", model="gemini-2.5-flash"),
    session_service=InMemorySessionService()
)
result = runner.run(user_id="u", session_id="s", new_message=content)

C. 官方資源

框架文檔源碼
Claude Agent SDKclaude.com/docsgithub.com/anthropics/claude-agent-sdk-python
LangChain V1python.langchain.comgithub.com/langchain-ai/langchain
LangGraphlangchain-ai.github.io/langgraphgithub.com/langchain-ai/langgraph
Google ADKcloud.google.com/adkgithub.com/google/adk-python