智慧體課程文件
什麼是 LangGraph?
並獲得增強的文件體驗
開始使用
什麼是 LangGraph?
LangGraph
是由 LangChain 開發的框架,用於管理整合 LLM 的應用程式的控制流。
LangGraph 與 LangChain 有何不同?
LangChain 提供了一個標準介面,用於與模型和其他元件進行互動,這對於檢索、LLM 呼叫和工具呼叫很有用。LangChain 中的類可以在 LangGraph 中使用,但不是必須使用。
這些包是不同的,可以單獨使用,但最終,您在網上找到的所有資源都會將這兩個包一起使用。
我應該何時使用 LangGraph?
控制與自由
在設計 AI 應用程式時,您會面臨控制與自由之間的根本權衡。
- 自由讓您的 LLM 有更多空間進行創造性思考並解決意外問題。
- 控制讓您能夠確保可預測的行為並維護護欄。
程式碼代理,例如您在 smolagents 中遇到的那些,非常自由。它們可以在一個動作步驟中呼叫多個工具,建立自己的工具等等。然而,這種行為可能使它們比使用 JSON 的常規代理更難以預測和控制!
LangGraph
處於另一端,當您需要對代理的執行進行“控制”時,它會大放異彩。
當您需要控制應用程式時,LangGraph 尤其有價值。它為您提供了構建遵循可預測過程的應用程式的工具,同時仍然利用了 LLM 的強大功能。
簡單來說,如果您的應用程式涉及一系列需要以特定方式協調的步驟,並且在每個連線點都需要做出決策,那麼 LangGraph 提供了您所需的結構。
例如,假設我們要構建一個可以回答某些文件中問題的 LLM 助手。
由於 LLM 最擅長理解文字,因此在能夠回答問題之前,您需要將其他複雜的模態(圖表、表格)轉換為文字。然而,這個選擇取決於您擁有的文件型別!
我選擇將這種分支表示如下:

💡 提示: 左側不是代理,因為這裡不涉及工具呼叫。但右側需要編寫一些程式碼來查詢 xls(轉換為 pandas 並操作它)。
雖然這種分支是確定性的,但您也可以設計根據 LLM 輸出進行條件分支,使其成為不確定性的。
LangGraph 擅長的關鍵場景包括:
- 需要明確控制流程的多步驟推理過程
- 需要在步驟之間保持狀態的應用程式
- 結合確定性邏輯和 AI 功能的系統
- 需要人工干預的工作流
- 具有多個元件協同工作的複雜代理架構
本質上,只要有可能,作為一個人,根據每個動作的輸出設計一個動作流程,並相應地決定下一步要執行什麼。在這種情況下,LangGraph 是適合您的正確框架!
在我看來,LangGraph
是市場上最成熟的代理框架。
LangGraph 如何工作?
LangGraph
的核心是使用有向圖結構來定義應用程式的流程
- 節點代表單獨的處理步驟(例如呼叫 LLM、使用工具或做出決策)。
- 邊定義了步驟之間可能的轉換。
- 狀態由使用者定義,並在執行期間在節點之間維護和傳遞。當決定下一個要定位的節點時,我們檢視的就是當前狀態。
我們將在下一章中更詳細地探討這些基本模組!
它與普通 Python 有何不同?為什麼我需要 LangGraph?
您可能會想:“我可以使用帶有 if-else 語句的普通 Python 程式碼來處理所有這些流程,對吧?”
雖然從技術上講是這樣,但 LangGraph 在構建複雜系統方面提供了一些優勢,優於普通的 Python。您可以在沒有 LangGraph 的情況下構建相同的應用程式,但它為您提供了更易用的工具和抽象。
它包括狀態、視覺化、日誌(跟蹤)、內建的人工干預等。
< > 在 GitHub 上更新