想像您正在構建一個複雜的,多功能的大語言模型(LLM)應用程序。令人興奮,但面臨挑戰:管理各種代理的狀態,協調他們的互動,並有效地處理錯誤。這是Langgraph可以提供幫助的地方。
Langgraph是Langchain生態系統中的圖書館,旨在正面應對這些挑戰。 Langgraph提供了一個以結構化的方式定義,協調和執行多個LLM代理(或鏈)的框架。>它通過啟用周期性圖的創建來簡化開發過程,這對於開發代理的運行時間至關重要。使用Langgraph,我們可以輕鬆地構建健壯,可擴展和靈活的多代理系統。
如果您想了解有關Langchain生態系統的更多信息,我建議您對Langchain介紹。>
什麼是langgraph?
想像您的應用程序作為有向圖。在langgraph中,每個節點代表LLM代理,邊緣是這些試劑之間的通信通道。這種結構允許清晰可管理的工作流程,每個代理執行特定的任務並根據需要將信息傳遞給其他代理。
>
容錯
基本概念 互動
>步驟1:定義狀態圖
編譯圖以創建一個編譯對象,並且可以選擇地使用下面的代碼可視化圖形結構: 步驟5:運行聊天機器人 高級langgraph功能 langgraph允許您創建自定義節點類型來實現複雜的代理邏輯。這提供了對應用程序行為的靈活性和控制。 邊緣類型
Langgraph提供強大的狀態管理技術,其中包括使用SQLITE,PostgreSQL和MongoDB等外部數據庫,或使用Amazon S3,Google Cloud Storage和Azure Blob存儲等雲存儲解決方案存儲並檢索您的代理商的狀態,可靠性和可伸縮性。
>
推薦系統 如果您想了解有關Langchain生態系統中開發應用程序的更多信息,我建議您使用Langchain開發LLM應用程序的課程。 圖形結構
Langgraph的出色功能之一是其自動狀態管理。此功能使我們能夠在多個交互之間跟踪和持久信息。當代理執行任務時,狀態將動態更新,確保系統保持上下文並適當響應新的輸入。
協調
正如我上面提到的那樣,Langgraph為使用複雜LLM應用程序的開發人員提供了一些重要的優勢。這是Langgraph提供的一些現實世界的好處。
簡化的開發
在Langgraph的情況下,開發人員可以靈活地定義自己的代理邏輯和通信協議。這允許針對特定用例量身定制的高度定制應用程序。無論您是否需要一個可以處理各種用戶請求的聊天機器人,還是執行複雜任務的多代理系統,Langgraph都提供了構建所需內容的工具。這一切都是為了賦予您創建的力量。
langgraph旨在支持大規模多代理應用程序的執行。其強大的架構可以處理大量的交互和復雜的工作流程,從而可以開發可擴展的系統,這些系統可以隨您的需求而增長。這使其適用於企業級應用程序和方案,而性能和可靠性至關重要。
開始使用langgraph >
>安裝
pip install -U langgraph
>節點:節點代表langgraph中工作單位。它們通常是執行特定任務的Python函數,例如:
與LLM
狀態:狀態是圖表中的節點隨時間更新的中心對象。它管理您的應用程序的內部狀態,並且可以根據申請的要求覆蓋或添加。這種狀態可以容納以下內容:
這是使用langgraph創建基本聊天機器人應用程序的分步示例。
>定義一個狀態圖對象,以將聊天機器人構造為狀態計算機。狀態是一個類型列表的單個關鍵消息定義的類對象,並使用add_messages()函數來附加新消息,而不是覆蓋它們。
pip install -U langgraph
>
>在這裡,我們初始化AzureChatopenai模型,並創建一個簡單的聊天機器人函數,該函數將狀態消息作為輸入輸入並生成消息響應(隨後將其應用於狀態)。
此聊天機器人函數被添加為名為“聊天機器人”的節點。
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)
# Set entry and finish points
graph_builder.set_entry_point("chatbot")
graph_builder.set_finish_point("chatbot")
自定義節點類型
graph = graph_builder.compile()
from IPython.display import Image, display
try:
display(Image(graph.get_graph().draw_mermaid_png()))
except Exception:
pass
>在這裡,我們定義了一個封裝自定義邏輯並與LLM交互的類mycustomnode。這提供了實施複雜節點行為的更具結構化和可維護的方法。
>
要創建一個條件邊緣,您需要三個組件:
>
pip install -U 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在構建應用程序中擅長於多個代理以實現共同目標的構建應用程序。例如,不同的代理可以在供應鏈管理系統中管理庫存,過程訂單和協調交貨。 Langgraph的協調能力確保每個代理商都有有效的交流,共享信息並以同步方式做出決策。這會導致更有效的操作和更好的整體系統性能。
>隨著langgraph,自動化業務流程和工作流程變得很簡單。智能代理可以設計用於處理諸如文檔處理,批准工作流和數據分析之類的任務。通過定義清晰的工作流並利用Langgraph的國家管理,這些工具可以執行複雜的動作序列,而無需人為乾預,降低錯誤並提高生產率。
結論
通過提供一個結構化的框架來管理狀態和協調代理相互作用,
以上是Langgraph教程:Langgraph是什麼,如何使用它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!