聊聊螞蟻開源多 Agent 框架——muAgent
概述
CodeFuse-muAgent [1] 是螞蟻 CodeFuse 團隊開發的 Mulit Agent 框架,其核心宗旨在於簡化 agents 的標準操作程序(SOP)編排流程。
多 Agents 的核心關鍵即 Agent 的交互鏈路,也即實現 SOP 的關鍵。其核心在於如何把上一個 Agent 的輸出給到下一個 Agent 的輸入,其中需要涉及到 llm 的輸出、具體 action 的執行以及信息的解析處理。
架構
muagent 整合了一系列豐富的工具庫、代碼庫、知識庫以及沙盒環境,可支撐用戶在任何領域場景都能依託 muagent 迅速搭建起復雜的多 Agent 交互應用。通過這一框架,用戶能夠高效地執行和處理多層次、多維度的複雜任務。
其架構圖如下:
-
**Agent Base:**構建了四種基本的 Agent 類型 BaseAgent、ReactAgent、ExecutorAgent、SelectorAgent,支撐各種場景的基礎活動。
-
**Communication:**通過 Message 和 Parse Message 實體完成 Agent 間的信息傳遞,並與 Memory Manager 交互再 Memory Pool 完成記憶管理。
-
**Prompt Manager:**通過 Role Handler、Doc/Tool Handler、Session Handler、Customized Handler,來自動化組裝 Customized 的 Agent Prompt。
-
Memory Manager: 用於支撐 chat history 的存儲管理、信息壓縮、記憶檢索等管理,最後通過 Memory Pool 在數據庫、本地、向量數據庫中完成存儲。
-
**Component:**用於構建 Agent 的輔助生態組件,包括 Retrieval、Tool、Action、Sandbox 等。
-
**Customized Model:**支持私有化的 LLM 和 Embedding 的接入。
一個完整的多 Agent 生態,個人覺得,其所需的能力也就是如上的幾點。
Agent Base
在 Agent 層面,提供四種基本的 Agent 類型,對這些 Agent 進行 Role 的基礎設定,可滿足多種通用場景的交互和使用。所有的 Action 都由 Agent 執行。
-
BaseAgent:基礎功打得溜,問答、工具使用、代碼執行樣樣行。
-
ReactAgent:標準 React 流,遇事不慌,標準反應流程輕鬆應對。
-
ExecutorAgent:對任務清單進行順序執行,根據 User 或 上一個 Agent 編排的計劃,完成相關任務,排個隊,挨個幹!
-
SelectorAgent:挑三揀四,根據 User 或 上一個 Agent 的問題選擇合適的 Agent,總能找到最合適的 Agent 回答用戶需求。
相比較於 AutoGen,其實也差不多,但劃分粒度更清晰;尤其是 Agent 的編排,由專門的 agent 負責處理;而 ReAct 的功能,這裏也是單獨抽出來的 Agent,初步來看,比 AutoGen 對 React 的支持更強。
Component
輔助生態組件更詳盡,區別於 AutoGen,Sandbox 支持隔離的特性讓輔助生態的支持更豐富強大。
Communication
多 Agent 的關鍵在 Agent 間的信息交互,因此 communication 的實現是必不可少的。AutoGen 通過結轉邏輯,支持信息流轉;CodeFuse 通過 Communication 組件獨立實現該功能。從實現方式來看,CodeFuse 應該支持的更強大。AutoGen 是一個summary_method
方法來定義的。
總結
之前沒有了解過國內多 Agent 框架,因爲本身也不多;從 AutoGen 入手對多 Agent 的瞭解,再結合 CodeFuse 的實現來看,多 Agent 的 SOP 更具體更模塊化,不過其思想也是一致的,關鍵的組成部件還是那些。
總的來說,如何協調好 LLM 並來引導它們產生期望的輸出,其本質就是將業務問題抽象並拆解到可執行的 Prompt,讓他們像處理業務問題一樣精準執行;而業務的編排執行則由 Agent 實現,最終是落到了 LLM 上。
參考資料
[1]
CodeFuse-muAgent : https://github.com/codefuse-ai/CodeFuse-muAgent/blob/main/README_zh.md
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/mTwT78hNIg29UNcLIVD3-w