在人工智能大模型(AI)的浪潮中,2023年我們見證了檢索增強生成(Retrieval Augmented Generation, RAG)的興起,而2024年則無疑成為了“代理”agent的元年。各大AI企業紛紛投身于聊天機器人代理的研發中,工具如MultiOn通過與外部網站的連接實現了快速增長,而框架如LangGraph和LlamaIndex Workflows則助力全球開發者構建結構化的代理應用。然而,盡管代理在AI生態系統中備受矚目,它們卻仍未能在消費者或企業用戶實際業務場景中掀起波瀾。今天我們一起來探索一下新一代的大模型代理及其架構。
大模型代理(llm agent)的基礎概念
首先,讓我們明確什么是大模型代理(llm agent)。基于LLM的代理是軟件系統,它們通過串聯多個處理步驟,包括LLM調用,api調用,方法調用等等以實現期望的最終結果。這些大模型代理通常包含一定量的條件邏輯或決策能力,以及在執行步驟間可訪問的工作內存。了解代理的構建方式、當前面臨的問題及初步解決方案,對于我們導航新框架和代理發展方向至關重要。
ReAct代理的失敗與反思
回顧過去,代理的概念并非新鮮事物。去年,AI領域的社交媒體上涌現了大量聲稱具備驚人智能能力的ReAct(reason, act)代理。然而,這些第一代代理大多以高度的抽象化設計著稱,盡管承諾廣泛的結果,但實際上卻難以使用且效果有限。
ReAct代理的失敗促使人們開始重新思考代理的結構。過去一年中,我們見證了巨大的進步,引領我們進入第二代代理的時代。新一代代理以更嚴格的方式定義了代理可能采取的路徑,從而避免了ReAct代理開放式設計的缺陷。這種趨勢趨向于縮小解空間,即每個代理能夠執行的任務范圍,雖然限制了多樣性,但通常能打造出更強大、更易定義的代理。
第二代大模型代理(llm agent)的核心特征
第二代代理在多個方面展現出顯著的特征。首先,它們往往采用LLM路由,并在迭代循環中處理數據。許多代理包含一個名為“路由器(router)”的節點或組件,負責決定下一步應該采取的行動。router可能是由LLM或分類器等驅動的,它們根據輸入信息選擇執行路徑。
每個行動通常由一個組件表示,這些組件是完成特定小任務的代碼塊,可能調用LLM、執行內部API調用或運行應用程序代碼。在LangGraph中,這些組件被稱為節點;而在LlamaIndex Workflows中,它們則被稱為步驟。一旦組件完成其工作,它可能返回路由器或移動到其他決策組件。
無論大模型代理是否使用框架,我們都看到了解決方案空間越來越小的趨勢——也就是說每個代理可以做的事情越來越少。解決方案空間越小,代理就越容易定義,這通常會使代理更強大。
大模型代理的架構模式
代理的部署通常遵循一些常見的架構模式。最簡單的形式可能僅包括一個LLM路由器和一個工具調用,我們稱之為“單一路由器與功能”架構。在這種架構中,路由器根據系統輸入決定調用哪個工具或功能。
稍微復雜的架構則是“單一路由器與功能集”,其中路由器調用的不再是簡單的工具或函數調用,而是更復雜的工作流程或功能集,這些可能包含多個組件和深度鏈接的動作鏈。
更高級的架構則將LLM調用與工具和狀態混合,形成復雜的分支結構。路由器根據用戶問題調用不同的功能,每個功能可能更新共享狀態,并可能涉及一個或多個LLM調用來生成用戶響應。
為了應對代理的復雜性,出現了如LangGraph和LlamaIndex Workflows等框架,它們旨在通過提供結構化的方式來簡化代理開發。LangGraph基于Pregel圖的概念,定義了節點和邊,使代理能夠沿其移動。而在LlamaIndex Workflows中,則使用事件和事件監聽器來在不同節點間移動。
大模型代理的一些思考
是否應使用框架開發大模型代理
在決定是否使用大模型代理框架來開發代理時,我們需要權衡其提供的額外結構與復雜性之間的平衡。對于大型、復雜的大模型代理應用,大模型代理框架提供的結構和最佳實踐可以大大降低開發難度。然而,對于高度定制化或特定需求的代理,直接使用代碼可能更為靈活。
以我們一個項目為例,我們在開發自己的代理時采用了多層路由器架構,雖然我們沒有直接使用LangGraph等框架,但我們的設計在一定程度上借鑒了它們的抽象概念。我們發現,對于當前的項目需求而言,直接使用代碼比依賴框架更為高效。然而,我們也認識到隨著框架的不斷完善,未來可能會考慮采用這些框架來加速開發進程。
你真的需要大模型代理嗎?
在決定構建大模型代理之前,我們首先需要明確代理的適用場景。如果你的應用遵循基于輸入數據的迭代流程,需要根據先前的行動或反饋進行調整,或者存在一個可遍歷的狀態空間,那么代理可能是一個很好的選擇。
然而,代理并非萬能的解決方案。它們在復雜任務分解、長期規劃和性能一致性方面仍面臨挑戰。為了克服這些挑戰,我們需要采用一系列策略,如縮小解空間、引入領域和業務啟發式、明確行動意圖和創建可重復的過程等等,真是落地還需要很多實際業務場景的探索
使用大模型代理常見問題及可能的解決方案
問題:
1.長期規劃難題:Agent在分解復雜任務和避免陷入循環方面存在困難,常需人類干預。
2.不一致的性能:由于解決空間的龐大,Agent難以實現一致結果,且成本高昂。市場傾向于使用受限Agent以限制解決空間。
可能的應對策略:
1、縮小解決空間:通過預先定義可能的行動和結果范圍來減少不確定性。2、引入業務邏輯:將領域和業務啟發式融入Agent的決策系統中,提升決策質量。
3、明確行動意圖和標準化流程:清晰定義每個行動的目的,標準化執行步驟,增強可靠性和可糾錯性。
4、代碼化編排:使用代碼替代LLM進行編排,提高過程的確定性和可控性。