# 友達課程:LLM-LangChain(4) - LangGraph Hands-On - 課後測驗問答集 1. 推出 LangGraph 主要是為了解決早期 LangChain 在哪個方面的不足? * A:缺乏足夠的模型整合 * B:無法處理 RAG 流程 * C:對流程的「可控性」(Controllability)不足 * D:執行速度過慢 > 答案:C > 解說:早期的 LangChain 高階介面雖然容易使用,但隱藏了太多細節(如隱藏的提示詞(prompt)),使得開發者在進入正式環境時,難以克制化和控制 Agent 的行為。LangGraph 的誕生就是為了提供這種低階的「可控性」。 2. LangGraph 的「執行環境(Runtime)」設計旨在提供哪些正式環境所需的關鍵功能? * A:自動模型微調與部署 * B:更快的模型推論(Inference) * C:持久化執行(Durable execution)、串流(Streaming)和人本迴圈(Human-in-the-Loop) * D:內建的向量資料庫 > 答案:C > 解說:這是描述 LangGraph runtime 的三大特性,都是針對正式環境設計的:持久化執行(Durable execution) - 允許長時間執行的任務在出錯時從檢查點恢復、串流(Streaming) - 原生支援將每一步的執行過程即時回傳給使用者、人本迴圈(Human-in-the-Loop) - 框架本身就支援在流程中加入人為審核的步驟。 3. LangChain 1.0 在架構上最關鍵的變革是什麼? * A:宣布 LangGraph 為獨立專案,與 LangChain 脫鉤 * B:棄用 Python,全面轉向 Typescript * C:它被重寫並建立在 LangGraph 之上(built on top of LangGraph) * D:簡化了所有高階介面,移除了 Agent 功能 > 答案:C > 解說:LangChain 1.0 的關鍵部分就是「重寫並建立在 LangGraph 智商」。這意味著 LangChain 1.0 的高階介面(如 `create_agent`)現在底層是由 LangGraph 強大的執行環境驅動的,從而同時獲得了易用性和正式上線級的穩定性。 4. LangGraph 在設計工作流(workflow)時的一個關鍵優勢是它允許混合哪兩種不同類型的組件? * A:Python 和 Typescript 節點 * B:CPU 和 GPU 運算 * C:確定性的步驟(Deterministic components)和代理性的步驟(Agentic components) * D:線上 API 和離線資料庫 > 答案:C > 解說:LangGraph 的強大之處在於,你可以設計一個混合型工作流。例如,流程的第一步可以是一個「確定性的」Python 函數(Deterministic,如資料預處理),下一步再交給一個「代理性的」Agent(Agentic,由 LLM 驅動決策),這種靈活性是 `create_agent` 標準循環難以實現的。 5. LangGraph 的架構設計,使其在處理複雜工作流時,與傳統的 LangChain 相比有何根本不同? * A:LangGraph 只能處理線性序列 * B:LangGraph 依賴 Middleware 來實現所有控制 * C:LangGraph 允許構建「有環」的圖(Cyclical Graphs),而 LangChain 主要用於「有向無環圖」(DAGs) * D:LangGraph 無法調用 LangChain 的工具 > 答案:C > 解說:LangGraph 是為「極度客製化」的工作流和「Agent 循環」而設計的。Agent 循環(思考 -> 行動 -> 觀察 -> 再思考)本質上就是一個「環」(Loop)。LangGraph 的圖結構(節點和邊)允許流程根據條件返回到先前的步驟或在步驟間任意跳轉,這是 LangGraph 的核心能力,使其能處理複雜的狀態機和循環,而 LangChain 主要用於線性的、一步到底的流程。 6. 在 LangGraph 中,一個「節點(Node)」通常代表什麼? * A:一個用戶輸入 * B:一個資料庫連接 * C:一個工作單元,例如一個 Python 函數或一個 LangChain 鏈 * D:一個條件判斷(If/Else) > 答案:C > 解說:根據創辦人的描述,是希望視為「具備混合確定性組件(deterministric components)和代理性組建(agentic components)」的工作單元,此工作單元稱之為「節點」。 7. LangGraph 如何實現「人本迴圈(Human-in-the-Loop)」功能? * A:透過 `create_agent` 的 Middleware 自動實現 * B:只能透過外部 API 不斷輪詢來中斷流程 * C:框架原生支援流程的暫停(pausing)和更新(updating)等待人為輸入後再繼續 * D:LangGraph 並不支援人為介入 > 答案:C > 解說:LangChain 團隊意識到人本迴圈在應用原型(prototype)中可以很簡單的實現,例如:直接性的採用 Python 的 `input()` 函式,但實際上在上線環境中難以良好呈現。因此,LangGraph 在架構設計時就考慮了這一點,其執行環境原生支援流程的「暫停」,這允許流程在某個節點後停止,等待人為介入(例如透過一個 Web UI 等等),然後再從該點繼續執行,這是其持久化狀態管理的一部分。 8. LangGraph 的「原生串流(Native Streaming)」功能有何重要意義? * A:它只能串流最終的答案 * B:它會降低 Agent 的執行速度 * C:它是一個「一等公民」特性,允許即時查看 Agent 的每一步思考和中間結果 * D:它只適用於 Typescript 版本 > 答案:C > 解說:串流現在是 LangGraph 執行環境的「原生一等公民」(native first class citizen)。這與早期 LangChain 必須「改造」(retrofit)才能支援串流不同,這意味著開發者不單只能看到 LLM 最終的回應結果,還可以即時觀察到 Agent 每一步狀態的變化、工具調用和中間結果,這對於 UI/UX、監控、偵錯至關重要。 9. LangGraph 的核心設計原則之一是什麼? * A:抽象化所有提示和架構,提供一鍵式解決方案 * B:專注於抽象化底層硬體 * C:不抽象化提示(prompts)或架構(architecture) * D:專注於抽象化資料庫連接 > 答案:C > 解說:在官方技術文件中的 LangGraph Overview 「Core benefits」一節開頭提到:「LangGraph does not abstract prompts or architecture...」,這意味著開發者需要自行定義這些,從而獲得低階控制權。 10. LangGraph(v1.0) 的靈感來自哪兩個專案? * A:TensorFlow 和 PyTorch * B:React 和 Vue * C:Pregel 和 Apache Beam * D:LangChain 和 LangSmith > 答案:C > 解說:Pregel 是一個大規模圖形處理模型,其核心是「想頂點一樣思考」(think like a vertex),讓每個節點在同步的「超步驟」(superstep)中獨立計算並傳遞訊息;LangGraph 導入了這種「以節點為中心」的計算模式,將 Agent 工作流程中的每個函數或工具調用視為一個節點,並在節點間傳遞和更新一個共享的「狀態」(State)。而 Apache Beam 是一個同意的資料處理模型,其核心是將資料管線(pipeline)的「定義」與實際執行的「執行器」(runner)徹底分離;LangGraph 導入了這種「定義與執行分離」的概念,讓你先以抽象的方式定義一個工作流程圖(Graph),然後再將其「編譯」(compile)成一個可實際執行的 runtime。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up