多Agent框架及協作機制詳解

文章目錄

  • 一、多智能體系統介紹
    • 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具體的工作原理包括以下六個環節:

  1. 角色定義與分工:MetaGPT首先定義了一系列Agent角色,每個角色都有特定的職責和任務。這些角色模擬了真實世界中的工作流程,使得每個Agent都能專注于其擅長的領域。
  2. 標準化操作程序(SOPs):MetaGPT將SOPs編碼成提示序列,用于指導Agent如何執行任務。SOP確保了任務執行的一致性和質量,類似于人類團隊中的工作指南。
  3. 結構化通信:為了提高通信效率,MetaGPT采用了結構化的通信方式。Agent通過共享消息池發布和訂閱信息,這樣每個Agent都能獲取到完成任務所需的必要信息。
  4. 可執行反饋機制:在代碼生成過程中,MetaGPT引入了可執行反饋機制。這意味著Agent在編寫代碼后,會執行代碼并檢查其正確性。如果發現錯誤,Agent會根據反饋進行調試,然后再次執行,直到代碼滿足要求。這個過程類似于人類開發者在開發過程中的迭代過程。
  5. 任務分解與協作:MetaGPT將復雜任務分解為多個子任務,每個子任務由一個或多個Agent負責,這種分解策略使得復雜項目可以被有效地管理和執行。同時,Agent之間的協作是通過角色間的信息交換和任務依賴來實現的,確保了整個項目按計劃推進。
  6. 持續學習與優化: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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/79732.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79732.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/79732.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI Agent破局:智能化與生態系統標準化的顛覆性融合!

Hi!好久不見 云邊有個稻草人-個人主頁 熱門文章_云邊有個稻草人的博客-本篇文章所屬專欄~ 目錄 一、引言 二、AI Agent的基本概念 2.1 定義與分類 2.2 AI Agent的工作原理 2.3 示例代碼:AI Agent的基本實現 三、AI Agent在企業數字化轉型中的應用 …

在阿里云和樹莓派上編寫一個守護進程程序

目錄 一、阿里云郵件守護進程 1. 安裝必要庫 2. 創建郵件發送腳本 mail_daemon.py 3. 設置后臺運行 二、樹莓派串口守護進程 1. 啟用樹莓派串口 2. 安裝依賴庫 3. 創建串口輸出腳本 serial_daemon.py 4. 設置開機自啟 5. 使用串口助手接收 一、阿里云郵件守護進程 1.…

Python----深度學習(全連接與鏈式求導法則)

一、機器學習和深度學習的區別 機器學習:利用計算機、概率論、統計學等知識,輸入數據,讓計算機學會新知 識。機器學習的過程,就是訓練數據去優化目標函數。 深度學習:是一種特殊的機器學習,具有強大的能力和…

Python爬蟲實戰:獲取網易新聞數據

一、引言 隨著互聯網的飛速發展,網絡上蘊含著海量的信息資源。新聞數據作為其中的重要組成部分,對于輿情分析、市場研究、信息傳播等多個領域具有重要價值。網易新聞作為國內知名的新聞平臺,擁有豐富多樣的新聞內容。使用 Python 的 Scrapy 框架進行網易新聞數據的爬取,可…

matlab論文圖一的地形區域圖的球形展示Version_1

