在智能體開發框架——Langgraph中的執行流程分析 原創
“ 智能體的基礎是大模型的函數調用,而框架只是對其能力的封裝。”
我們首先要明確一個概念,即智能體是基于大模型應用設計的一套機制,其本質是大模型提供的函數調用功能(function call),包括現在的MCP服務;而框架只是對這些原生能力的封裝,便于開發人員進行功能開發,而不用去處理太多細節性問題。
所以,在做大模型開發時,雖然要學好框架的使用,但更重要的是要搞明白智能體的運行機制,已經框架在其上做了哪些完善和增強。
Langgraph框架的運作流程
在Langgraph中的核心概念主要有三個——State(狀態),Nodes(節點),Edges(邊);其中狀態的主要載體是StateGraph狀態圖,其作用是一個全局變量,用來保存智能體執行過程中的數據;而節點是一個個功能節點,比如說模型節點,工具節點等;而邊應該叫做條件邊,意思是根據邊來判斷下一個應該執行哪個節點。
簡而言之:節點完成工作,邊告訴下一步做什么,而State在節點和邊中傳遞參數。

因此,Langgraph開發的智能體是一個基于節點和邊為主體的整體,而其有兩個特殊節點——start開始節點和end結束節點;所謂的開始節點是只智能體的入口,而結束節點是智能體的終止節點,其它節點則都屬于功能節點。
在我們開發一個智能體的過程中,首先我們要指定開始節點和結束節點,然后再根據功能需求填充功能節點。
如下,添加節點和邊,并編譯圖:

其中節點的執行過程是順序的以及并行的,順序的是指一個節點執行完畢之后,并把執行結果保存到State中;然后根據邊再執行下一個節點或多個節點;之所以又是并行的原因是因為,一個節點執行完成之后可以根據邊執行一個或多個下一個節點。
這里說起來可能有點繞,但Langgraph中確實支持多節點執行。
邊定義了邏輯如何路由以及圖如何決定停止。這是代理工作以及不同節點如何相互通信的重要組成部分

在Langgraph中邊有多種類型,主要包括以下幾種:
- 普通邊:直接從一個節點到下一個節點。
- 條件邊:調用一個函數來確定接下來要前往哪個(或哪些)節點。
- 入口點:當用戶輸入到達時,首先調用哪個節點。
- 條件入口點:調用一個函數來確定當用戶輸入到達時,首先調用哪個(或哪些)節點。
一個節點可以有多個出邊。如果一個節點有多個出邊,所有這些目標節點將在下一個超級步驟中并行執行,這就是可以多節點執行的原因。
Langgraph之所以強大的原因,還在于StateGraph狀態圖中,原因是因為在狀態圖中可以保存節點執行的所有中間結果;這樣當智能體由于某種原因被迫中斷時,依然可以根據狀態圖中的執行結果,隨時恢復到當時的運行狀態。
本文轉載自???????AI探索時代??????? 作者:DFires

















