60張圖深度剖析LLM Agents,逼近通用人工智能
LLM 代理正變得越來越普遍,似乎取代了我們熟悉的“常規”對話式 LLM。這些令人難以置信的功能并不容易創建,需要許多組件協同工作。
本文中提供了 60 多個自定義視覺對象,您將探索 LLM 代理領域、它們的主要組件,并探索多代理框架。
什么是LLM代理
要了解什么是 LLM 代理,讓我們首先探索 LLM 的基本功能。
傳統上,LLM 只做下一個標記預測。
通過連續對許多 tokens 進行采樣,我們可以模擬對話并使用 LLM 為我們的查詢提供更廣泛的答案。
然而,當我們繼續 “對話” 時,任何給定的 LLM 都會展示其主要缺點之一,它不記得對話!
LLM 經常無法完成許多其他任務,包括乘法和除法等基本數學:
這是否意味著 LLM 很糟糕?絕對不是!LLM 不需要無所不能,因為我們可以通過外部工具、內存和檢索系統來彌補它們的缺點。
通過外部系統,可以增強 LLM 的功能。
Anthropic 稱之為“增強的 LLM”。
例如,當面臨數學問題時,LLM 可能會決定使用適當的工具(計算器)。
那么這個“Augmented LLM”是 Agent 嗎?
讓我們從 Agent 的定義開始:
代理:是可以被視為通過傳感器感知其環境并通過執行器作用于該環境的任何東西。
代理與其環境交互,通常由幾個重要組件組成:
- 環境— 代理與之交互的世界
- 傳感器— 用于觀察環境
- 執行器— 用于與環境交互的工具
- 效應器— 決定如何從觀察到行動的“大腦”或規則
此框架用于與各種環境交互的各種代理,例如機器人與其物理環境交互或與軟件交互的 AI 代理。
我們可以稍微概括一下這個框架,使其適合 “Augmented LLM”。
使用“增強”LLM,代理可以通過文本輸入觀察環境(因為 LLM 通常是文本模型),并通過使用工具執行某些操作(如搜索 Web)。
選擇要采取的行動,LLM Agent 有一個至關重要的組成部分:它的計劃能力。
為此,LLM 需要能夠通過思維鏈等方法進行 “推理” 和 “思考”。
使用這種推理行為,LLM 代理將規劃要采取的必要行動。
這種規劃行為使 Agent 能夠了解情況 (LLM)、計劃下一步 (planning)、采取行動 (工具) 并跟蹤所采取的行動 (memory)。
根據系統的不同,您可以以不同程度的自主權來設置 LLM 代理。
根據你問的人,一個系統越是“代理”的,那么 LLM 就越能決定它的行為方式。
在接下來的部分中,我們將通過 LLM Agent 的三個主要組件(內存、工具和規劃)介紹各種自主行為方法。
記憶
LLM 是健忘系統,或者更準確地說,在與它們交互時根本不執行任何記憶。
例如,當你向 LLM 提出一個問題,然后又提出另一個問題時,它不會記住前者。
我們通常將其稱為短期記憶,也稱為工作記憶,它充當(近)即時上下文的緩沖區。這包括 LLM 代理最近采取的行動。
但是,LLM 代理還需要跟蹤潛在的數十個步驟,而不僅僅是最近的操作。
這被稱為長期記憶,因為 LLM 代理理論上可能需要數十甚至數百個需要記住的步驟。
讓我們探討幾個為這些模型提供內存的技巧。
短期記憶
啟用短期記憶最直接的方法是使用模型的上下文窗口,它本質上是 LLM 可以處理的標記數量。
上下文窗口往往至少有 8192 個令牌,有時可以擴展到數十萬個令牌!
大型上下文窗口可用于跟蹤完整的對話歷史記錄,作為輸入提示的一部分。
只要對話歷史記錄適合 LLM 的上下文窗口,這就可以工作,并且是模仿記憶的好方法。然而,我們實際上不是真正記住一段對話,而是 “告訴” LLM 那段對話是什么。
對于上下文窗口較小的模型,或者當對話歷史很大時,我們可以改用另一個 LLM 來總結到目前為止發生的對話。
通過不斷總結對話,我們可以保持較小的對話規模。它將減少代幣的數量,同時只跟蹤最重要的信息。
長期記憶
LLM 代理中的長期記憶包括代理過去的操作空間,該空間需要長時間保留。
啟用長期記憶的一種常見技術是將之前的所有交互、動作和對話存儲在外部向量數據庫中。
為了構建這樣的數據庫,對話首先被嵌入到捕捉其含義的數字表示中。
構建數據庫后,我們可以嵌入任何給定的提示,并通過比較提示嵌入與數據庫嵌入在向量數據庫中找到最相關的信息。
這種方法通常被稱為檢索增強生成 (RAG)。
長期記憶還可能涉及保留來自不同會話的信息。例如,您可能希望 LLM 代理記住它在之前的會話中所做的任何研究。
不同類型的信息也可能與要存儲的不同類型的內存相關。 在心理學中,有許多類型的記憶需要區分,在??Cognitive Architectures for Language Agents?
?論文將其中四種與 LLM 代理聯系起來。
這種差異化有助于構建代理框架。 ??語義內存?
??(關于世界的事實)可能存儲在與??工作內存?
?(當前和最近的情況)不同的數據庫中。
工具
工具允許給定的 LLM 與外部環境(例如數據庫)交互或使用外部應用程序(例如運行自定義代碼)。
工具通常有兩個用例:獲取數據以檢索最新信息,以及采取行動(例如安排會議或訂購食物)。
要實際使用工具,LLM 必須生成適合給定工具的 API 的文本。我們傾向于期望字符串可以格式化為 JSON,以便可以輕松地將其提供給代碼解釋器。
請注意,這不僅限于 JSON,我們也可以在代碼本身中調用該工具!
您還可以生成 LLM 可以使用的自定義函數,例如基本的乘法函數。這通常稱為函數調用。
如果正確且廣泛地提示,某些 LLM 可以使用任何工具。工具使用是大多數當前 LLM 都能夠做到的。
訪問工具的更穩定方法是微調 LLM (稍后會詳細介紹!)
如果代理框架是固定的,則可以按給定的順序使用工具或者 LLM 可以自主選擇使用哪個工具以及何時使用。
如上圖所示,LLM 代理本質上是 LLM 調用的序列。
換句話說,中間步驟的輸出將反饋到 LLM 中以繼續處理。
工具成型機
工具使用是增強 LLM 功能并彌補其缺點的強大技術。因此,關于工具使用和學習的研究工作在過去幾年中迅速激增。
這些研究的大部分內容不僅涉及提示 LLM 使用工具,還涉及專門訓練他們使用工具。
最早執行此操作的技術之一稱為 Toolformer,這是一個經過訓練的模型,用于決定調用哪些 API 以及如何調用。
它通過使用and 標記來指示調用工具的開始和結束。當給出提示時,例如“_什么是 5 乘以 3?_“,它會開始生成 Token,直到到達 Token。
之后,它會生成 Token,直到到達 Token,這表明 LLM 停止生成 Token。 ??→?
?
然后,將調用該工具,并將輸出添加到到目前為止生成的令牌中。
該符號表示 LLM 現在可以在必要時繼續生成。
Toolformer 通過仔細生成一個數據集來創建此行為,該數據集包含模型可以訓練的許多工具用途。對于每個工具,都會手動創建一個 few-shot 提示,并用于對使用這些工具的輸出進行采樣。
根據工具使用、輸出和損失減少的正確性對輸出進行過濾。生成的數據集用于訓練 LLM 以遵守這種工具使用格式。
自 Toolformer 發布以來,出現了許多令人興奮的技術,例如可以使用數千種工具的 LLM(ToolLLM) 或可以輕松檢索最相關工具的 LLM (Gorilla)。
無論哪種方式,大多數當前的 LLM(2025 年初)都已經過訓練,可以通過 JSON 生成輕松調用工具(正如我們之前看到的那樣)。
模型上下文協議 (MCP)
工具是 Agentic 框架的重要組成部分,它允許 LLM 與世界交互并擴展其功能。但是,當您擁有許多不同的 API 時,啟用工具使用會變得很麻煩,因為任何工具都需要:
- 手動跟蹤并饋送到 LLM
- 手動描述(包括其預期的 JSON 架構)
- 每當其 API 發生變化時手動更新
為了使工具更容易為任何給定的 Agentic 框架實現,Anthropic 開發了模型上下文協議 (MCP)。 MCP 對天氣應用程序和 GitHub 等服務的 API 訪問進行了標準化。
它由三個部分組成:
- MCP主機— 管理連接的 LLM 應用程序(如 Cursor)
- MCP客戶端— 與 MCP 服務器保持 1 對 1 連接
- MCP服務器— 為 LLM 提供上下文、工具和功能
例如,假設您希望給定的 LLM 應用程序匯總存儲庫中的 5 個最新提交。
MCP 主機(連同客戶端)將首先調用 MCP 服務器以詢問哪些工具可用。
LLM 收到信息,并可能選擇使用工具。它通過 Host 向 MCP 服務器發送請求,然后接收結果,包括使用的工具。
最后,LLM 接收結果并可以解析用戶的答案。
此框架通過連接到任何 LLM 應用程序都可以使用的 MCP 服務器,使創建工具變得更加容易。因此,當您創建 MCP 服務器以與 Github 交互時,任何支持 MCP 的 LLM 應用程序都可以使用它。
規劃
使用工具可以讓 LLM 增加其功能。它們通常使用類似 JSON 的請求進行調用。
但是,在代理系統中,LLM 如何決定使用哪種工具以及何時使用?
這就是規劃的用武之地。LLM 代理中的規劃涉及將給定的任務分解為可操作的步驟。
此計劃允許模型迭代地反映過去的行為,并在必要時更新當前計劃。
我喜歡計劃制定時!
為了在 LLM 代理中啟用規劃,讓我們首先看一下這項技術的基礎,即推理。
推理
規劃可操作的步驟需要復雜的推理行為。因此,LLM 必須能夠在采取下一步規劃任務之前展示這種行為。
“推理”LLM 是那些傾向于在回答問題之前 “思考” 的 LLM。
我使用“推理”和“思考”這兩個術語有點松散,因為我們可以爭論這是類似人類的思維,還是僅僅將答案分解為結構化的步驟。
這種推理行為可以通過大約兩種選擇來實現:微調 LLM 或特定的提示工程。
通過快速工程,我們可以創建 LLM 應該遵循的推理過程的示例。提供示例(也稱為 few-shot prompting)) 是控制 LLM 行為的好方法。
這種提供思維過程示例的方法稱為 Chain-of-Thought ,可以實現更復雜的推理行為。
也可以在沒有任何示例(零鏡頭提示)的情況下啟用思路鏈,只需說 “Let's think step-by-step” 即可。
在訓練 LLM 時,我們可以給它足夠數量的數據集,其中包括類似思想的例子,或者 LLM 可以發現自己的思維過程。
一個很好的例子是 DeepSeek-R1,其中獎勵用于指導思維過程的使用。
推理和行動
在 LLM 中啟用推理行為很好,但不一定能夠規劃可行的步驟。
到目前為止,我們關注的技術要么展示推理行為,要么通過工具與環境交互。
例如,Chain-of-Thought 純粹專注于推理。
將這兩個過程結合起來的首批技術之一稱為 ReAct(理性和行為)。
ReAct 通過仔細的提示工程來實現這一點。ReAct 提示描述了三個步驟:
- 思考- 關于當前情況的推理步驟
- Action (操作) - 要執行的一組操作 (例如,工具)
- 觀察- 關于作結果的推理步驟
提示本身非常簡單。
LLM 使用此提示(可用作系統提示)來引導其行為在思想、行動和觀察的循環中工作。
它會繼續此行為,直到操作指定返回結果。通過迭代想法和觀察結果,LLM 可以規劃行動,觀察其輸出,并進行相應的調整。
因此,與具有預定義和固定步驟的代理相比,此框架使 LLM 能夠展示更多自主的代理行為。
反思
沒有人,即使是擁有 ReAct 的 LLM,也能完美地完成每項任務。失敗是過程的一部分,只要你能反思這個過程。
ReAct 中沒有這個過程,這就是 Reflexion 的用武之地。Reflexion 是一種使用語言強化來幫助代理從以前的失敗中學習的技術。
該方法承擔三個 LLM 角色:
- Actor (作者) – 根據狀態觀察選擇和執行操作。我們可以使用 Chain-of-Thought 或 ReAct 等方法。
- Evaluator (計算器)– 對 Actor 生成的輸出進行評分。
- Self-reflection (自我反思) - 反映 Actor 采取的行動和 Evaluator 生成的分數。
添加了內存模塊以跟蹤操作 (短期) 和自我反思 (長期),幫助代理從錯誤中學習并確定改進的操作。
一種類似且優雅的技術稱為 SELF-REFINE,其中重復優化輸出和生成反饋的操作。
同一個 LLM 負責生成初始輸出、優化輸出和反饋。
有趣的是,這種自我反思的行為,包括 Reflexion 和 SELF-REFINE,與強化學習非常相似,在強化學習中,根據輸出的質量給予獎勵。
多代理協作
我們探索的單個代理有幾個問題:太多的工具可能會使選擇復雜化,上下文變得太復雜,并且任務可能需要專業化。
相反,我們可以看看 Multi-Agent,即多個 Agent(每個 Agent都可以訪問工具、內存和規劃)相互交互及其環境的框架:
這些多代理系統通常由專門的代理組成,每個代理都配備了自己的工具集,并由主管監督。主管管理 Agent 之間的通信,并可以將特定任務分配給專門的 Agent。
每個 Agent 可能具有不同類型的可用工具,但也可能有不同的內存系統。
在實踐中,有數十種 Multi-Agent 架構,其核心有兩個組件:
- Agent初始化— 如何創建單個(專用)Agent ?
- AgentOrchestration— 如何協調所有 Agent ?
讓我們探索各種有趣的 Multi-Agent 框架,并重點介紹這些組件是如何實現的。
人類行為的交互式模擬
可以說,最具影響力的,坦率地說,非??岬亩啻碚撐闹槐环Q為??生成代理:人類行為的交互式模擬?
?
在本文中,他們創建了模擬可信的人類行為的計算軟件代理,他們稱之為 Generative Agents。
為每個生成代理提供的配置文件使它們以獨特的方式運行,并有助于創建更有趣和動態的行為。
每個代理都使用三個模塊(內存、規劃和反射)進行初始化,這與我們之前看到的 ReAct 和 Reflexion 的核心組件非常相似。
內存模塊是此框架中最重要的組件之一。它存儲 Planning 和 Reflection 行為,以及到目前為止的所有事件。
對于任何給定的下一步或問題,都會檢索記憶并根據其新近度、重要性和相關性進行評分。得分最高的記憶將與 Agent 共享。
它們共同允許 Agent 自由地進行他們的行為并相互交互。因此,代理編排非常少,因為它們沒有特定的目標要努力。
交互式演示中的帶注釋圖像。
本文中有太多令人驚嘆的信息片段,但我想強調他們的評估指標。
他們的評估涉及將代理行為的可信度作為主要指標,由人工評估員對其進行評分。
它展示了觀察、規劃和反思在這些生成代理的性能中是多么重要。如前所述,沒有反思行為的規劃是不完整的。
模塊化框架
無論您選擇什么框架來創建多代理系統,它們通常由幾個要素組成,包括其配置文件、對環境的感知、內存、規劃和可用操作。
用于實現這些組件的常用框架是 AutoGen和 CAMEL。但是,每個框架處理每個 Agent 之間的通信方式略有不同。
例如,使用 CAMEL 時,用戶首先創建問題并定義 AI 用戶和 AI 助手角色。AI 用戶角色代表人類用戶,將指導該過程。
之后,AI 用戶和 AI Assistant 將通過相互交互來協作解決查詢。
這種角色扮演方法支持代理之間的協作通信。
AutoGen 和 MetaGPT 有不同的溝通方式,但這一切都歸結為這種溝通的協作性質。代理有機會相互交流和交談,以更新他們的當前狀態、目標和后續步驟。
翻譯自:A Visual Guide to LLM Agents Exploring the main components of Single- and Multi-Agents
本文轉載自??CourseAI??,作者:CourseAI
