昨天我們提到 LangGraph 是「流程圖」,今天就來更仔細看它的核心:StateGraph。
StateGraph 的確可以被理解成一種 狀態機 (State Machine),但更精確地說,它是一個 定義節點 (nodes) 與邊 (edges) 的框架,用來描述「狀態如何隨著輸入更新」以及「該往哪個節點移動」。
在LangGraph裡:
State是一個共享資料結構(例如對話歷史、上下文變數)。
Node是一個函式,會接收並更新state。
Edge是節點之間的轉換邏輯,可以是固定路徑,也可以是條件式(conditional edges)。
舉個例子:
START → ToolNode → 得到回應 → FinalResponse → END
如果ToolNode失敗,就透過conditional edge走到ErrorHandler節點。
所以StateGraph並不是單純的流程圖,它更像是「帶有共享狀態的有向圖(DAG)」。
明確:節點就是函式,邊就是邏輯,透明且易於追蹤
可控:比傳統 gent更能強制走特定邏輯,不會隨機亂跑
可擴充:想加分支?加一個node和edge就能插入到流程中
LangChain偏重在「呼叫模型 + 工具」的模組化抽象。
LangGraph(StateGraph)則偏重在「控制流程與狀態流轉」。
你可以把LangChain想像成「積木」,而LangGraph的StateGraph是「積木之間的軌道」。兩者結合,就能組裝出完整可控的工作流。
StateGraph 的重點在「共享狀態的更新」而不只是事件驅動。
它不是單純的 有限狀態機 FSM,更準確是「帶有狀態的 DAG」。
下一步 (Day16),我們就要回到 Tool 本身:既然工具這麼多,到底該怎麼挑、怎麼用?