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點)AgentMiddlewareBasePlugin (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