在上一篇文張中,我們透過 Google Agent 白皮書確立了一個核心共識:AI 應用的未來屬於能夠感知、思考、採取行動的智能代理(Agent)。而一個強大的代理由三個部分組成:聰明的「大腦」(LLM)、連接世界萬物的「手腳」(工具),以及指揮這一切的「神經系統」(編排層)。
但從一個絕妙的代理構想,到一個能在生產環境中穩定運作、為企業創造的應用,中間隔著一條名為「工程實現」的鴻溝。這個複雜的「神經系統」涉及狀態管理、工具調用、錯誤處理、記憶儲存需要可靠的建造嗎?這就是代理框架存在的意義。它是一個強健的架構,為我們的 Agent 注入結構與生命力。
今天,我們將深入探討 Agent 框架的核心價值,在市場兩大核心的解決方案上進行比較:Google 傾力打造的 Agent Development Kit (ADK),與開源社群的自主靈活的 LangGraph。
更重要的是,我們將透過比較,探討一個根本性的問題:當 No-Code / Low-Code 工具讓建構 Agent 整合變得前所未有的簡單時,為什麼我們還需要選擇編寫程式碼(Code-First)?
在動手比較之前,我們必須清楚:Agent 框架究竟解決了什麼問題?為何我們不能簡單的直接用 OpenAI 提供的 SDK 或 API 來建構 Agent?
from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
model="gpt-4.1",
input="用一句話解釋:為何我們不能簡單的直接用 OpenAI 提供的 SDK 或 API 來建構 Agent?"
)
print(resp.output_text)
一個簡單的 For Loop 或許可以支撐一個少數應用場景,但當我們將 LLM 應用推到生產級別時,就不能繼續抱持著驗證、試錯、學習的心態來看待,不然會立刻在以下幾個方面暴露出脆弱性。
Agent 的執行是多步驟的。在漫長的任務鏈中,如何可靠地追蹤對話歷史、中間工具的輸出、失敗的次數?這就是記憶(Memory) 的範疇:
隨著計算的進行而維持和更新的上下文或記憶。它確保圖中的每個步驟都能存取來自先前步驟的相關信息,從而允許基於整個過程中累積的數據進行動態決策。
真實的業務流程不是直線。如果工具呼叫失敗怎麼辦?需要使用者確認才能執行下一步呢?
當 Agent 行為不如預期時,如何快速除錯?
如何確保一個能操作資料庫、發送郵件甚至下單的 Agent 不會「失控」?
Agent 框架的核心價值,就是將包含但不限於上述的工程問題進行抽象和標準化,提供一個健壯的股價或引擎,讓開發者可以專注於業務本身,而非重複造輪子。
由下圖中的 Google ADK 功能組成圖中,我們可以看出一個現代化的 Agent 框架,遠遠不只是包裝一個 LLM 而已。它實際上是一個模組化的 SDK,設計目的是為了讓開發者能在複雜、真實世界的應用場景中,構建可部署、可維運、可擴展的多 Agent 系統。
在深入探討 Agent 開發框架時,我們必須先理解兩種截然不同的構建哲學。這兩種哲學分野,恰好可以透過比較 n8n 與 Google ADK/LangGraph 來清晰地呈現。
在我們深入比較之前,關鍵的認知是:這兩者都是 Code-First 框架,旨在賦予開發者用程式碼定義 Agent 行為的能力。它們的差異在於抽象化的層級與設計哲學。
因為我個人接觸到的第一個 Agent 框架就是 Google ADK,當時他的開箱即用的便利性讓我印象深刻,我也透過它的視角認識到其他框架以及各種概念,接下來在更進接的應用場景中,需要進階控制以及一定細膩度的地方,我跟大家一樣自然而然的就找到 LangGraph ,也不斷在這條路上學習著
特性維度 | Google Agent Development Kit (ADK) | LangGraph (by LangChain) |
---|---|---|
核心典範 | 模組化、階層式的多 Agent 系統 | 有狀態、明確的圖形化控制流程 |
開發體驗 | Code-First,但提供更高層次的抽象化來處理通用模式,開發體驗更接近傳統軟體工程。 | Code-First,但更偏向「自己動手做 (Build it yourself)」,開發者需自行定義圖中的所有節點與邊。 |
控制 vs. 抽象 | 更高層次的抽象:ADK 封裝了許多底層邏輯,讓開發者專注於 Agent 的業務能力與協作,而非流程的每個細節。 | 低層次、高控制:開發者對工作流程擁有完全、精細的控制權,可以打造任何形式的循環或條件分支。 |
多 Agent 架構 | 原生為階層式設計:明確區分協調者 (Coordinator) 與子代理 (Sub-agents),適合構建複雜的分工協作體系。 | 極度靈活:多 Agent 的互動方式完全由開發者定義的圖結構決定,可以是階層式、廣播式或任何拓撲結構。 |
狀態管理 | 由框架管理:狀態和上下文 (Context) 在會話 (Session) 中被管理,開發者無需過度操心底層實現。 | 由開發者明確定義:存在一個集中的、明確的狀態物件 (State Object),所有節點都對其進行讀取和寫入。 |
生態系整合 | 為 Google Cloud 深度優化:與 Gemini 模型、Vertex AI Search 和其他 Google Cloud 服務無縫整合。 | 與 LangChain 生態系緊密整合:可以輕易利用 LangChain 中海量的模型、工具和資料載入器。 |
部署與維運 | 簡化部署:作為 Google Cloud Vertex AI 平台的一部分,能更輕易地部署為可擴展、受管理的服務。 | 開發者完全負責:作為一個函式庫,需要開發者自行處理容器化 (Docker)、部署與維運 (K8s, VM 等)。 |
最適用於 | 可擴展、生產就緒的階層式 Agent 團隊:適合需要構建穩定、可維護且具備明確分工結構的企業級應用。 | 複雜、週期性且高度可審計的工作流程:當你需要完全透明的流程、非標準的循環邏輯,以及對每一步都有精確控制時。 |
Google ADK 則更像是為那些希望快速建構可擴展、可維護的 Agent 團隊的「產品工程師」所設計。在以下場景中,ADK 將會大放異彩:
當你的目標是在 Google Cloud 生態中,高效地建立一個結構清晰、易於擴展且能立即投入生產的 Agent 系統時,ADK 提供了更精簡、功能更全面的解決方案。
LangGraph 是為那些希望精準掌控 Agent 一舉一動的「架構師」所準備的。當你遇到以下情況時,它會是你的最佳選擇:
當你需要的是從零開始、鉅細靡遺地打造一個高度客製化、流程完全透明的 Agent 系統時,LangGraph 提供了實現這個目標所需的底層控制權。
我的 LLM Agent 開發之旅,始於 Google ADK。當時,它「開箱即用」的便利性與高度整合的開發體驗,為我打開了 Agent 開發的大門。ADK 就像優秀的嚮導,讓我快速建立起對 LLM 應用核心概念的理解,我從他的完整度中反向推敲出在這領域會遇到的挑戰。
然而,隨著應用場景的深入,當我需要應對更複雜、非線性的流程,並要求對 Agent 的每一個決策步驟進行精準、可審計的控制時,我跟許多開發者一樣,自然而然地走向了 LangGraph。
這也是為何我選擇特地推薦這兩套框架,分享給所有想開始踏上 LLM 應用開發的挑戰者們。
References: