LangGraph 多智能體羣:使用 LangGraph 創建羣風格多智能體系統的 Python 庫
LangGraph 多智能體羣是一個 Python 庫,旨在將多個 AI 智能體編排成一個有凝聚力的 “羣”。它建立在 LangGraph 之上,LangGraph 是一個用於構建健壯、有狀態智能體工作流的框架,以實現一種特殊形式的多智能體架構。在一個羣中,具有不同專業的智能體根據任務的需要動態地將控制權交給彼此,而不是單個單一智能體嘗試處理所有事情。系統會跟蹤最後一個激活的智能體,以便當用戶提供下一個輸入時,與同一智能體無縫地恢復對話。這種方法解決了構建協作 AI 工作流的問題,其中最合格的智能體可以處理每個子任務,而不會丟失上下文或連續性。
LangGraph Swarm 旨在使開發人員更輕鬆、更可靠地進行這種多智能體協調。它提供了將單個語言模型智能體(每個智能體都可能帶有其工具和提示)鏈接到一個集成應用程序中的抽象。由於其基於 LangGraph,該庫對流式響應、短期和長期記憶集成甚至人工干預提供了開箱即用的支持。通過利用 LangGraph(一種較低級別的編排框架)並自然融入更廣泛的 LangChain 生態系統,LangGraph Swarm 允許機器學習工程師和研究人員構建複雜的 AI 智能體系統,同時保持對信息流和決策的顯式控制。
LangGraph 羣架構和主要特性
LangGraph Swarm 的核心是將多個智能體表示爲有向狀態圖中的節點,邊定義切換路徑,共享狀態跟蹤 “active_agent”。當智能體調用切換時,庫會更新該字段並傳輸必要的上下文,以便下一個智能體無縫地繼續對話。這種設置支持協作專業化,讓每個智能體專注於一個狹窄的領域,同時爲靈活的工作流程提供可定製的切換工具。基於 LangGraph 的流和內存模塊,Swarm 保留了短期對話上下文和長期知識,即使智能體之間的控制權轉移,也能確保連貫的多輪交互。
通過切換工具進行智能體協調
LangGraph Swarm 的切換工具允許一個智能體通過發出更新共享狀態的 “命令”、切換 “active_agent” 並傳遞上下文(如相關消息或自定義摘要)來將控制權轉移到另一個智能體。雖然默認工具交接完整的對話並插入通知,但開發人員可以實現自定義工具來過濾上下文、添加指令或重命名操作以影響大語言模型(LLM)的行爲。與自主 AI 路由模式不同,Swarm 的路由是明確定義的:每個切換工具都指定哪個智能體可以接管,確保可預測的流量。這種機制支持協作模式,例如 “旅行計劃者” 將醫療問題委託給 “醫療顧問” 或協調者將技術和計費查詢分發給專業專家。它依賴內部路由器將用戶消息引導到當前智能體,直到發生另一次切換。
狀態管理和內存
在智能體交接任務時,管理狀態和內存對於保持上下文至關重要。默認情況下,LangGraph Swarm 維護一個共享狀態,其中包含對話歷史和一個 “active_agent” 標記,並使用檢查指針(例如內存保護程序或數據庫存儲)來輪流保持這種狀態。此外,它還支持長期知識的內存存儲,允許系統爲未來的會話記錄事實或過去的交互,同時保留最近消息的窗口以供即時上下文使用。總之,這些機制確保集羣永遠不會 “忘記” 哪個智能體處於活動狀態或討論過什麼,從而實現無縫的多輪對話,並隨着時間的推移積累用戶偏好或關鍵數據。
當需要更精細的控制時,開發人員可以定義自定義狀態模式,以便每個智能體都有自己的私有消息歷史記錄。通過在調用前包裝智能體調用以將全局狀態映射到智能體特定的字段中,並在調用後合併更新,團隊可以定製上下文共享的程度。這種方法支持從完全協作智能體到隔離推理模塊的工作流,同時利用 LangGraph Swarm 強大的編排、內存和狀態管理基礎架構。
定製和可擴展性
LangGraph Swarm 爲自定義工作流提供了廣泛的靈活性。開發人員可以覆蓋傳遞所有消息並切換活動智能體的默認切換工具,以實現專門的邏輯,例如彙總上下文或附加額外的元數據。自定義工具只需返回一個 LangGraph 命令來更新狀態,智能體必須配置爲通過適當的節點類型和狀態模式鍵來處理這些命令。除了切換之外,還可以使用 LangGraph 的類型化狀態模式重新定義智能體如何共享或隔離內存:在調用之前將全局羣狀態映射到每個智能體的字段中,然後合併結果。這使得智能體可以在不暴露其內部推理的情況下維護私有對話歷史或使用不同的通信格式。爲了完全控制,可以繞過高級 API 並手動組裝一個 “StateGraph”:將每個編譯的智能體添加爲一個節點,定義轉換邊緣,並附加活動智能體路由器。雖然大多數用例都受益於 “create_swarm” 和 “create_react_agent” 的簡單性,但下拉到 LangGraph 原語的能力確保了從業者可以檢查、調整或擴展多智能體協調的各個方面。
生態系統集成和依賴
LangGraph Swarm 與 LangChain 緊密集成,利用 LangSmith 等組件進行評估,利用 langchain_openai 進行模型訪問,利用 LangGraph 進行持久化和緩存等編排功能。其與模型無關的設計使其能夠跨任何 LLM 後端(OpenAI、Hugging Face 或其他)協調智能體,並且可在 Python(“pip install langgraph-swarm”)和 JavaScript/TypeScript(“@langchain/langgraph-swarm”)中使用,使其適用於 Web 或無服務器環境。它在 MIT 許可下分發並積極開發,繼續受益於社區貢獻和 LangChain 生態系統的增強。
示例實現
以下是雙智能體羣的最小設置:
from langchain_openai import ChatOpenAI
from langgraph.checkpoint.memory import InMemorySaver
from langgraph.prebuilt import create_react_agent
from langgraph_swarm import create_handoff_tool, create_swarm
model = ChatOpenAI(model="gpt-4o")
# 智能體 “Alice”:數學專家
alice = create_react_agent(
model,
[lambda a,b: a+b, create_handoff_tool(agent_)],
prompt="You are Alice, an addition specialist.",
,
)
# 智能體 “Bob”:一個俏皮的海盜角色,將數學問題交給 Alice
bob = create_react_agent(
model,
[create_handoff_tool(agent_)],
prompt="You are Bob, a playful pirate.",
,
)
workflow = create_swarm([alice, bob], default_active_agent="Alice")
app = workflow.compile(checkpointer=InMemorySaver())
在這裏,Alice 處理加法運算並且可以將任務交給 Bob,而 Bob 則開玩笑地迴應,但會將數學問題返回給 Alice。InMemorySaver 確保會話狀態在輪流中保持不變。
用例和應用
LangGraph Swarm 通過使中央協調器能夠動態地將子任務委託給專門的智能體來解鎖高級的多智能體協作,無論是通過將緊急情況交給醫療、安全或災難響應專家來分類,在航班、酒店和汽車租賃智能體之間路由旅行預訂,在編碼智能體和審閱者之間協調結對編程工作流,還是在研究人員、記者和事實覈查智能體之間分配研究和報告生成任務。除了這些示例之外,該框架還可以爲客戶支持機器人提供動力,這些機器人將查詢路由到部門專家,使用不同角色智能體進行交互式講故事,使用特定階段處理器的科學管道,或者在專家 “羣” 成員之間劃分工作提高可靠性和清晰度的任何場景。與此同時,LangGraph Swarm 處理底層消息路由、狀態管理和平滑轉換。
LangGraph Swarm 標誌着向真正模塊化、協作式 AI 系統的飛躍。將多個專用智能體構建爲有向圖可以解決單個模型難以處理的任務,每個智能體處理其專業知識,然後無縫交接控制權。這種設計使單個智能體保持簡單和可解釋,而集羣則共同管理涉及推理、工具使用和決策的複雜工作流程。該庫建立在 LangChain 和 LangGraph 之上,利用成熟的 LLM、工具、內存存儲和調試實用程序生態系統。開發人員保留對智能體交互和狀態共享的明確控制,確保可靠性,但仍能利用 LLM 的靈活性來決定何時調用工具或委託給另一個智能體。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/G_6kXWCZ4_7z_U5NE8PdMw