支持兩種類型的運行時環境:獨立式和分布式
獨立代理運行時
獨立運行時適用于單進程應用程序,其中所有代理均使用同一種編程語言實現并在同一進程中運行。在 Python API 中,獨立運行時的一個示例是SingleThreadedAgentRuntime。
在這里,代理通過運行時通過消息進行通信,并且運行時管理代理的生命周期。
開發者可以使用提供的組件快速構建代理,這些組件包括 路由代理、AI 模型客戶端、AI 模型工具、代碼執行沙箱、模型上下文存儲等。他們也可以從頭開始實現自己的代理,或使用其他庫
分布式代理運行
分布式運行時適用于多進程應用程序,其中代理可以用不同的編程語言實現并在不同的機器上運行。
如上圖所示,分布式運行時由一個主機服務器和多個工作進程組成。主機服務器負責跨工作進程的代理之間的通信,并維護連接狀態。工作進程運行代理,并通過網關與主機服務器通信。它們向主機服務器通告它們運行的代理,并管理代理的生命周期。
代理的工作方式與獨立運行時相同,因此開發人員可以在兩種運行時類型之間切換,而無需改變其代理實現
應用程序堆棧
多代理系統架構的層級結構,分為兩個主要部分:
-
Your Multi-Agent Application(你的多代理應用):
Application Logic(應用邏輯)
:這是應用的核心功能層,定義了多代理系統的業務邏輯。
Behavior Contract (Message Protocol)(行為契約(消息協議))
:指定了代理之間的通信規則和協議,確保一致的行為。
Message Types(消息類型)
:定義了代理之間交換的不同消息類型,支持通信的多樣性。 -
Agent Communication Stack(代理通信堆棧):
Message Routing(消息路由)
:負責管理消息在代理之間的傳遞和路由。
Protobuf + gRPC
:使用 Protocol Buffers(Protobuf)和 gRPC 作為底層通信技術,支持高效的數據序列化和遠程過程調用。 -
總體來說,該圖描述了多代理系統如何通過分層設計(應用邏輯、通信協議和底層技術)實現功能和通信,Multi-Agent Patterns(多代理模式)貫穿整個架構,指導其設計和實現
堆棧底部是基礎的消息傳遞和路由功能,用于使代理能夠相互通信。這些功能由代理運行時管理,對于大多數應用程序而言,開發者只需與運行時提供的高級 API 進行交互(請參閱代理和代理運行時)
在堆棧的頂層,開發人員需要定義代理交換的消息類型。這組消息類型構成了代理必須遵守的行為契約,而契約的實現決定了代理如何處理消息。行為契約有時也稱為消息協議。開發人員負責實現行為契約。多代理模式源于這些行為契約(參見多代理設計模式)
三、代理生命周期
代理運行時管理代理的身份和生命周期。
應用程序不會直接創建代理,而是使用代理實例的工廠函數注冊代理類型。
在本節中,我們將解釋運行時如何識別和創建代理。
當運行時根據其 ID
向代理實例傳遞消息時,它會獲取該實例,如果實例不存在則創建它
例如:一個運行時已將代理類型注冊code_reviewer
到一個工廠函數中,該工廠函數會生成執行代碼審查的代理實例。每個代碼審查請求都有一個唯一的 ID,review_request_id
用于標記一個專用會話。在這種情況下,每個請求都可以由一個具有代理 ID 的新實例來處理。(“code_reviewer”, review_request_id)