LLM Agent 概述
LLM Agent 概述
當您遇到沒有簡單答案的問題時,您通常需要遵循幾個步驟,仔細思考並記住您已經嘗試過的內容。LLM 代理正是爲語言模型應用程序中的這些情況而設計的。它們結合了全面的數據分析、戰略規劃、數據檢索以及從過去的行動中學習以解決複雜問題的能力。
在本文中,我們將探討什麼是 LLM 代理、它們的好處、能力、實際示例以及他們面臨的挑戰。
什麼是 LLM Agent?
LLM Agent 是高級 AI 系統,旨在創建需要順序推理的複雜文本。他們可以提前思考,記住過去的對話,並使用不同的工具根據所需的情況和風格調整他們的回答。
現在,考慮一個詳細的場景:
根據新的數據隱私法,公司面臨的常見法律挑戰是什麼,法院如何解決這些問題?
這個問題比僅僅查找事實更深入。這是關於瞭解新規則,它們如何影響不同的公司,並瞭解法院對這一切的看法。一個簡單的 RAG 系統可以提取相關的法律和案例,但它缺乏將這些法律與實際業務情況聯繫起來或深入分析法院判決的能力。
在這種情況下,當項目需要順序推理、計劃和記憶時,LLM Agent 就會發揮作用。
對於這個問題,Agent 可以將其任務分解爲多個子任務,如下所示。
-
第一個子任務可能是訪問法律數據庫以檢索最新的法律法規。
-
其次,它可以建立以前處理類似問題的歷史基線。
-
另一個子任務可以是總結法律文檔並根據觀察到的模式預測未來趨勢。
要完成這些子任務,Agent 需要一個結構化的計劃 LLM、一個可靠的內存來跟蹤進度,以及訪問必要的工具。這些組件構成了 LLM Agent 工作流程的支柱。
LLM Agent 組件
LLM 代理通常由四個部分組成:
-
Agent/brain: 代理 / 大腦
-
Planning: 規劃
-
Memory: 記憶
-
Tool use: 工具使用
Agent/brain 代理 / 大腦
LLM Agent 的核心是大語言模型,它根據經過訓練的大量數據來處理和理解語言。
使用 LLM Agent 時,首先要爲其提供特定 Prompt。這個 Prompt 至關重要——它指導 LLM 如何響應、使用什麼工具以及在交互過程中應該實現的目標。這就像在旅行前給導航員指路一樣。
此外,您還可以使用特定角色自定義代理。這意味着爲代理設置某些特徵和專業知識,使其更適合特定任務或交互。這是關於調整代理以感覺適合情況的方式執行任務。比如歷史專家、法律專家、經濟專家等等。
從本質上講,LLM Agent 的核心是將高級處理能力與可自定義功能相結合,以有效處理和適應各種任務和交互。
Memory 記憶
Agent 的 LLM Memory 通過記錄以前完成的工作來幫助他們處理複雜的 LLM 任務。內存有兩種主要類型:
-
短期記憶: 這就像 agent’s 的記事本,它可以在對話中快速寫下重要細節。它跟蹤正在進行的討論,幫助模型對直接環境做出相關響應。然而,這種記憶是暫時的,一旦手頭的任務完成,就會清除。
-
長期記憶: 將其視爲 agent’s 的日記,存儲數週甚至數月過去互動的見解和信息。這不僅僅是關於保存數據; 它是關於理解模式、從以前的任務中學習並調用這些信息以在未來的交互中做出更好的決策。
通過混合這兩種類型的記憶,該模型可以跟上當前的對話,並利用豐富的交互歷史記錄。這意味着它可以提供更有針對性的響應,並隨着時間的推移記住用戶的偏好,使每次對話都感覺更加緊密和相關。從本質上講,代理正在建立一種理解,這有助於它在每次互動中更好地爲您服務。
Planning 規劃
通過規劃,LLM Agent 可以推理,將複雜的任務分解成更小、更易於管理的部分,併爲每個部分制定具體的計劃。隨着任務的發展,代理還可以反思和調整他們的計劃,確保他們與現實世界的情況保持相關性。這種適應性是成功完成任務的關鍵。
規劃通常包括兩個主要階段:計劃制定和計劃反思。
計劃制定階段,Agent 將大型任務分解爲較小的子任務,如下是幾種拆分的方法:
-
一些任務分解方法建議一次性創建一個詳細的計劃,然後逐步遵循它。
-
思維鏈 (CoT) 方法,推薦了一種更具適應性的策略,讓智能體逐個處理子任務,從而提供更大的靈活性。
-
思路 (ToT) 樹是另一種通過探索解決問題的不同途徑來進一步發展 CoT 技術的方法。它將問題分爲幾個步驟,在每個步驟中產生多個想法,並像樹上的樹枝一樣排列它們。
制定計劃後,代理審查和評估其有效性非常重要。LLM 基於智能體的智能體使用內部反饋機制,利用現有模型來改進其策略。他們還與人類互動,根據人類的反饋和偏好調整他們的計劃。代理還可以從他們的真實和虛擬環境中收集見解,使用結果和觀察來進一步完善他們的計劃。
在規劃中納入反饋的兩種有效方法是 ReAct[1] 和 Reflexion[2]。
Tools use 工具使用
這裏的工具是幫助 LLM Agent 與外部環境連接以執行某些任務的各種資源。這些任務可能包括從數據庫中提取信息、查詢、編碼以及代理運行所需的任何其他內容。LLM 當代理使用這些工具時,它會遵循特定的工作流程來執行任務、收集觀察結果或收集完成子任務和滿足用戶請求所需的信息。
以下是不同系統如何集成這些工具的一些示例:
-
MRKL[3](模塊化推理、知識和語言):該系統使用一系列專家模塊,從神經網絡到計算器或天氣 API 等簡單工具。main LLM 充當 router,根據任務將查詢定向到相應的 expert 模塊。
-
Toolformer[4] 和 TALM(工具增強語言模型):[5] 這些模型經過專門微調,可以有效地與外部 API 交互。例如,該模型可以經過訓練,使用金融 API 來分析股票市場趨勢或預測貨幣波動,從而直接向用戶提供實時金融洞察。
-
HuggingGPT:[6] 該框架使用 ChatGPT 來管理任務,方法是選擇 HuggingFace 平臺上可用的最佳模型來處理特定請求,然後總結結果。
-
API-Bank[7]:一項基準測試,用於測試 LLMs 使用 53 個常用 API 處理日程安排、健康數據管理或智能家居控制等任務的能力。
LLM 代理框架
讓我們看一下一些值得注意 LLM 的代理 [8] 和框架:
-
Langchain[9] - 用於開發 LLM-powered 應用程序的框架,可簡化 LLM 應用程序生命週期。
-
Llama Index[10]:一個數據框架,通過數據連接器和結構、高級檢索交互和集成功能簡化 LLM 應用程序的創建。
-
Haystack[11] - 一個端到端的 NLP 框架,使您能夠構建 NLP 應用程序。
-
Embedchain[12] - 爲您的數據集創建類似 ChatGPT 的機器人的框架。
-
MindSearch[13]:一種新的 AI 搜索引擎框架,其工作方式類似於 Perplexity.ai Pro[14]。您可以使用 GPT 和 Claude 等專有 LLMs 模型或 InternLM2.5-7b-chat[15] 等開源模型將其設置爲您自己的搜索引擎。它旨在瀏覽數百個網頁來回答任何問題,提供詳細的回答並展示它如何找到這些答案。
-
AgentQ[16]:幫助創建可以規劃、適應和自我糾正的自主 Web 代理。它使用直接偏好優化 (DPO)[17] 算法集成了引導式 Monte Carlo 樹搜索 (MCTS)、AI 自我批評和 RLHF[18]。
-
Nvidia NIM 代理藍圖 [19]:適用於需要構建和部署自定義 GenAI 應用程序的企業開發人員的代理。
-
Bee 代理框架 [20]:IBM 的一個開源框架,用於大規模構建、部署和服務大型代理工作流。IBM 對 Bee 的目標是使開發人員能夠採用最新的開源和專有模型,同時對當前代理實現進行最少的更改。
LLM 代理挑戰
雖然 LLM 代理非常有用,但它們確實面臨着我們需要考慮的幾個挑戰:
-
有限的上下文: LLM 代理一次只能跟蹤有限數量的信息。這意味着他們可能不記得談話中早些時候的重要細節或錯過了關鍵指示。儘管 vector stores(向量數據庫) 等技術通過提供對更多信息的訪問來提供幫助,但它們無法完全解決這個問題。
-
長期規劃的困難: LLM 代理人很難制定跨長期的計劃。當意外問題出現時,他們往往難以適應,與人類解決問題的方式相比,這可能會使他們不那麼靈活。
-
不一致的輸出: 由於 LLM 代理依靠自然語言與其他工具和數據庫交互,因此它們有時會產生不可靠的輸出。他們可能會犯格式錯誤或未正確遵循說明,這可能會導致他們執行的任務出錯。
-
適應特定角色: LLM 代理需要能夠根據手頭的任務處理不同的角色。然而,對他們進行微調以理解和執行不常見的角色或與不同的人類價值觀保持一致是一項複雜的挑戰。最新的 MOE 模型可能就比較好解決這個問題。
-
Prompt 依賴性: LLM agent 根據提示詞進行操作,但這些提示需要非常精確。即使是很小的更改也可能導致大錯誤,因此創建和優化這些提示可能是一個微妙的過程。這就會出現失之毫釐謬之千里的問題。
-
管理知識: 保持 LLM Agent 的知識準確和公正是很棘手的。他們必須擁有正確的信息才能做出明智的決定,但太多不相關的信息會導致他們得出錯誤的結論或根據過時的事實採取行動。
引用鏈接
[1]
ReAct:https://arxiv.org/abs/2210.03629
[2]
Reflexion:https://arxiv.org/abs/2303.11366
[3]
MRKL:https://arxiv.org/abs/2205.00445
[4]
Toolformer:https://arxiv.org/abs/2302.04761
[5]
TALM(工具增強語言模型)::https://arxiv.org/abs/2205.12255
[6]
HuggingGPT::https://arxiv.org/abs/2303.17580
[7]
API-Bank:https://arxiv.org/abs/2304.08244
[8]
值得注意 LLM 的代理:https://github.com/kaushikb11/awesome-llm-agents
[9]
Langchain:https://github.com/hwchase17/langchain
[10]
Llama Index:https://github.com/run-llama/llama_index
[11]
Haystack:https://github.com/deepset-ai/haystack
[12]
Embedchain:https://github.com/mem0ai/mem0/tree/main/embedchain
[13]
MindSearch:https://github.com/InternLM/MindSearch?tab=readme-ov-file#%EF%B8%8F-build-your-own-mindsearch
[14]
Perplexity.ai Pro:https://www.perplexity.ai/
[15]
InternLM2.5-7b-chat:https://huggingface.co/internlm/internlm2_5-7b-chat
[16]
AgentQ:https://medium.com/@ignacio.de.gregorio.noblejas/agentq-a-human-beating-ai-agent-85353bfd1c26
[17]
直接偏好優化 (DPO):https://www.superannotate.com/blog/direct-preference-optimization-dpo
[18]
RLHF:https://www.superannotate.com/blog/rlhf-for-llm
[19]
Nvidia NIM 代理藍圖:https://blogs.nvidia.com/blog/nim-agent-blueprints/
[20]
Bee 代理框架:https://github.com/i-am-bee/bee-agent-framework
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/OGEBL7iNhuyS0hZF1yvwwg