
Agent 架構

https://arxiv.org/pdf/2303.18223
這篇論文詳細解讀了Agent的概念、發展歷史以及近期的研究熱點。 除了這些基礎知識,最有價值的部分在於,它總結了基於大型語言模型(LLM)的Agent的架構,使我們能夠按照一定的標準範式去設計自己的Agent。
這篇文章主要從兩個關鍵方面來闡述基於LLM的Agent的構建策略:設計Agent架構以更好地發揮LLM的能力,以及如何賦予Agent完成不同任務的能力。
在Agent架構設計方面,該論文提出了一個統一的框架,包括Profile模組、Memory模組、Planning模組和Action模組。

Profile模組:
定義和管理Agent角色的特性和行為。 它包含一系列參數和規則,描述了Agent的各種屬性,如角色、目標、能力、知識和行為方式等。 這些屬性決定了Agent如何與環境交互,如何理解和響應任務,以及如何進行決策和規劃。 這個模組提出了三種Agent角色生成方式,包括LLM生成方法、數據集對齊方法和組合方法。
- LLM生成方法:利用大語言模型自動生成代理的個人特徵,比如年齡、性別、個人喜好等背景資訊。 具體做法是:首先設定代理的組成規則,明確目標人群中代理應具備的屬性; 然後指定幾個手工創建的種子配置檔作為範例; 最後利用語言模型生成大量代理配置檔。 這種方法可以快速批量生成配置檔,但由於缺乏精確控制,生成的代理可能會缺乏細節。
- 數據集對齊方法:是從真實世界的人口數據集中獲取代理的配置檔資訊,比如通過抽取人口調查數據組織成自然語言描述。 這樣可以使代理行為更真實可信,準確反映真實人口的屬性分佈。 但需要可靠的大規模數據集支援。
- 組合方法:利用真實數據集生成一部分關鍵代理,確保反映真實世界規律; 然後用LLM生成方法補充大量其他代理,拓展代理數量。 這樣既保證了代理的真實性,又實現了充足的代理數量,使系統可以類比更複雜的社會交互。 謹慎的配置檔設計是構建有效代理系統的基礎。
記憶體模組:
在Agent系統中扮演重要角色,它存儲和組織從環境中獲取的資訊,以指導未來行動。
結構上,記憶體模組通常包含短期記憶和長期記憶兩個部分。 短期記憶暫存最近的感知,長期記憶存儲重要資訊供隨時檢索。
格式上,記憶體資訊可以用自然語言表達,也可以編碼為向量嵌入提高檢索效率。 還可以利用資料庫存儲,或組織為結構化清單表示記憶體語義。
操作上,主要通過記憶讀取、寫入和反射三種機制與環境交互。 讀取提取相關信息指導行動,寫入存儲重要資訊,反射總結見解提升抽象水準。
規劃(Planning):
主要任務是説明Agent將複雜的任務分解為更易處理的子任務,並制定出有效的策略。 它大致分為兩種類型,一種是不依賴反饋的計劃,另一種則是基於反饋的計劃。
不依賴反饋的計劃在制定過程中並不參考任務執行后的反饋,它有幾種常用的策略。 比如單路徑推理,它按照級聯的方式,一步一步地生成計劃。 另外,還有多路徑推理,它會生成多個備選的計劃路徑,形成樹狀或圖狀的結構。 當然,我們也可以利用外部的規劃器進行快速搜索,以找出最優的計劃。
基於反饋的計劃,它會根據任務執行后的反饋來調整計劃,這種方式更適合需要進行長期規劃的情況。 反饋的來源可能來自任務執行結果的客觀反饋,也可能是根據人的主觀判斷給出的反饋,甚至還可以是由輔助模型提供的反饋。
Action模組:
職責是將抽象的決策轉化為具體的行動,它就像是一個橋樑,連接了Agent的內部世界與外部環境。 在執行任務時,需要考慮行動的目標、生成方式、應用範圍以及可能產生的影響。
理想的行動應當是有目的的,例如完成特定任務、與其他代理進行交流或者探索環境。 行動的產生可以依賴於查詢過去的記憶經驗,或者遵循預設的計劃。 而行動的範圍,不僅可以通過利用如API和知識庫等外部工具來擴展,還需要發揮大型語言模型(LLM)的內在能力,例如規劃、對話及理解常識等。
架構就像PC的硬體,但僅依賴架構設計是不夠的,我們還需要賦予Agent完成不同任務的能力,這些被視為“軟體”資源。 論文中提出了幾種方法,包括模型微調、提示工程和機械工程。 其中提示工程應該是最為常見的一種形式了,我們常聽說的提示詞工程師就是在這個語境下的角色。
模型微調。 使用特定任務數據對模型進行微調,提升相關能力。 數據可以來自人類註釋、LLM生成或實際應用中收集。 這可以使Agent行為更符合人類價值觀。
提示工程。 通過自然語言描述向LLM灌輸所需的能力,然後將描述作為提示指導Agent操作。 這可以讓Agent快速獲得指定的軟體能力。
機械工程。 主要涵蓋:

