
API服務器與傳統服務器有什么不同?
在本文中,通過60多張定制可視化圖,你將探索LLM Agents領域、其主要組件以及多Agent框架。
要理解LLM Agents,讓我們首先探索LLM的基本能力。傳統上,LLM所做的僅僅是下一個token的預測。
通過連續采樣多個token,我們可以模擬對話,并使用LLM為我們的查詢提供更全面的答案。
然而,當我們繼續對話時,任何LLM都會展示其主要缺點之一:它不記得對話內容!
LLM在執行許多其他任務時也常常失敗,包括基本的數學運算,如乘法和除法:
這是否意味著LLM很垃圾?當然不是!LLM無需具備所有能力,因為我們可以通過外部工具、記憶和檢索系統來彌補其缺點。通過外部系統,LLM的能力可以得到增強。Anthropic稱之為增強型LLM。
例如,面對數學問題時,LLM可能會決定使用合適的工具(如計算器)。
那么這種 增強型LLM 是否就是Agent?不完全是,但也有一些相似之處…
讓我們從Agents的定義開始:
Agent是任何可以被視為通過傳感器感知其環境并通過執行器作用于該環境的事物。— Russell & Norvig,《人工智能:現代方法》(2016)
Agents與環境交互,通常由幾個重要組件組成:
這個框架適用于與各種環境交互的各類Agents,比如與物理環境交互的機器人或與軟件交互的AI Agents。我們可以稍微概括這個框架,使其更適合 增強型LLM。
使用 增強型LLM,Agent可以通過文本輸入觀察環境(因為LLM通常是文本模型),并通過使用工具(如網絡搜索)執行特定操作。為了選擇要采取的行動,LLM Agent有一個重要組件:規劃能力。為此,LLM需要能夠通過思維鏈等方法進行"推理"和"思考"。
利用這種推理行為,LLM Agents將規劃出需要采取的必要行動。
這種規劃行為使Agent能夠理解背景(LLM)、規劃下一步(規劃)、采取行動(工具)并跟蹤已采取的行動(記憶)。
根據系統的不同,你可以使用具有不同自主程度的LLM Agents。
根據不同人的觀點,一個系統越是由LLM決定其行為方式,就越具有"自主性"。
在接下來的部分,我們將通過LLM Agent的三個主要組成部分——記憶、工具和規劃——探討各種自主行為方法。
LLM是健忘的系統,或更準確地說,在與它們交互時根本不執行任何記憶行為。例如,當你向LLM提出一個問題,然后跟進另一個問題時,它不會記得前一個問題。
我們通常將此稱為短期記憶,也稱為工作記憶,它作為(接近)即時上下文的緩沖區。這包括LLM Agent最近采取的行動。然而,LLM Agent還需要跟蹤可能數十個步驟,而不僅僅是最近的行動。
這被稱為長期記憶,因為LLM Agent理論上可能需要記住數十甚至數百個步驟。
讓我們探索幾種為這些模型提供記憶的技巧。
使短期記憶成為可能的最直接方法是使用模型的上下文窗口,這本質上是LLM可以處理的token數量。
上下文窗口通常至少有8192個token,有時可以擴展到數十萬個token!大的上下文窗口可用于將完整的對話歷史作為輸入提示的一部分進行跟蹤。
只要對話歷史適合LLM的上下文窗口,這種方法就可行,是模擬記憶的好方法。然而,與其真正記憶對話,我們實際上是在告訴LLM這個對話是什么。
對于上下文窗口較小的模型,或當對話歷史較大時,我們可以使用另一個LLM來總結迄今為止發生的對話。
通過持續總結對話,我們可以保持會話體積小。這將減少token數量,同時只跟蹤最重要的信息。
LLM Agents的長期記憶包括需要長期保留的Agent過去的行動空間。實現長期記憶的常見技術是將所有先前的交互、行動和對話存儲在外部向量數據庫中。要構建這樣的數據庫,首先需要將對話嵌入到捕捉其含義的數值表示中。
建立數據庫后,我們可以嵌入任何給定的提示,并通過比較提示嵌入與數據庫嵌入來找到向量數據庫中最相關的信息。
這種方法通常被稱為檢索增強生成(RAG)。長期記憶還可以涉及保留不同會話的信息。例如,你可能希望LLM Agent記住它在以前會話中所做的任何研究。不同類型的信息也可以與不同類型的記憶相關聯。在心理學中,有許多類型的記憶需要區分,但《語言Agents認知架構》論文將其中四種與LLM Agents聯系起來。
這種區分有助于構建主體框架。語義記憶(關于世界的事實)可能存儲在與工作記憶(當前和最近情況)不同的數據庫中。
工具允許LLM與外部環境(如數據庫)交互或使用外部應用程序(如自定義代碼運行)。
工具通常有兩種用途:獲取數據以檢索最新信息和采取行動,如安排會議或訂購食物。要實際使用工具,LLM必須生成與該工具API匹配的文本。我們傾向于期望可以格式化為JSON的字符串,以便輕松提供給代碼解釋器。
請注意,這不限于JSON,我們也可以在代碼本身中調用工具!你還可以生成LLM可以使用的自定義函數,如基本乘法函數。這通常被稱為函數調用。
如果提示正確且全面,某些LLM可以使用任何工具。工具使用是大多數當前LLM都具備的能力。
訪問工具的更穩定方法是對LLM進行微調(稍后會詳細介紹!)。如果主體框架是固定的,工具可以按特定順序使用…
…或者LLM可以自主選擇使用哪種工具以及何時使用。LLM Agents本質上是修改LLM的生成序列(讓LLM自主選擇行動/工具,將結果在回饋到生成序列中)。
換句話說,中間步驟的輸出被反饋到LLM中以繼續處理。
工具使用是增強LLM能力并彌補其缺點的強大技術。因此,近幾年關于工具使用和學習的研究迅速增加。
隨著對工具使用的關注增加,LLM預計將變得更加強大。這些研究不僅涉及指令要求LLM使用工具,還包括專門訓練它們使用工具。最早采用這種技術的是Toolformer,一種訓練用于決定調用哪些API以及如何調用的模型。它使用
[
和
]
標記來指示調用工具的開始和結束。當給定提示,例如"5乘以3等于多少?",它開始生成標記,直到達到
[
標記。
之后,它生成標記直到達到
→
標記,表示LLM停止生成標記。
然后,工具被調用,輸出會被添加到迄今為止生成的標記中。
]
符號表示LLM現在可以繼續生成標記(如有必要)。Toolformer通過仔細生成包含許多工具用例的數據集來創建這種行為,模型可以在這些數據集上進行訓練。對于每個工具,手動創建少樣本提示并用于采樣使用這些工具的輸出。
輸出基于工具使用的正確性、輸出和損失減少進行過濾。由此產生的數據集用于訓練LLM遵循這種工具使用格式。自Toolformer發布以來,出現了許多令人興奮的技術,如可以使用數千種工具的LLM(ToolLLM)或可以輕松檢索最相關工具的LLM(Gorilla)。無論如何,大多數當前LLM(2025年初)都已經過訓練,可以通過JSON生成輕松調用工具(如我們之前所見)。
工具是主體框架的重要組成部分,允許LLM與世界交互并擴展其能力。然而,當你有許多不同的API時,啟用工具使用變得麻煩,因為任何工具都需要:
為了使工具更容易在任何給定的主體框架中實現,Anthropic開發了模型上下文協議(MCP)。MCP標準化了對天氣應用和GitHub等服務的API訪問。它由三個組件組成:
例如,假設你希望LLM應用程序總結你倉庫的最新5次提交。MCP主機(與客戶端一起)首先調用MCP服務器詢問有哪些工具可用。
LLM接收信息并可能選擇使用工具。它通過主機向MCP服務器發送請求,然后接收結果,包括使用的工具。
最后,LLM接收結果并可以解析給用戶的答案。
這個框架通過連接到任何LLM應用程序都可以使用的MCP服務器,使創建工具變得更容易。因此,當你創建一個與GitHub交互的MCP服務器時,任何支持MCP的LLM應用程序都可以使用它。
工具使用允許LLM增強其能力。它們通常使用類似JSON的請求進行調用。但在主體系統中,LLM如何決定使用哪種工具以及何時使用?這就是規劃發揮作用的地方。LLM Agents中的規劃涉及將給定任務分解為可執行的步驟。
這個計劃使模型能夠迭代反思過去的行為并在必要時更新當前計劃。
要在LLM Agents中啟用規劃,讓我們首先看看這種技術的基礎,即推理。
規劃可執行步驟需要復雜的推理行為。因此,LLM必須能夠展示這種行為,然后才能規劃任務的下一步。"推理型"LLM傾向于在回答問題前"思考"。
這里使用"推理"和"思考"這些術語有些寬泛,因為我們可以爭論這是否是類似人類的思考,還是僅僅將答案分解為結構化步驟。
這種推理行為大致可以通過兩種選擇啟用:對LLM進行微調或特定的提示工程。
通過提示工程,我們可以創建LLM應遵循的推理過程示例。提供示例(也稱為少樣本提示)是引導LLM行為的絕佳方法。
這種提供思維過程示例的方法被稱為思維鏈,它能夠實現更復雜的推理行為。思維鏈也可以在沒有任何示例(零樣本提示)的情況下啟用,只需簡單陳述"讓我們一步一步思考"。
在訓練LLM時,我們可以給它提供足夠數量的包含類似思考例子的數據集,或者LLM可以發現自己的思考過程。一個很好的例子是DeepSeek-R1,它使用獎勵來引導思考過程的使用。
在LLM中啟用推理行為很好,但不一定使其能夠規劃可執行步驟。我們迄今為止關注的技術要么展示推理行為,要么通過工具與環境交互。
例如,思維鏈僅專注于推理。結合這兩個過程的首批技術之一被稱為ReAct(推理和行動)。
ReAct通過精心設計的提示詞工程來實現這一點。ReAct提示描述了三個步驟:
提示本身相當直接。
LLM使用這個提示(可作為系統提示使用)來引導其行為,使其在思考、行動和觀察的循環中工作。
它會繼續這種行為,直到某個行動指定返回結果。通過對思考和觀察的迭代,LLM可以規劃行動、觀察其輸出并相應調整。因此,與具有預定義固定步驟的Agents相比,這個框架使LLM能夠展示更多自主的主體行為。
沒有人(甚至使用ReAct的LLM)能完美執行每項任務。只要你能對過程進行反思,失敗就是過程的一部分。這個過程在ReAct中缺失,而Reflexion正是解決這一問題的技術。Reflexion是一種使用語言強化幫助agents從先前失敗中學習的技術。該方法假設三種LLM角色:
添加記憶模塊來跟蹤行動(短期)和自我反思(長期),幫助Agent從錯誤中學習并確定改進的行動。
一種類似而優雅的技術是SELF-REFINE,其中重復進行細化輸出和生成反饋的行動。
同一個LLM負責生成初始輸出、細化輸出和反饋。
有趣的是,這種自我反思行為(Reflexion和SELF-REFINE)與強化學習非常相似,后者根據輸出質量給予獎勵。
我們探討的單Agent存在幾個問題:工具過多可能使選擇復雜化,上下文變得過于復雜,任務可能需要專業化。相反,我們可以轉向多Agent框架,其中多個agents(每個都有訪問工具、記憶和規劃的能力)相互交互并與其環境交互:
這些多Agent系統通常由專業Agents組成,每個都配備自己的工具集,并由監督者監督。監督者管理Agents之間的通信,并可以將特定任務分配給專門的Agents。
每個Agent可能有不同類型的可用工具,但也可能有不同的記憶系統。實際上,有數十種多Agent架構,其核心包含兩個組件:
讓我們探索各種有趣的多Agent框架,并強調這些組件是如何實現的。
可以說最有影響力,也是非常酷的多Agent論文之一是"生成式Agents:人類行為的交互模擬"。在這篇論文中,他們創建了模擬可信人類行為的計算軟件agents,稱為生成式Agents。
給每個生成式Agent的檔案使它們以獨特的方式行動,并幫助創建更有趣、更動態的行為。每個Agent初始化時都有三個模塊(記憶、規劃和反思),這與我們之前在ReAct和Reflexion中看到的核心組件非常相似。
記憶模塊是這個框架中最重要的組件之一。它存儲規劃和反思行為,以及迄今為止的所有事件。對于任何給定的下一步或問題,系統會檢索記憶并根據其近期性、重要性和相關性進行評分。得分最高的記憶將與Agent共享。
這些組件共同允許Agents自由地進行活動并相互交互。因此,幾乎沒有Agent編排,因為它們沒有要完成的特定目標。
交互式演示的注釋圖片。這篇論文中有太多令人驚嘆的信息片段,但我想強調他們的評估指標。他們的評估以Agent行為的可信度為主要指標,由人類評估者進行評分。
它展示了觀察、規劃和反思在這些生成式Agents性能中共同作用的重要性。如前所述,沒有反思行為,規劃是不完整的。
無論你選擇什么框架來創建多Agent系統,它們通常由幾個組成部分組成,包括其檔案、環境感知、記憶、規劃和可用行動。
實現這些組件的流行框架有AutoGen、MetaGPT和CAMEL。然而,每個框架處理各Agent之間通信的方式略有不同。例如,使用CAMEL時,用戶首先創建問題并定義AI用戶和AI助手角色。AI用戶角色代表人類用戶并將引導整個過程。
之后,AI用戶和AI助手將通過相互交互來協作解決查詢。
這種角色扮演方法實現了agents之間的協作通信。AutoGen和MetaGPT有不同的通信方法,但都歸結為這種協作性質的通信。Agents有機會互相交流,更新當前狀態、目標和下一步。在過去一年,特別是最近幾周,這些框架的發展呈爆炸式增長。
隨著這些框架不斷成熟和發展,2025年將成為一個真正令人興奮的年份!
以上就是LLM Agents的探索之旅!希望這篇文章能讓你更好地理解LLM Agents的構建方式。好了,這就是我今天想分享的內容。如果你對構建AI智能體感興趣,別忘了點贊、關注噢~
原文轉載自:https://mp.weixin.qq.com/s/y-JyvYaI3IQKE1ZM4RhiqA