智慧體課程文件

什麼是 LangGraph?

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

什麼是 LangGraph?

LangGraph 是由 LangChain 開發的框架,用於管理整合 LLM 的應用程式的控制流

LangGraph 與 LangChain 有何不同?

LangChain 提供了一個標準介面,用於與模型和其他元件進行互動,這對於檢索、LLM 呼叫和工具呼叫很有用。LangChain 中的類可以在 LangGraph 中使用,但不是必須使用。

這些包是不同的,可以單獨使用,但最終,您在網上找到的所有資源都會將這兩個包一起使用。

我應該何時使用 LangGraph?

控制與自由

在設計 AI 應用程式時,您會面臨控制自由之間的根本權衡。

  • 自由讓您的 LLM 有更多空間進行創造性思考並解決意外問題。
  • 控制讓您能夠確保可預測的行為並維護護欄。

程式碼代理,例如您在 smolagents 中遇到的那些,非常自由。它們可以在一個動作步驟中呼叫多個工具,建立自己的工具等等。然而,這種行為可能使它們比使用 JSON 的常規代理更難以預測和控制!

LangGraph 處於另一端,當您需要對代理的執行進行“控制”時,它會大放異彩。

當您需要控制應用程式時,LangGraph 尤其有價值。它為您提供了構建遵循可預測過程的應用程式的工具,同時仍然利用了 LLM 的強大功能。

簡單來說,如果您的應用程式涉及一系列需要以特定方式協調的步驟,並且在每個連線點都需要做出決策,那麼 LangGraph 提供了您所需的結構

例如,假設我們要構建一個可以回答某些文件中問題的 LLM 助手。

由於 LLM 最擅長理解文字,因此在能夠回答問題之前,您需要將其他複雜的模態(圖表、表格)轉換為文字。然而,這個選擇取決於您擁有的文件型別!

我選擇將這種分支表示如下:

Control flow

💡 提示: 左側不是代理,因為這裡不涉及工具呼叫。但右側需要編寫一些程式碼來查詢 xls(轉換為 pandas 並操作它)。

雖然這種分支是確定性的,但您也可以設計根據 LLM 輸出進行條件分支,使其成為不確定性的。

LangGraph 擅長的關鍵場景包括:

  • 需要明確控制流程的多步驟推理過程
  • 需要在步驟之間保持狀態的應用程式
  • 結合確定性邏輯和 AI 功能的系統
  • 需要人工干預的工作流
  • 具有多個元件協同工作的複雜代理架構

本質上,只要有可能,作為一個人,根據每個動作的輸出設計一個動作流程,並相應地決定下一步要執行什麼。在這種情況下,LangGraph 是適合您的正確框架!

在我看來,LangGraph 是市場上最成熟的代理框架。

LangGraph 如何工作?

LangGraph 的核心是使用有向圖結構來定義應用程式的流程

  • 節點代表單獨的處理步驟(例如呼叫 LLM、使用工具或做出決策)。
  • 定義了步驟之間可能的轉換。
  • 狀態由使用者定義,並在執行期間在節點之間維護和傳遞。當決定下一個要定位的節點時,我們檢視的就是當前狀態。

我們將在下一章中更詳細地探討這些基本模組!

它與普通 Python 有何不同?為什麼我需要 LangGraph?

您可能會想:“我可以使用帶有 if-else 語句的普通 Python 程式碼來處理所有這些流程,對吧?”

雖然從技術上講是這樣,但 LangGraph 在構建複雜系統方面提供了一些優勢,優於普通的 Python。您可以在沒有 LangGraph 的情況下構建相同的應用程式,但它為您提供了更易用的工具和抽象。

它包括狀態、視覺化、日誌(跟蹤)、內建的人工干預等。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.