- 試錯法:Agent先執行操作,根據效果調整行動。 逐步優化。
- 眾包法:整合多個Agent的見解,形成更新的集體回應。
- 經驗積累法:Agent通過不斷探索積累經驗,逐步提升軟體能力。
- 自我驅動法:Agent自主設置目標並在環境中不斷探索,最終獲得軟體能力。
Agent實踐
作為一個LLM-based Agent,其設計目標應始終對人類有益,也就是說,人類可以利用人工智慧造福人類。 具體來說,我們希望Agent能實現以下目標:
- 幫助使用者從日常任務和重複勞動中解脫出來,從而減輕人類的工作壓力,提高任務解決效率。
- 不再需要使用者提供明確的低級指令。 相反,Agent可以獨立分析、規劃和解決問題。
- 在解放用戶雙手的同時,Agent也解放了他們的大腦,使其能夠從事探索性和創新性工作。

單個Agent的一般能力
目前,LLM-based Agent應用實例的發展十分活躍。 AutoGPT 是目前流行的開源專案之一,旨在實現完全自主的系統。 除了 GPT-4 等大型語言模型的基本功能外,AutoGPT 框架還整合了各種實用的外部工具和長短期內存管理。 使用者輸入定製的目標后,就可以解放雙手,等待 AutoGPT 自動生成想法並執行特定任務,所有這些都不需要使用者的額外提示。
面向任務的部署
LLM-based Agent 可以理解人類的自然語言指令並執行日常任務,是目前最受用戶青睞、最具實用價值的Agent之一。 這是因為它們具有提高任務效率、減輕使用者工作量和促進更廣泛使用者訪問的潛力。
在面向任務的部署中,Agent遵從使用者的高級指令,承擔目標分解、子目標規劃、環境交互探索等任務,直至實現最終目標。
為了探索Agent是否能夠執行基本任務,部分學者將它們部署到基於文本的遊戲場景中。 在這類遊戲中,Agent完全使用自然語言與世界互動。 通過閱讀周圍環境的文字描述,並利用記憶、規劃和試錯等技能,它們可以預測下一步行動。 然而,由於基礎語言模型的局限性,Agent在實際執行過程中往往依賴於強化學習。
隨著 LLM 的逐步發展,具備更強文本理解和生成能力的 Agent 在通過自然語言執行任務方面展現出巨大潛力。 由於過於簡單,基於文本的簡單場景不足以作為 LLM-based Agent 的測試場所。 為了滿足這一需求,我們構建了更真實、更複雜的模擬測試環境。
根據任務類型,我們將這些類比環境分為網路場景和生活場景,並介紹Agent在其中扮演的具體角色。
1. 在網路場景中:
在網路場景中代表使用者執行特定任務被稱為網路導航問題。 Agent解釋使用者指令,將其分解為多個基本操作,並與計算機進行交互。 這通常包括填寫表格、網上購物和發送電子郵件等網路任務。 Agent需要具備在複雜的網路場景中理解指令、適應變化(如嘈雜的文本和動態 HTML 網頁)以及概括成功操作的能力。 這樣,Agent就能在未來處理看不見的任務時實現無障礙和自動化,最終將人類從與計算機使用者介面的重複交互中解放出來。
通過設計提示,他們試圖讓Agent理解整個 HTML 原始程式碼,並預測更合理的下一步行動。 Mind2Web 將多個針對 HTML 進行微調的 LLMs 結合在一起,使它們能夠在真實世界的場景中總結冗長的 HTML 代碼並提取有價值的資訊。 此外,WebGum 通過使用包含 HTML 螢幕截圖的多模態語料庫,增強了具有視覺感知能力的Agent的能力。 它同時對 LLM 和視覺編碼器進行了微調,加深了Agent對網頁的全面理解。
2. 生活場景中:
在生活場景中的許多日常家務勞動中,Agent必須理解隱含指令並應用常識性知識。 對於完全基於海量文本訓練的 LLM-based Agent 來說,人類認為理所當然的任務可能需要多次試錯嘗試。 更現實的場景往往會產生更模糊、更微妙的任務。
不過,這種靜態推理和規劃能力也有其潛在的缺點。 Agent生成的行動往往缺乏對周圍動態環境的感知:
Wu 等人介紹了 PET 框架,該框架通過早期糾錯方法減少了環境資訊中的無關物體和容器。 PET 鼓勵Agent更有效地探索場景和規劃行動,並專注於當前的子任務。
面向創新的部署
LLM-based Agent 在執行任務和提高重複性工作的效率方面表現出了強大的能力。 然而,在智力要求更高的領域,如前沿科學領域,Agent 的潛力尚未得到充分發揮。 這種局限性主要來自兩個方面的挑戰:
- 一方面,科學本身的複雜性構成了重大障礙,許多特定領域的術語和多維結構難以用單一文本表示。 因此,它們的完整屬性無法完全封裝。 這大大削弱了 Agent 的認知水準。
- 另一方面,科學領域嚴重缺乏合適的訓練數據,使得Agent難以理解整個領域的知識。 如果能在Agent內部發現自主探索的能力,無疑會給人類科技帶來有益的創新。
目前,各個專業領域都在為克服這一挑戰而努力。 計算機領域的專家充分利用了Agent強大的代碼理解和調試能力。 在化學和材料領域,研究人員為Agent配備了大量通用或特定任務工具,以更好地理解領域知識。 Agent逐漸發展成為全面的科學助手,精通在線研究和文檔分析,以填補數據空白。 它們還利用機器人應用程式介面(API)進行現實世界的交互,從而完成材料合成和機制發現等任務。
LLM-based Agent 在科學創新方面的潛力是顯而易見的,但我們並不希望它們的探索能力被用於可能威脅或傷害人類的應用中。
Boiko 等人研究了Agent在合成非法藥物和化學武器過程中隱藏的危險,指出Agent可能會在對抗性提示中被惡意使用者誤導。 這為我們今後的工作敲響了警鐘。
面向生命週期的部署
在一個開放、未知的世界中,建立一個能夠不斷探索、發展新技能並保持長期生命週期的、具有普遍能力的Agent是一項巨大的挑戰。
隨著具有驚人推理和分析能力的 LLM 的出現,Agent開始利用 LLM 作為高級計劃器來指導類比生存任務。 一些研究人員利用 LLM 將高級任務指令分解為一系列子目標、基本技能序列或基本鍵盤/滑鼠操作,逐步協助Agent探索開放世界。
Multi-Agent的協調潛力
動機與背景:
儘管LLM-based Agent擁有值得稱道的文本理解和生成能力,但它們在自然界中是作為孤立的實體運行的。 它們缺乏與其他Agent協作和從社會互動中獲取知識的能力。 這種固有的局限性限制了它們從他人的多輪反饋中學習以提高性能的潛力。 此外,在需要multi-agent之間進行協作和資訊共用的複雜場景中,它們也無法有效部署。
早在 1986 年,馬文-明斯基就做出了前瞻性的預測。 他在《心靈社會》一書中提出了一種新穎的智慧理論,認為智慧產生於許多具有特定功能的小型Agent的相互作用。
例如,某些Agent可能負責模式識別,而其他Agent可能負責決策或生成解決方案。
作為主要研究領域之一的多Agent系統(MAS)關注的重點是一組Agent如何有效地協調和協作解決問題。 一些專門的通信語言(如 KQML )很早就被設計出來,以支援Agent之間的資訊傳輸和知識共用。 但是,它們的資訊格式相對固定,語義表達能力有限。
進入 21 世紀,強化學習演算法(如 Q-learning)與深度學習的結合,已成為開發可在複雜環境中運行的 MAS 的重要技術。 如今,基於 LLMs 的構建方法開始展現出巨大的潛力。 Agent之間的自然語言交流變得更加優雅,也更容易為人類所理解,從而大大提高了交互效率。
潛在優勢:
具體來說,LLM-based multi-Agent系統可以提供幾種優勢。 根據分工原則,具備專業技能和領域知識的單個Agent可以從事特定的任務。
- 一方面,通過分工,Agent處理特定任務的技能日益精進。
- 另一方面,將複雜任務分解為多個子任務,可以省去在不同流程之間切換的時間。
最終,多個Agent之間的高效分工可以完成比沒有專業化分工時大得多的工作量,從而大大提高整個系統的效率和產出品質。 在前文中,本文全面介紹了LLM-based Agent的多功能能力。
因此,在本節中,我們將重點探討multi-agent環境中Agent之間的交互方式。 根據目前的研究,這些交互方式大致可分為以下幾類:取長補短的合作式交互,以及互利共贏的對抗式交互(見圖 8)。
互補性合作交互
在當前基於 LLM 的多Agent系統中,Agent之間的交流主要使用自然語言,這被認為是最自然、最易為人類理解的交互形式。 我們將現有的多Agent合作應用分為兩類:無序合作和有序合作。
無序合作:
當系統中有三個或三個以上的Agent時,每個Agent都可以自由地公開表達自己的觀點和意見。 他們可以提供反饋和建議,以修改與當前任務相關的反應。 整個討論過程不受控制,沒有特定的順序,也沒有引入標準化的協作工作流程。 我們把這種多Agent合作稱為無序合作。 ChatLLM 網路是這一概念的典範代表。 它類比了神經網路中的前向和後向傳播過程,將每個Agent視為一個單獨的節點。 后一層的Agent需要處理來自前面所有Agent的輸入,並向前傳播。 一個潛在的解決方案是在multi-Agent系統中引入一個專門的協調Agent,負責整合和組織所有Agent的回應,從而更新最終答案。 然而,整合大量反饋數據並提取有價值的見解對協調Agent來說是一個巨大的挑戰。 此外,多數表決也可以作為做出適當決策的有效方法。 然而,目前將這一模組整合到多Agent系統中的研究還很有限。 有學者訓練了九個獨立的最高司法Agent,以更好地預測美國最高法院的司法裁決,並通過多數表決程式做出決定。
有序合作:
當系統中的Agent遵守特定規則時,例如按順序逐一發表意見,下游Agent只需關注上游的產出。 這樣,任務完成效率就會大大提高,整個討論過程也會變得井然有序。 CAMEL 是雙Agent合作系統的成功實施案例。 在角色扮演交流框架內,Agent分別扮演人工智慧使用者(下達指令)和人工智慧助手(通過提供具體解決方案來滿足請求)的角色。 通過多輪對話,這些Agent自主合作完成使用者指令。 一些研究人員將雙Agent合作的理念融入到單個Agent的操作中,交替使用快速和深思熟慮的思維過程,以在各自的專業領域發揮優勢。
此外,AgentVerse 為群體Agent合作構建了一個多功能、多任務測試框架。 它可以根據任務的複雜程度組建一個動態適應的Agent團隊。 為了提高合作效率,研究人員希望Agent能從人類成功的合作案例中學習。 MetaGPT 從軟體開發中的經典瀑布模型中汲取靈感,將Agent的輸入/輸出標準化為工程文檔。
通過將先進的人類流程管理經驗編碼到Agent提示中,多個Agent之間的合作變得更有條理。 然而,在 MetaGPT 的實踐探索中,我們發現了Multi-Agent合作的潛在威脅。 如果不制定相應的規則,多個Agent之間的頻繁互動會無限放大輕微的幻覺。
例如,在軟體開發過程中,可能會出現功能不全、依賴關係缺失、人眼無法察覺的錯誤等問題。 引入交叉驗證或及時的外部反饋等技術,可對Agent輸出的品質產生積極影響。
對抗性互動促進進步
傳統上,合作方法在Multi-Agent系統中得到了廣泛探索。 不過,研究人員越來越認識到,將博弈論的概念引入系統可以帶來更穩健、更高效的行為。 在競爭環境中,Agent可以通過動態互動迅速調整策略,努力選擇最有利或最合理的行動來應對其他Agent引起的變化。 在基於非 LLM 的競爭領域,已經有成功的應用。 例如,AlphaGo Zero 是一個圍棋Agent,它通過自我對弈實現了重大突破。 同樣,在基於 LLM 的多Agent系統中,通過競爭、爭論和辯論,可以自然而然地促進Agent之間的變革。 通過放棄殭化的信念和進行深思熟慮的反省,對抗性互動可以提高回應的品質。 研究人員首先深入研究了LLM-based Agent的基本辯論能力。
研究結果表明,當多個Agent在 「針鋒相對」的狀態下表達自己的論點時,一個Agent可以從其他Agent那裡獲得大量外部反饋,從而糾正自己扭曲的想法。
因此,多Agent對抗系統在需要高品質回應和準確決策的場景中具有廣泛的適用性。 在推理任務中,Du 等人引入了辯論的概念,賦予Agent來自同伴的回應。 當這些回應與Agent自己的判斷出現分歧時,就會發生 「心理」爭論,從而完善解決方案。
- 然而,該系統基本上依賴於 LLM 的力量,並面臨著一些基本挑戰:
- 在長時間的辯論中,LLM 有限的語境無法處理整個輸入。
- 在多Agent環境中,計算開銷大大增加。
- 多Agent協商可能會收斂到不正確的共識,而所有Agent都堅信其準確性。 多Agent系統的發展還遠未成熟,也不可行。 在適當的時候引入人類嚮導來彌補Agent的不足,是促進Agent進一步發展的良好選擇。