matlab論文圖一的地形區域圖的球形展示Version_1 圖片 此圖來源于: ![Jieqiong Zhou, Ziyin Wu, Dineng Zhao, Weibing Guan, Chao Zhu, Burg Flemming, Giant sand waves on the Taiwan Banks, southern Taiwan Strait: Distribution, morphometric relationship…

藍橋杯:連連看

本題大意要我們在一個給定的nxm的矩形數組中找出符合條件的格子 條件如下: 1.數值相同 2.兩個橫坐標和縱坐標的差值相等(由此可得是一個對角線上的格子) 那么根據以上條件我們可以用HashMap來解決這個問題,統計對角線上數值相同…

PHP中的ReflectionClass講解【詳細版】

快餐: ReflectionClass精簡版 在PHP中,ReflectionClass是一個功能強大的反射類,它就像是一個類的“X光透視鏡”,能讓我們在程序運行時深入了解類的內部結構和各種細節。 一、反射類的基本概念和重要性 反射是指在程序運行期間獲…

微信小程序中,將搜索組件獲取的值傳遞給父頁面(如 index 頁面)可以通過 自定義事件 或 頁面引用 實現

將搜索組件獲取的值傳遞給父頁面(如 index 頁面)可以通過 自定義事件 或 頁面引用 實現 方法 1:自定義事件(推薦) 步驟 1:搜索組件內觸發事件 在搜索組件的 JS 中,當獲取到搜索值時&#xff0c…

Django 實現服務器主動給客戶端發送消息的幾種常見方式及其區別

Django Channels 原理 :Django Channels 是 Django 的一個擴展,它通過使用 WebSockets 等協議來處理長連接,使服務器能夠與客戶端建立持久連接,從而實現雙向通信。一旦連接建立,服務器可以隨時主動向客戶端發送消息。…

PHP最新好看UI個人引導頁網頁源碼

PHP最新好看UI個人引導頁網頁源碼 采用PHP、HTML、CSS及JavaScript等前端技術,構建了一個既美觀又實用的個人主頁解決方案。 源碼設計初衷在于提供一個高度可定制、跨平臺兼容的模板,讓用戶無需深厚的編程基礎,即可快速搭建出專業且富有創意的…

HarmonyOS學習 實驗九:@State和@Prop裝飾器的使用方法

HarmonyOS應用開發:父子組件狀態管理實驗報告 引言 在HarmonyOS應用開發領域,組件之間的狀態管理是一個至關重要的概念。通過有效的狀態管理,我們可以確保應用的數據流動清晰、可預測,從而提升應用的穩定性和可維護性。本次實驗…

12.第二階段x64游戲實戰-遠程調試

免責聲明:內容僅供學習參考,請合法利用知識,禁止進行違法犯罪活動! 本次游戲沒法給 內容參考于:微塵網絡安全 上一個內容:11.第二階段x64游戲實戰-框架代碼細節優化 本次寫的內容是關于調試、排錯相關的…

c++基礎三

1.繼承 繼承表示,子類可以獲取父類的屬性和方法,然后可以寫子類獨有的屬性和方法,或者修改父類的方法。類可以繼承父類的公共成員(public),但不能繼承私有成員(private),私有成員只能在父類內部訪問。 1.1 案例一單繼承 #include <iostream>using namespace …

JSON學習筆記

文章目錄 1. JSON是什么2. JSON的特點與結構3. JSON的使用4. JSON文件讀取 1. JSON是什么 JSON&#xff08;JavaScript Object Notation&#xff0c;JavaScript對象表示法&#xff09;是一種輕量級的數據交換格式&#xff0c;易于人閱讀和編寫&#xff0c;同時也易于機器解析和…

王牌學院,25西電通信工程學院(考研錄取情況)

1、通信工程學院各個方向 2、通信工程學院近三年復試分數線對比 學長、學姐分析 由表可看出&#xff1a; 1、信息與通信工程25年相較于24年上升5分、軍隊指揮學25年相較于24年上升30分 2、新一代電子信息技術&#xff08;專碩&#xff09;25年相較于24年下降25分、通信工程&…

WPF依賴注入IHostApplicationLifetime關閉程序

WPF依賴注入IHostApplicationLifetime關閉程序 使用Application.Current.Shutdown();退出會報異常 應該使用 app.Dispatcher.InvokeShutdown(); Application.Current.Shutdown();app.Dispatcher.InvokeShutdown();static App app new();[STAThread]public static void Main(…

Jenkins 代理自動化-dotnet程序

兩種方式 容器部署 本地部署 容器部署 可自動實現&#xff0c;服務器重啟&#xff0c;容器自動運行 主要將dockerfile 寫好 本地部署 1.服務器重啟自動運行代理 參考下面的鏈接&#xff0c;只是把程序換成 java程序&#xff0c;提前確認好需要的jdk版本 Ubuntu20.04 設置開機…

從Archery到NineData:積加科技驅動數據庫研發效能與數據安全雙升級

積加科技作為國內領先的企業級數字化解決方案服務商&#xff0c;依托自研的 A4X 數字化平臺&#xff08;https://a4x.io/&#xff09;&#xff0c;專注于為全球范圍內的視覺物聯網&#xff08;IoT&#xff09;設備提供 PaaS/SaaS 服務。致力于運用 AI 技術賦能物聯網世界的各類…

SpringBoot整合Logback日志框架深度實踐

一、依賴與默認集成機制 SpringBoot從2.x版本開始默認集成Logback日志框架,無需手動添加額外依賴。當項目引入spring-boot-starter-web時,該組件已包含spring-boot-starter-logging,其底層實現基于Logback+SLF4J組合。這種設計使得開發者只需關注業務日志的輸出規則,無需處…

自由學習記錄(56)

從貼圖空間&#xff08;texture space&#xff09;將值還原到切線空間&#xff08;tangent space&#xff09;向量 tangentNormal.xy (packedNormal.xy * 2 - 1) * _BumpScale; 背后的知識點&#xff1a;法線貼圖中的 RGB 是在 0~1 范圍內編碼的向量 所以貼圖法線是怎么“壓…