一文說清楚分布式思維狀態(tài):由事件驅(qū)動的多智能體系統(tǒng) 原創(chuàng)
大語言模型的能力上限止步于聊天機器人、問答系統(tǒng)、翻譯等特定語言,要想進一步展現(xiàn)潛力、解決更廣泛的問題,就必須想辦法讓它根據(jù)洞察力采取行動。換言之,只有掌握了推理的武器,大語言模型才算真正的完全體。
這種推理智能體在AI研究領(lǐng)域有著悠久歷史,他們能夠?qū)σ酝佑|過的情況進行概括,再據(jù)此處理從未見過的情況。在此基礎(chǔ)之上,只要能再建立起多智能體系統(tǒng),大模型的全面爆發(fā)將指日可待。
多智能體系統(tǒng)的力量
這就像組建一支AI夢之隊,每位隊員都有自己的獨特技能,圍繞在同一個目標(biāo)之下協(xié)同努力。多智能體系統(tǒng)依靠通信、上下文共享和行動協(xié)調(diào)的智能體網(wǎng)絡(luò)來實現(xiàn)這種合作,因此能夠解決任何單一智能體或個人都無法處理的復(fù)雜挑戰(zhàn)。
當(dāng)然,能力越大,面對的問題也就越困難。
但熟悉大規(guī)模團隊項目的朋友可以想見,多個智能體必然也存在像人類同事中的溝通不暢、職責(zé)重疊和難以朝著共同目標(biāo)邁進等問題。
為此,本文將深入探討事件驅(qū)動設(shè)計(已經(jīng)在微服務(wù)架構(gòu)中得到驗證)如何解決混亂問題,建立起高效、可擴展的多智能體系統(tǒng)。如果您的團隊正在探索AI的未來應(yīng)用,相信以下內(nèi)容將帶來有益的啟發(fā)。
多智能體協(xié)作的挑戰(zhàn)
多智能體系統(tǒng)的管理有著諸多獨特難題:
- 上下文與數(shù)據(jù)共享:智能體間必須準(zhǔn)確、高效地交換信息,避免重復(fù)、丟失或誤解。
- 可擴展性與容錯性:隨著智能體數(shù)量的增長,系統(tǒng)必須處理復(fù)雜交互,并保證可從故障中優(yōu)雅恢復(fù)。
- 集成復(fù)雜性:智能體往往很難與其他系統(tǒng)和工具輕松協(xié)作,需要額外設(shè)計無縫的互操作性。
- 及時準(zhǔn)確的決策:智能體需要根據(jù)最新數(shù)據(jù)做出實時決策,以確保響應(yīng)能力并避免不良結(jié)果。
- 安全與驗證:建立護欄對于防止意外操作至關(guān)重要,特別是AI模型輸出結(jié)果具有高隨機性,更需要輔以嚴(yán)格的質(zhì)量保證。
克服這些挑戰(zhàn)不僅需要全面協(xié)調(diào),還需要為多智能體系統(tǒng)量身定制經(jīng)過驗證的設(shè)計模式。接下來,我們將深入研究這些模式,演示如何使用事件驅(qū)動設(shè)計來建立可擴展、可靠且高效的多智能體架構(gòu)。
多智能體設(shè)計模式
多智能體設(shè)計模式負(fù)責(zé)定義智能體間溝通、協(xié)作或競爭模式,從而解決問題的交互結(jié)構(gòu)。通過關(guān)注問題域及智能體的交互性質(zhì),這些模式能夠?qū)Ω黝悎鼍跋碌淖灾鲗嶓w做出協(xié)調(diào)。
本文主要探討四大關(guān)鍵模式:協(xié)調(diào)器-工作者模式、分層智能體模式、黑板模式與基于市場模式。我們將展示如何將這些常見模式轉(zhuǎn)化為事件驅(qū)動的分布式系統(tǒng),在建立數(shù)據(jù)流應(yīng)用的同時消除為智能體編排專門設(shè)置通信路徑的需求。我們將使用Apache Kafka概念模型描述這些模式的事件驅(qū)動版本。
協(xié)調(diào)器-工作者模式
在此模式中,中央?yún)f(xié)調(diào)器將任務(wù)分配給工作者智能體并管理其執(zhí)行。此模式類似于分布式計算中的主工作者模式,可實現(xiàn)高效的任務(wù)委派與集中協(xié)調(diào),同時允許工作者專注于處理單一特定任務(wù)。
協(xié)調(diào)器-工作者模式
使用數(shù)據(jù)流,我們可以調(diào)整此模式以實現(xiàn)對智能體的事件驅(qū)動。Apache Kafka等數(shù)據(jù)流技術(shù)提供基于鍵的分區(qū)策略,協(xié)調(diào)器可使用鍵在單一主題的各分區(qū)間發(fā)送命令消息。之后,工作者智能體充當(dāng)消費者組,從一個或多個分配區(qū)中提取事件以完成工作。接下來,各工作者智能體將輸出消息發(fā)送至下一主題,由下游系統(tǒng)在主題之內(nèi)繼續(xù)使用。
整個模式如下圖所示:
事件驅(qū)動的協(xié)調(diào)器-工作者模式
雖然此圖看似復(fù)雜,但實際大大簡化了系統(tǒng)操作。
協(xié)調(diào)器不再需要管理與工作者智能體的連接;相反,它使用一種鍵控策略來跨分區(qū)進行工作分配。對于需要由有狀態(tài)工作者智能體作為上游消息進行處理的事件,亦可對序列中的各個事件使用相同的鍵。
工作者智能體會從一個或多個分區(qū)中提取數(shù)據(jù),Kafka重新均衡協(xié)議可確保各工作者智能體的負(fù)載強度基本相當(dāng)。而一旦工作者發(fā)生故障,則可從給定分區(qū)重播日志以獲取保存的偏移量。協(xié)調(diào)器不再需要定制邏輯來管理各工作者;相反,它只需指定工作并使用合理的鍵控策略進行分配。同樣的,工作者也繼承了Kafka消費者組的功能,因此可利用公共機制實現(xiàn)協(xié)調(diào)、擴展與故障恢復(fù)。
分層智能體模式
在此模式中,各智能體被組織為層,其中較高級別的智能體負(fù)責(zé)監(jiān)督或?qū)⑷蝿?wù)委派給較低級別的智能體。通過將較大的復(fù)雜問題拆分成更小、更易于管理的部分,此模式在管理大型復(fù)雜問題方面表現(xiàn)尤佳。
分層多智能體模式
為了將分層模式轉(zhuǎn)化為事件驅(qū)動的形式,我們在智能體層次中遞歸應(yīng)用相同的技術(shù)以拆分協(xié)調(diào)器、工作者模式中的工作,以便各非葉節(jié)點均充當(dāng)其各自子樹的協(xié)調(diào)器。
在以上示例中,Mid Level Agent #1本身是其葉智能體的協(xié)調(diào)器,整個工作流則在功能層面被封裝到由Top Level Agent負(fù)責(zé)協(xié)調(diào)的工作者角色當(dāng)中。
上圖所示的分層拓?fù)淇赊D(zhuǎn)化為下圖:
事件驅(qū)動的分層多智能體模式
通過對分層模式進行事件驅(qū)動式改造,我們實現(xiàn)了系統(tǒng)異步,大大簡化了數(shù)據(jù)流的概念模型。整個運作體系更具彈性,因為拓?fù)洳辉僖杂簿幋a形式存在。我們可向同級組中添加或刪除智能體,這就避免了額外安排智能體管理此類變更、或在通信路徑中造成故障。
黑板模式
黑板模式代表一種共享知識庫——各智能體利用“黑板”來發(fā)布并檢索信息。此模式允許智能體異步協(xié)作且無需直接通信。這對于解決需要增量、多智能體貢獻的復(fù)雜問題特別重要。
黑板模式
我們可以以一種直接的方式調(diào)整以模式,將其改造為事件驅(qū)動架構(gòu)。
將黑板作為一個數(shù)據(jù)流主題,其由工作者生成并使用的消息組成。如果需要,可使用鍵控策略或有效負(fù)載字段來注釋事件是由哪個智能體發(fā)起。
事件驅(qū)動版本如下圖所示:
事件驅(qū)動型黑板模式
這同樣大大簡化了操作流程,也減少了在基礎(chǔ)設(shè)施之外建立定制邏輯的需求。每個工作者只需生成并使用事件,即可與團隊內(nèi)的其他成員協(xié)作。
基于市場模式
此模式模擬一個分散的市場,各智能體在其中協(xié)商并競爭以分配任務(wù)或資源。
例如,解算器或投標(biāo)智能體可相互交換響應(yīng)以改進自身響應(yīng)結(jié)果。此過程會重復(fù)固定輪數(shù),其中聚合器智能體將根據(jù)所有智能體的響應(yīng)結(jié)果編譯出最終答案。
基于市場的模式
這是一種重要的簡化手段,消除了解算器智能體間原本發(fā)生的二次連接,因此避免了在存在大量智能體或出現(xiàn)智能體添加/丟失時連接難以管理的問題。
事件驅(qū)動版本如下所示:
事件驅(qū)動型基于市場模式
那么,為什么我們堅信這些智能體能夠以事件驅(qū)動為前提?
協(xié)調(diào)和通信的通用操作模型
這里的基本設(shè)計模式依賴于共享操作模型,以類似微服務(wù)的方式實現(xiàn)智能體間的無縫化協(xié)調(diào)。
該模型的核心是一種共享語言——或者說智能體交換信息、保持一致并有效協(xié)作的方式。這種語言和結(jié)構(gòu)化更新均由事件來充當(dāng),確保智能體可以解釋指令、共享上下文并協(xié)調(diào)任務(wù)。我們可以將其視為系統(tǒng)形式的群聊:保持各智能體同步并順利集成新的智能體。
下面來看這種共享語言能夠讓智能體執(zhí)行哪些操作:
- 解釋命令:智能體接收清晰、標(biāo)準(zhǔn)化的指令(如JSON負(fù)載),用以指導(dǎo)其操作。
- 共享上下文:各智能體一致廣播更新,避免重復(fù)并確保相互理解。
- 協(xié)調(diào)任務(wù):智能體執(zhí)行與共同目標(biāo)一致的獨立操作,即使在動態(tài)或不可預(yù)測的環(huán)境下也不受影響。
這就是接口的意義所在。我們必須通過設(shè)計確保智能體針對事件和命令做出反應(yīng),而非各自為戰(zhàn),確保它們能被無縫集成到更大的事件驅(qū)動生態(tài)系統(tǒng)當(dāng)中。
為智能體指定接口
這里有一個關(guān)鍵假設(shè),就是各智能體不會預(yù)測行動,而僅根據(jù)上游事件或命令做出反應(yīng)。在動態(tài)且互聯(lián)的環(huán)境下,我們可以使用三個組件對智能體進行建模:
- 輸入:使用事件或命令。
- 處理:應(yīng)用推理或收集其他數(shù)據(jù)。
- 輸出:向下游消費者發(fā)送行動。
這種反應(yīng)式設(shè)計的靈感源自微服務(wù),可使用經(jīng)過驗證的設(shè)計模式實現(xiàn)高效、可擴展系統(tǒng)的開發(fā)。
從請求/響應(yīng)到事件驅(qū)動的轉(zhuǎn)變
傳統(tǒng)上,系統(tǒng)的各個部分是通過請求/響應(yīng)模型進行交互。這雖然更簡單,但可擴展性和實時響應(yīng)能力的上限始終不高。隨著系統(tǒng)增長其會引入延遲和性能瓶頸,因為每項操作都須獲得許可,進而拖慢操作速度。
向事件驅(qū)動架構(gòu)的演進,標(biāo)志著關(guān)鍵性的轉(zhuǎn)變。
在此模型中,智能體被設(shè)計為自主發(fā)出并監(jiān)聽事件。事件充當(dāng)一種觸發(fā)信號,允許智能體直接據(jù)此做出響應(yīng)。這種方式能夠讓系統(tǒng)更具敏捷性、可擴展性和高度動態(tài)性。
事件驅(qū)動系統(tǒng)中的智能體接口由它們發(fā)出和使用的具體事件來定義,被封裝在簡單且標(biāo)準(zhǔn)化的消息中,例如JSON負(fù)載。這樣的結(jié)構(gòu)化設(shè)計:
- 簡化了智能體理解和響應(yīng)事件的方式。
- 促進了智能體在不同工作流和系統(tǒng)中的可復(fù)用性。
- 實現(xiàn)了與動態(tài)、持續(xù)發(fā)展的環(huán)境的無縫集成。
例如,健康監(jiān)測智能體可在觸發(fā)閾值時發(fā)出警報,無需定制依賴項即可輕松被集成至工作流中。
確保一致性和協(xié)調(diào)性
為了讓分布式系統(tǒng)運作順暢,讓各智能體間保持一致狀態(tài)同樣至關(guān)重要。這里就輪到不可變?nèi)罩境鰣隽恕悄荏w處理的每個事件或命令,都將被記錄在永久不可更改的日志當(dāng)中。作為單一事件來源,日志可確保所有智能體均在相同的上下文中運行,從而實現(xiàn):
- 可靠的協(xié)調(diào)和同步。
- 通過可重放事件實現(xiàn)系統(tǒng)彈性,獲得故障恢復(fù)能力。
- 復(fù)雜的消費者模型,其中多個智能體可響應(yīng)同一事件且不致發(fā)生混淆或重疊。
這種方法大大提高了系統(tǒng)可靠性,確保智能體即使在復(fù)雜或難以預(yù)測的環(huán)境下也能協(xié)同工作以實現(xiàn)共同目標(biāo)。
要點總結(jié)
多智能體系統(tǒng)正在重新定義AI的可能性。但要充分發(fā)揮其潛力,我們必須克服可擴展性、容錯性和實時決策等挑戰(zhàn)。而事件驅(qū)動設(shè)計提供了一條清晰的前進道路。
隨著AI應(yīng)用變得愈發(fā)復(fù)雜,事件驅(qū)動的多智能體系統(tǒng)將成為解決復(fù)雜現(xiàn)實問題的利器。通過采用這種模型并實現(xiàn)智能體間的標(biāo)準(zhǔn)化通信,我們有望建立起一套具有彈性、效率極高且可靈活適應(yīng)變化的基礎(chǔ)設(shè)施,充分發(fā)揮架構(gòu)的效能潛力。
原文標(biāo)題:?A distributed state of mind: Event-driven multi-agent systems??,作者:Sean Falconer、Andrew Sellers
