首頁 >科技週邊 >人工智慧 >Langgraph教程:Langgraph是什麼,如何使用它?

Langgraph教程:Langgraph是什麼,如何使用它?

Jennifer Aniston
Jennifer Aniston原創
2025-03-06 10:57:10749瀏覽

想像您正在構建一個複雜的,多功能的大語言模型(LLM)應用程序。令人興奮,但面臨挑戰:管理各種代理的狀態,協調他們的互動,並有效地處理錯誤。這是Langgraph可以提供幫助的地方。

Langgraph是Langchain生態系統中的圖書館,旨在正面應對這些挑戰。 Langgraph提供了一個以結構化的方式定義,協調和執行多個LLM代理(或鏈)的框架。

>它通過啟用周期性圖的創建來簡化開發過程,這對於開發代理的運行時間至關重要。使用Langgraph,我們可以輕鬆地構建健壯,可擴展和靈活的多代理系統。

如果您想了解有關Langchain生態系統的更多信息,我建議您對Langchain介紹。

>

什麼是langgraph?

圖形結構

想像您的應用程序作為有向圖。在langgraph中,每個節點代表LLM代理,邊緣是這些試劑之間的通信通道。這種結構允許清晰可管理的工作流程,每個代理執行特定的任務並根據需要將信息傳遞給其他代理。

狀態管理

Langgraph的出色功能之一是其自動狀態管理。此功能使我們能夠在多個交互之間跟踪和持久信息。當代理執行任務時,狀態將動態更新,確保系統保持上下文並適當響應新的輸入。

協調

為什麼langgraph?

正如我上面提到的那樣,Langgraph為使用複雜LLM應用程序的開發人員提供了一些重要的優勢。這是Langgraph提供的一些現實世界的好處。

簡化的開發

靈活性

在Langgraph的情況下,開發人員可以靈活地定義自己的代理邏輯和通信協議。這允許針對特定用例量身定制的高度定制應用程序。無論您是否需要一個可以處理各種用戶請求的聊天機器人,還是執行複雜任務的多代理系統,Langgraph都提供了構建所需內容的工具。這一切都是為了賦予您創建的力量。

>

可伸縮性

langgraph旨在支持大規模多代理應用程序的執行。其強大的架構可以處理大量的交互和復雜的工作流程,從而可以開發可擴展的系統,這些系統可以隨您的需求而增長。這使其適用於企業級應用程序和方案,而性能和可靠性至關重要。

容錯

可靠性是Langgraph設計中的核心考慮因素。該庫包括用於優雅處理錯誤的機制,確保您的應用程序即使在各個代理遇到問題時也可以繼續運行。這種容錯性對於維持複雜多代理系統的穩定性和魯棒性至關重要。安心只是一個功能。

開始使用langgraph

>讓我們看看如何設置langgraph以及基本概念是什麼。

>

>安裝

要安裝langgraph,您可以使用pip:

基本概念

pip install -U langgraph
>節點:節點代表langgraph中工作單位。它們通常是執行特定任務的Python函數,例如:

與LLM

互動

調用工具或API
  • 執行一些數據操作
  • 接收用戶輸入
  • >執行業務邏輯
  • 在langgraph中,您可以使用graph.add_node(name,value)語法添加節點。
  • 邊緣:邊緣是節點之間的通信通道。他們定義信息流和執行順序。您可以使用graph.add_edge(node1,node2)語法添加邊緣。
  • >
狀態:狀態是圖表中的節點隨時間更新的中心對象。它管理您的應用程序的內部狀態,並且可以根據申請的要求覆蓋或添加。這種狀態可以容納以下內容:

  • 對話歷史記錄:代理與用戶之間的消息列表。 >
  • >上下文數據:與當前任務或交互有關的信息。
  • > 內部變量:標誌,計數器或其他變量,以跟踪代理的進度和行為。
  • 構建一個簡單的langgraph應用程序

這是使用langgraph創建基本聊天機器人應用程序的分步示例。

>步驟1:定義狀態圖

>定義一個狀態圖對象,以將聊天機器人構造為狀態計算機。狀態是一個類型列表的單個關鍵消息定義的類對象,並使用add_messages()函數來附加新消息,而不是覆蓋它們。

>步驟2:初始化llm並將其添加為聊天機器人節點
pip install -U langgraph
>

>在這裡,我們初始化AzureChatopenai模型,並創建一個簡單的聊天機器人函數,該函數將狀態消息作為輸入輸入並生成消息響應(隨後將其應用於狀態)。

此聊天機器人函數被添加為名為“聊天機器人”的節點。

步驟3:設置邊緣

>由於我們正在構建一個簡單的聊天機器人,因此我們將聊天機器人節點設置為圖表的輸入點和終點,以指示從哪裡開始和結束過程。
from typing import Annotated
from typing_extensions import TypedDict
from langgraph.graph import StateGraph
from langgraph.graph.message import add_messages
class State(TypedDict):
    # messages have the type "list".
    # The add_messages function appends messages to the list, rather than overwriting them
    messages: Annotated[list, add_messages]
graph_builder = StateGraph(State)

步驟4:編譯和可視化圖

編譯圖以創建一個編譯對象,並且可以選擇地使用下面的代碼可視化圖形結構:>

from langchain_openai import AzureChatOpenAI
llm = AzureChatOpenAI(
    openai_api_version=os.environ["AZURE_OPENAI_API_VERSION"],
    azure_deployment=os.environ["AZURE_OPENAI_CHAT_DEPLOYMENT_NAME"],
)
def chatbot(state: State):
    return {"messages": [llm.invoke(state["messages"])]}
