LangGraph:如何用“圖思維”輕松管理多Agent協作?
引言
當AI任務變得復雜時,我們需要更好的“調度員”。
隨著智能應用場景的深化,單一 Agent 在處理復雜任務(如電商智能客服、金融數據分析流水線)時顯現出明顯局限性。傳統鏈式調用框架(如 LangChain)依賴開發者手動編排流程,在面對任務分支、動態決策和資源復用等場景時,往往陷入維護成本高、擴展性差的困境。
圖片
本文將深入解析:
1. LangGraph的核心原理:圖結構如何模擬復雜任務流?
2. 多 Agent 應用實戰:如何實現異構Agent的協作與通信?
3. 對比LangChain:何時該用LangGraph?
1、LangGraph核心原理
LangGraph 的核心原理,簡單說就是:用“圖”來重構任務流。
1.1. 圖結構(Graph)的三大要素
- 節點(Node):代表一個獨立單元,可以是:
Agent 節點:封裝獨立 Agent 能力(如調用GPT-4處理問題、知識檢索)
Tool 節點:調用具體工具(如搜索API、數據庫查詢),用于執行特定計算或處理任務
END 節點:流程結束的標識
- 邊(Edge):標注 “Where to go”,表示狀態流轉的決策路徑,決定下一步跳轉到哪個節點
- 順序執行(線性流程)
- 條件跳轉(如“若用戶投訴,轉人工審核”)
- 狀態(State):貫穿整個流程,記錄數據或交互狀態(如用戶輸入的消息),驅動節點間的流轉
圖片
針對如上圖例,流程說明如下:
1)用戶輸入觸發初始狀態,進入 Agent 節點 處理交互;
2)處理后通過 Edge 決策流向,可能跳轉至 Tool 節點 調用工具,或直接到達 END 節點 結束流程;
3)若進入 Tool 節點,處理完成后狀態可能再次流轉,形成循環或推進至結束。 該模型通過節點、邊、狀態的協作,實現交互任務的流程化處理。
1.2 動態編排:像流程圖一樣設計AI流程
LangGraph支持循環、分支、并行等控制流,例如:
# 示例:根據用戶問題動態路由 def route(state): if "投訴" in state["input"]: return "human_review" # 轉人工 else: return "ai_agent" # 由AI處理
# 示例:根據用戶問題動態路由
def route(state):
if "投訴" in state["input"]:
return "human_review" # 轉人工
else:
return "ai_agent" # 由AI處理
2、多 Agent 協作實戰
為了更好讓大家理解,我們應用一個「客服工單處理案例」來進行介紹。
假設我們需要處理用戶工單,主要流程包括:意圖識別 → 專家Agent處理 → 結果審核
2.1 定義 Agent 節點
from langgraph.graph import StateGraph, MessagesState
# Create the workflow
workflow = StateGraph(MessagesState)
# 意圖識別
def identify_intent(state):
last_message = state["messages"][-1].content
if "賬號" in last_message or "登錄" in last_message:
intent = "technical"
else:
intent = "general"
return {
"messages": [AIMessage(cnotallow="意圖識別完成")],
"intent": intent
}
# 專家處理
def call_expert(state):
return {"messages": [AIMessage(cnotallow="專家處理結果:您的問題需要專業技術支持")]}
# 人工審核
def human_review(state):
return {"messages": [AIMessage(cnotallow="人工審核完成:您的問題已處理")]}
# 添加三個Agent節點
workflow.add_node("intent_agent", identify_intent) # 意圖識別
workflow.add_node("expert_agent", call_expert) # 專家處理
workflow.add_node("review_agent", human_review) # 人工審核
2.2 設計 workflow 邏輯
# 設置入口點
workflow.set_entry_point("intent_agent")
# 條件邊:根據意圖選擇路徑
def router(state):
if state["intent"] == "technical":
return "expert_agent"
else:
return "review_agent"
workflow.add_conditional_edges("intent_agent", router)
# 專家處理后必須審核
workflow.add_edge("expert_agent", "review_agent")
# 設置結束點
workflow.set_finish_point("review_agent")
2.3 運行 workflow
# Compile the workflow
app = workflow.compile()
output = app.invoke({"messages": [HumanMessage(cnotallow="我的賬號無法登錄")]})
print("執行結果:\n\n", final_state["messages"][-1].content)
執行結果:
圖片
程序執行流程為:用戶輸入 → 意圖識別 → 技術問題 → 專家Agent → 人工審核 → 返回結果
LangGraph 圖例如下:
圖片
3、LangChain vs LangGraph
當LangChain 遇上 LangGraph,我們應該如何選擇呢?
圖片
簡單下個結論:
- 如果是固定流程(如“搜索→總結”),用LangChain更輕量。
- 如果是動態、多角色協作(如客服、數據分析流水線),LangGraph是更優解。
結語
LangGraph的圖思維將復雜任務分解為可編排的節點,通過動態路由和共享狀態實現高效協作。如果你正面臨多Agent的“spaghetti code”難題,不妨用LangGraph重構你的流程!
圖片