關于Langgraph中的節點和邊的深入理解 原創
“ Langgraph的核心功能點在Nodes節點和Edges邊,Nodes負責執行任務,Edges負責任務流程。”
在使用Langgraph開發框架的過程中發現一個問題,其官方文檔給的案例都是比較簡單的案例,雖然能讓我們弄明白其運作機制,但無法真正解決業務問題;因為實際的業務場景要遠比官方案例復雜的多。
所以,在學習框架的使用過程中感覺好像沒什么難度;但等到真正結合實際業務時才發現好像束手束腳,有點無從下手。
之所以產生這種問題的原因就在于,我們沒有真正理解其設計哲學和其運作機制。下面,我們就來深入理解一下Langgraph中的節點和邊。
Langgraph的節點和邊
在Langgraph的官網介紹中,Langgraph的三個核心組件分別是State,Nodes-節點和Edges-邊。而State只是一個用來存儲數據的數據結構,其功能類似于緩存;而Nodes節點和Edges邊才是Langgraph業務處理的核心組件。
節點
節點是Langgraph執行業務功能的核心組件,所有的業務邏輯都是由節點來完成的;而節點中可以是一個模型調用,也可以是工具調用,其就是一個功能點,來完成特定的任務;之后,再把執行結果交給下個節點繼續執行。

而節點之間的數據流轉,就是通過邊來實現的,邊會告訴節點下一個節點應該是哪一個。
在節點中有兩個特殊節點,START節點和END節點,START節點是一個特殊節點,其是智能體的入口,接受用戶的請求,并傳入到圖中;而END節點也是一個特殊節點,其作用是終止智能體,當調用節點完成任務之后進入此節點就代表任務結束。
節點緩存
LangGraph 支持根據節點輸入對任務/節點進行緩存。要使用緩存:
- 在編譯圖(或指定入口點)時指定緩存。
- 為節點指定緩存策略。每種緩存策略支持:
- ?
?key_func??? 用于根據節點輸入生成緩存鍵,默認為輸入與 pickle 的??hash??。 - ?
?ttl??緩存的存活時間(秒)。如果未指定,緩存將永不 expires。
邊
邊在Langgraph中類似于路由,當用戶請求通過START節點進入智能體之后;START之后執行的下一個節點就是通過邊指定的。

不過要注意的是條件邊,如果你想可選地路由到 1 個或多個邊(或可選地終止),你可以使用 add_conditional_edges 方法。此方法接受一個節點名稱和一個在該節點執行后調用的“路由函數”。
graph.add_conditional_edges("node_a", routing_function)入口點
入口點是圖啟動時運行的第一個節點。你可以使用從虛擬 ??START??? 節點到要執行的第一個節點的 ??add_edge?? 方法來指定圖的入口點。
from langgraph.graph import START
graph.add_edge(START, "node_a")
條件入口點?
條件入口點允許你根據自定義邏輯從不同的節點開始。你可以使用從虛擬 ??START??? 節點到此的 ??add_conditional_edges??。
fromlanggraph.graphimportSTARTgraph.add_conditional_edges(START,routing_function)你可以選擇提供一個字典,將 ??routing_function?? 的輸出映射到下一個節點的名稱。
graph.add_conditional_edges(START, routing_function, {True: "node_b", False: "node_c"})本文轉載自??AI探索時代?? 作者:DFires

