‘’’The first argument is the unique node name
# The second argument is the function or object that will be called whenever the node is used.’’’
graph_builder.add_node("chatbot", chatbot)

步驟5:運行聊天機器人

最後,我們實現一個循環,以連續提示用戶輸入,通過圖形處理並打印助手的響應。當用戶鍵入“退出”,“退出”或“ Q”。
# Set entry and finish points
graph_builder.set_entry_point("chatbot")
graph_builder.set_finish_point("chatbot")

高級langgraph功能Langgraph教程:Langgraph是什麼,如何使用它?

>現在我們涵蓋了基礎知識,讓我們看一下一些高級功能。 >

自定義節點類型

langgraph允許您創建自定義節點類型來實現複雜的代理邏輯。這提供了對應用程序行為的靈活性和控制。

>
graph = graph_builder.compile()
from IPython.display import Image, display
try:
    display(Image(graph.get_graph().draw_mermaid_png()))
except Exception:
    pass

>在這裡,我們定義了一個封裝自定義邏輯並與LLM交互的類mycustomnode。這提供了實施複雜節點行為的更具結構化和可維護的方法。

>

邊緣類型

要創建一個條件邊緣,您需要三個組件:

>
  1. 上游節點:節點的輸出決定下一步。
  2. a函數:此函數評估上游節點的輸出並確定下一個要執行的節點,返回一個代表決策的字符串。
  3. 映射:此映射將函數的可能結果鏈接到要執行的相應節點的結果。
  4. 這是偽代碼中的一個示例:

>在這裡,在調用“模型”節點之後,我們可以退出圖(“ end”),然後返回用戶,或者我們可以繼續(“繼續”)並調用工具 - 對用戶的決定!
pip install -U langgraph
狀態管理

Langgraph提供強大的狀態管理技術,其中包括使用SQLITE,PostgreSQL和MongoDB等外部數據庫,或使用Amazon S3,Google Cloud Storage和Azure Blob存儲等雲存儲解決方案存儲並檢索您的代理商的狀態,可靠性和可伸縮性。

這是使用SQLITE數據庫進行狀態管理的一個示例:>

錯誤處理

langgraph還提供了錯誤處理的機制:

from typing import Annotated
from typing_extensions import TypedDict
from langgraph.graph import StateGraph
from langgraph.graph.message import add_messages
class State(TypedDict):
    # messages have the type "list".
    # The add_messages function appends messages to the list, rather than overwriting them
    messages: Annotated[list, add_messages]
graph_builder = StateGraph(State)
>例外:節點函數可以在執行過程中提出異常來發出錯誤。您可以捕獲並處理以下例外,以防止圖形崩潰。

重試機制:您可以在節點中實現重試邏輯來處理瞬態錯誤,例如網絡問題或API超時。

>記錄:使用日誌記錄記錄錯誤並跟踪圖形的執行。
  • Langgraph
  • 的現實世界應用
  • langgraph可用於構建廣泛的應用程序。
  • 聊天機器人
  • Langgraph是開發可以處理各種用戶請求的複雜聊天機器人的理想選擇。通過利用多個LLM代理,這些聊天機器人可以處理自然語言查詢,提供準確的響應,並在不同的對話主題之間無縫切換。管理狀態和協調交互的能力確保聊天機器人維護上下文並提供連貫的用戶體驗。
  • >自主劑

>對於需要自主決策的應用程序,langgraph可以創建可以根據用戶輸入和預定義的邏輯獨立執行任務的代理。

這些代理可以執行複雜的工作流程,與其他系統進行交互,並動態適應新信息。 Langgraph的結構化框架可確保每個代理都可以有效地運行,從而適合自動化客戶支持,數據處理和系統監控等任務。

>

多代理系統

Langgraph在構建應用程序中擅長於多個代理以實現共同目標的構建應用程序。例如,不同的代理可以在供應鏈管理系統中管理庫存,過程訂單和協調交貨。 Langgraph的協調能力確保每個代理商都有有效的交流,共享信息並以同步方式做出決策。這會導致更有效的操作和更好的整體系統性能。

>工作流動自動化工具

>隨著langgraph,自動化業務流程和工作流程變得很簡單。智能代理可以設計用於處理諸如文檔處理,批准工作流和數據分析之類的任務。通過定義清晰的工作流並利用Langgraph的國家管理,這些工具可以執行複雜的動作序列,而無需人為乾預,降低錯誤並提高生產率。

推薦系統

個性化推薦系統可以從Langgraph的功能中受益匪淺。通過使用多個代理來分析用戶行為,偏好和上下文數據,這些系統可以為產品,內容或服務提供量身定制的建議。 Langgraph的靈活性允許整合各種數據源和算法,增強了建議的準確性和相關性。 個性化的學習環境 在教育平台中,Langgraph可用於創建適合單個學習風格和需求的自適應學習環境。多個代理商可以評估學生的進度,提供定制的練習並提供實時反饋。 Langgraph的狀態性質確保系統保留有關每個學習者的表現和偏好的信息,從而實現更個性化和有效的教育經驗。

結論

通過提供一個結構化的框架來管理狀態和協調代理相互作用,> Langgraph的潛在發展包括與其他Langchain組件集成,對新LLM模型的支持以及從學術界引入更高級的代理運行時間。

如果您想了解有關Langchain生態系統中開發應用程序的更多信息,我建議您使用Langchain開發LLM應用程序的課程。

>

以上是Langgraph教程:Langgraph是什麼,如何使用它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn