文章目錄
- 一、多智能體系統介紹
- 1.1 多智能體系統定義
- 1.2 多智能體協作
- 1.3 協作類型
- 1.4 協作策略
- 1.5 通信結構
- 1.6 協調與編排
- 1.3 多智能體與單智能體對比
- 1.4 應用場景
- 二、多Agent開發框架
- AutoGen
- MetaGPT
- LangGraph
- Swarm
- CrewAI
- 三、多智能體協作方式
- 3.1 MetaGPT:SOP驅動Agent的代表
- 3.2 AutoGen:LLM驅動Agent的代表
- 3.3 XAgent:Agent 并行計算, LLM 匯總
- 四、多Agent實戰樣例
- 參考資料
一、多智能體系統介紹
參考資料:多智能體協作機制:大語言模型綜述
1.1 多智能體系統定義
多智能體系統(Multi-Agent System, MAS)是由多個相互作用的智能體組成的計算機化系統。這些智能體具有自主性,能夠感知環境、與其他智能體交互,并通過協作解決復雜的任務。MAS 的關鍵組成部分包括:
- 智能體:系統中的核心參與者,具有角色、能力、行為模式和知識模型。智能體的能力包括學習、規劃、推理和決策制定,這些能力賦予了智能體和整個系統智能。
- 環境:智能體所處的外部世界,智能體可以感知并作用于環境。環境可以是模擬的或物理空間,如工廠、道路、電網等。
- 交互:智能體之間通過標準的智能體通信語言進行通信。智能體的交互包括合作、協調、協商等,具體取決于系統的需求。
- 組織:智能體可以按照層次結構進行控制,或基于涌現行為進行組織。
MAS 的顯著特征包括靈活性、可靠性、自組織和實時操作,使其成為解決復雜任務的有效解決方案。通過將復雜任務分解為多個子任務,每個子任務由不同的智能體處理,MAS 能夠以較低的成本和較高的可靠性完成任務。
1.2 多智能體協作
在 LLM 驅動的 MAS 中,智能體之間的協作至關重要。每個協作都有一個通信通道 c c c,協作包括:
- 任務分配:根據智能體的獨特專業知識和資源,將任務分配給多個智能體。
- 協作機制:定義智能體之間的協作機制,使它們能夠共同工作。
- 決策制定:智能體之間的決策制定,以達到最終目標。
協作通道通過特定的屬性進行表征,包括參與者(涉及的智能體)、類型(如合作、競爭或競合)、結構(如點對點、集中式或分布式)和策略(如基于角色、基于規則或基于模型)。任何屬性的差異都會導致不同的協作通道。
1.3 協作類型
(1)合作
合作是 LLM 多智能體系統中最常見的協作類型。當智能體將其個體目標 oi與共享的集體目標 Ocollab對齊時,它們會共同努力實現互利的結果。合作在需要協作問題解決、集體決策和互補技能的任務中尤為重要。
(2)競爭
競爭發生在智能體的個體目標 oi與其他智能體的目標沖突或資源有限的情況下。競爭可以推動智能體發展更高級的推理能力和創造性問題解決能力,增強系統的適應性。
(3)競爭與合作
競合是合作與競爭的結合,智能體在某些任務上合作,而在其他任務上競爭。競合機制在需要權衡和妥協的場景中尤為有效。
1.4 協作策略
(1)基于規則的協議
基于規則的協議通過預定義的規則嚴格控制智能體之間的交互,確保智能體按照系統范圍內的約束協調行動。這種策略在任務程序明確且變化有限的情況下非常有效,但在面對意外情況時缺乏適應性。
(2)基于角色的協議
基于角色的協議通過為每個智能體分配特定的角色或分工,使智能體能夠專注于其專業領域內的子任務。這種策略提高了系統的效率和結構,但在角色定義不明確時可能導致沖突或功能缺陷。
(3)基于模型的協議
基于模型的協議在輸入感知存在不確定性的環境中提供了決策制定的靈活性。智能體根據對環境的感知、共同目標和固有的不確定性做出概率性決策。這種策略在動態環境中表現出色,但設計和部署復雜,計算成本較高。
1.5 通信結構
(1)集中式結構
集中式結構中,所有智能體都連接到一個中央智能體,中央智能體負責管理和協調智能體之間的交互。集中式結構在資源分配和任務協調方面具有優勢,但中央節點的故障可能導致整個系統崩潰。
(2)分布式結構
分布式結構中,控制權和決策權分布在多個智能體之間,每個智能體基于本地信息和有限的通信進行操作。分布式結構在系統容錯性和可擴展性方面具有優勢,但資源分配效率較低,通信開銷較大。
(3)分層結構
分層結構中,智能體按層次組織,每個層次的智能體具有不同的功能和權限。分層結構在任務分配和資源管理方面具有優勢,但邊緣設備的故障可能導致系統失效。
1.6 協調與編排
(1)靜態架構
靜態架構依賴于領域知識和預定義的規則來建立協作通道。這種架構在任務執行一致性和利用領域知識方面具有優勢,但在面對動態環境時缺乏靈活性。
(2)動態架構
動態架構能夠適應變化的環境和任務需求,通過管理智能體或自適應機制實時分配角色和定義協作通道。動態架構在處理復雜和動態任務時表現出色,但資源使用較高,動態調整可能失敗。
1.3 多智能體與單智能體對比
MAS的核心思想是通過多個Agent的協作與協調,共同完成一個復雜任務,從而實現單個Agent無法完成的復雜目標。相比單Agent系統,Multi-Agent系統具備以下優勢:
- 分布式處理:MAS支持分布式應用,可以將大型復雜系統分解為多個小型、易于管理的子系統。這使得MAS具有良好的模塊性、易于擴展性和設計靈活性,降低了系統的總成本和維護難度。
- 協同工作:MAS中的Agent可以相互通信、協商和協作,共同完成一個任務。通過這種協同工作方式,MAS能夠處理單個Agent無法解決的問題,從而提高系統的整體性能和魯棒性。
- 自適應性:MAS中的Agent可以根據環境變化自主調整行為和策略,這種自適應性使得MAS具有優秀的穩定性和靈活性,能夠應對各種復雜場景。
1.4 應用場景
Multi-Agent System 主要的應用場景包括:
- 軟件編寫:在軟件項目中,由多個Agents分別扮演項目經理、產品經理、UI設計師、開發人員、測試人員等等,從而將一個復雜的軟件項目拆解成多個子任務,更高效地完成軟件的編寫。
- 智能營銷:在消費者營銷場景中,可以構建多個Agents,比如營銷計劃Agent、內容生產Agent、人群管理Agent、營銷觸達Agent和效果分析Agent。
- 智慧供應鏈:在供應鏈場景中,通過Multi-Agent提升上下游協同效率,包括銷售計劃Agent、采購計劃Agent、倉儲計劃Agent、采購訂單Agent等等,從銷量預測、安全庫存、供應鏈響應等環節,構筑供應鏈的多道防線。
- 智能客服:在智能客服領域,針對不同的產品和服務領域,構建不同的專屬Agent,比如處理產品售后投訴的Agent、解答用戶產品疑問的Agent、處理營銷活動咨詢的Agent、追蹤物流進度的Agent等。同時在最上層構建一個Top Agent,用Top Agent統一對客,再根據消費者的問題自動路由到最匹配的專屬Agent。
- 智能電網:在智能電網領域,MAS可以實現多個傳感器、控制器和執行器之間的協同工作,實現對電網的實時監控、預測和優化調度,提高電網的穩定性和可靠性。
二、多Agent開發框架
AutoGen
MetaGPT
LangGraph
Swarm
CrewAI
三、多智能體協作方式
參考資料:一文讀懂Multi-Agent System的概念、場景和實現框架
3.1 MetaGPT:SOP驅動Agent的代表
SOP驅動Agent是一種非常易于理解的多智能體設計模式,SOP(Standardized Operating Procedures, SOP)即代表了在現實世界中標準的業務流程和分工,流程中的各個環節都有相應的角色進行處理。MetaGPT就是將這一理念搬到了AI Agent領域,由AI Agent來扮演業務流中的各個角色。
比如在軟件開發過程中,設計到的角色包括產品經理、架構師、項目經理、工程師和質量保證工程師等,每個角色都有其獨特的職責和專業知識。這些Agent遵循SOP來分解任務,確保每個步驟都能高效且準確地完成,產品經理負責分析需求并創建產品需求文檔,架構師負責將需求轉化為系統設計,項目經理負責任務分配,工程師負責編寫代碼,而質量保證工程師則負責測試和確保代碼質量。
MetaGPT具體的工作原理包括以下六個環節:
- 角色定義與分工:MetaGPT首先定義了一系列Agent角色,每個角色都有特定的職責和任務。這些角色模擬了真實世界中的工作流程,使得每個Agent都能專注于其擅長的領域。
- 標準化操作程序(SOPs):MetaGPT將SOPs編碼成提示序列,用于指導Agent如何執行任務。SOP確保了任務執行的一致性和質量,類似于人類團隊中的工作指南。
- 結構化通信:為了提高通信效率,MetaGPT采用了結構化的通信方式。Agent通過共享消息池發布和訂閱信息,這樣每個Agent都能獲取到完成任務所需的必要信息。
- 可執行反饋機制:在代碼生成過程中,MetaGPT引入了可執行反饋機制。這意味著Agent在編寫代碼后,會執行代碼并檢查其正確性。如果發現錯誤,Agent會根據反饋進行調試,然后再次執行,直到代碼滿足要求。這個過程類似于人類開發者在開發過程中的迭代過程。
- 任務分解與協作:MetaGPT將復雜任務分解為多個子任務,每個子任務由一個或多個Agent負責,這種分解策略使得復雜項目可以被有效地管理和執行。同時,Agent之間的協作是通過角色間的信息交換和任務依賴來實現的,確保了整個項目按計劃推進。
- 持續學習與優化:MetaGPT支持Agent從過去的經驗中學習,通過自我修正和迭代來優化其行為,這種自我改進機制可以讓系統隨著時間推移越來越智能。
3.2 AutoGen:LLM驅動Agent的代表
重磅上線!AiDocZh.com發布全新AutoGen中文文檔,帶你解鎖大模型多Agent對話新時代
Autogen 是一個由 Microsoft 推出的框架,支持創建和管理多個自主Agent,協同完成復雜的任務。這個框架的靈活性極高,我們可以根據自己的需求定義不同的Agent和對應的角色,特別是在編程、規劃和創意寫作等領域。
- AutoGen 官方文檔:https://microsoft.github.io/autogen/stable/
- AutoGen 中文文檔:https://www.aidoczh.com/autogen/stable/
Autogen框架分為非常簡單的三步,開發人員要做的就是明確任務,創建Agent,把這些Agent融合到一起。
第一步,創建Agent:
- 支持創建和管理不同類型的 Agent,包括特定任務的專家、通用助手、策略制定者等。
- 能夠為每個 Agent 指定不同的角色、任務和權限,以確保分工明確。
- 提供 Agent 定制選項,以滿足不同任務的特定需求。
第二步,提供對話環境:
- 提供一個虛擬的對話空間,讓 Agent 之間可以相互溝通和協作。
- 支持多方對話和協作,包括文本、音頻或視頻形式。
- 自動記錄對話內容和決策過程,以便回顧和審查。
第三步,對話內容管理:
- 引導 Agent 的討論方向,以確保討論圍繞目標進行。
- 提供實時監控工具,幫助發現潛在問題,并及時給予糾正和調整。
- 設置規則和約束條件,以保持對話和協作的質量和效率。
- 提供對對話內容的搜索和過濾功能,以便快速查找相關信息。
AutoGen設計了一個通用ConversableAgent類,它們能夠通過交換消息來相互對話以共同完成任務。Agent可以與其他Agent進行通信并執行操作,不同的Agent在收到消息后執行的操作可能有所不同。
AutoGen中包含兩種Agent(AssitantAgent、UserProxyAgent)和一種Manager(GroupChatManager),通過相互協作,一起處理問題。
- AssistantAgent 的主要作用是作為中樞大腦提供理解、分析;
- UserProxyAgent 主要處理由中樞大腦給出的決策。
- GroupChatManager 是能夠讓多個Agent進行分組的管理者,類似于把團隊拆分為多個Team進行管理。
3.3 XAgent:Agent 并行計算, LLM 匯總
XAgent 是一個開源、基于大型語言模型(LLM)的通用自主Agent,可以自動解決各種復雜任務。該框架采用雙環機制,外循環用于高層任務管理,起到規劃(Planning)的作用,內循環用于底層任務執行,起到執行(Execution)的作用。
(1)外循環
外循環作為高層規劃器和整個問題解決序列的主要協調者,充當整個問題解決序列的管理,它的職責可以分解如下。
-
初始計劃生成: PlanAgent首先生成一個初始計劃,為任務執行制定基本策略。該部分會將給定的復雜任務分解為更小、更易管理的子任務,其表現為一個任務隊列,可以直接地執行。
-
迭代式計劃優化: 在初始規劃之后,PlanAgent通過從任務隊列中釋放出第一個任務,然后將該子任務傳遞給內循環,PlanAgent持續監視任務的進展和狀態。在每個子任務執行后,內循環會返回來自ToolAgent的反饋。根據反饋,PlanAgent觸發適當的處理機制,如優化計劃或繼續執行后續子任務。直到隊列中沒有剩余的子任務為止,外循環結束。
(2)內循環
內循環負責執行外循環分配的各個子任務。基于外循環給定的子任務,內循環會指定一個合適的ToolAgent,確保任務達到預期的結果。內循環的主要職責包括:
-
Agent調度和工具獲取: 根據子任務的性質,派遣合適的ToolAgent,該Agent具備完成任務所需的能力。
-
工具執行: ToolAgent首先從外部系統中獲取工具以幫助完成任務。然后,Agent使用ReACT來解決子任務,尋找最佳的一系列工具調用來完成子任務。
-
反饋和反思: 在一系列動作之后,ToolAgent可以發出一個名為“subtask_submit”的特定動作,以完成當前子任務的處理,并將反饋和反思傳遞給PlanAgent。這個反饋可以指示子任務是否成功完成,或者強調潛在的改進。
(3)PlanAgent
PlanAgent賦予Agent不斷制定和修訂計劃的能力,以適應多變的環境和突發需求。這些能力對于確保靈活性、彈性和效率以應對未預見的挑戰至關重要。PlanAgent專用于外循環,其通過生成初始計劃和不斷修訂計劃來實現這一目標。PlanAgent包含四個函數來優化計劃:
-
子任務拆分: 使系統能夠將特定的子任務分解為粒度更細、更易管理的單元。只有當前正在執行或尚未啟動的子任務才有資格進行此操作。
-
子任務刪除: 刪除尚未開始的子任務。已經在進行中或已完成的子任務不具備刪除資格。這確保了一定的靈活性,可以修剪多余或不相關的任務,以優化整體執行。
-
子任務修改: 修改子任務的內容。要修改的子任務不能是已經開始或已經完成,以保持整體計劃的完整性。
-
子任務添加: 在特定子任務之后插入新的子任務。只能在當前處理的子任務或其后繼任務之后添加子任務。這確保了新任務按順序編排,簡化了執行流程,并保持了一致性。
(4)ToolAgent
ToolAgent使用ReACT尋找最佳的一系列工具來完成子任務。在每一輪中,Agent根據先前的交互生成一個動作,對于每個動作,在同一個函數調用中將智能體的推理和行動協同起來,即推理跟蹤和將要執行的動作都被視為特定函數的參數。具體而言,每個函數調用具有以下組件:
- 思考:Agent關于任務的洞察力的概括。
- 推理:跟蹤Agent通過的邏輯軌跡,以得出其思考。
- 批評:捕捉Agent對其行動的自我反思,作為一個反饋回路。它強調潛在的疏忽或改進的領域。
- 指令:根據推理決定Agent下一步要采取的動作。
- 參數:列舉要執行的動作的具體參數或細節。
四、多Agent實戰樣例
- Multi Agents協作機制設計及實踐
參考資料
- 多智能體協作機制:大語言模型綜述
- 一文讀懂Multi-Agent System的概念、場景和實現框架
- CSDN-July-智能體AI Agent的極速入門:從ReAct、AutoGPT到AutoGen、QwenAgent、XAgent、MetaGPT