![]()
谷歌在2024年底發布了《智能體》(Agents)白皮書,表明未來人工智能將在商業中扮演更積極和獨立的角色,并詳細闡述了智能體的概念、架構、運作方式以及相關技術,為智能體的開發和應用提供了理論框架和實踐指導。
一、AI Agent的核心架構:超越單一模型的智能系統
生成式人工智能(Generative AI)中的智能體可以被定義為一種應用程序,它通過觀察世界并利用其可用的工具來實現目標。智能體具有自主性,能夠在沒有人類干預的情況下獨立運行,尤其是在被賦予明確的目標或任務時,它們能夠表現出色。智能體還可以主動地朝著目標前進,即使在沒有明確指令的情況下,它們也能夠推理出下一步應該做什么來實現最終目標。雖然人工智能中的智能體概念是相當廣泛且強大的,但本文主要關注生成式人工智能模型能夠構建的特定類型的智能體。
二、AI Agent工具生態:構建智能體的“瑞士軍刀”
盡管語言模型在信息處理方面表現出色,但它們缺乏直接感知和影響現實世界的能力。這限制了它們在需要與外部系統或數據交互的情況下的實用性。換言之,語言模型的能力僅限于其訓練數據所涵蓋的內容,無論我們向模型提供多少數據,它們仍然缺乏與外部世界直接交互的基本能力。那么,我們如何賦予模型與外部系統進行實時、情境感知交互的能力呢?函數、擴展、數據存儲和插件都是為模型提供這種關鍵能力的方式。雖然這些工具的名稱各異,但它們的作用是相同的:創建基礎模型與外部世界的連接。這種與外部系統和數據的連接使智能體能夠執行更廣泛的任務,并且能夠以更高的準確性和可靠性完成這些任務。例如,工具可以允許智能體調整智能家居設置、更新日歷、從數據庫中獲取用戶信息,或者根據特定指令發送電子郵件。通過為智能體配備工具,使它們不僅能夠理解世界,還能夠對世界產生影響,從而為各種新的應用打開了大門。主要與三種主要類型的工具進行交互:擴展(Extensions)、函數(Functions)和數據存儲(Data Stores)。
(一)擴展
要理解擴展,可以將其視為一種標準化的方式,它在應用程序接口(API)和智能體之間架起了一座橋梁,使智能體能夠無縫執行API調用,而無需考慮其底層實現細節。
假設構建了一個智能體,其目標是幫助用戶預訂航班。你知道你想使用航班API來獲取航班信息,但你不確定如何讓智能體調用這個API端點。一種方法是實現自定義代碼,該代碼會接收用戶查詢,解析查詢中的相關信息,然后進行API調用。例如,在航班預訂用例中,用戶可能會說:“我想從A飛往B。”在這種情況下,我們的自定義代碼解決方案需要從用戶查詢中提取“A”和“B”作為相關實體,然后才能嘗試進行API調用。但如果用戶說:“我想飛往B”,而沒有提供出發城市呢?由于缺少必要的數據,API調用會失敗,我們需要實現更多代碼來處理這種邊緣和特殊情況。這種方法不可擴展,并且在超出已實現自定義代碼范圍的任何情況下都很容易出錯。
更穩健的方法是使用擴展。擴展通過以下兩種方式在智能體和API之間架起一座橋梁:一是教會智能體如何使用API端點。二是教會智能體成功調用API所需的參數或參數是什么。擴展可以獨立于智能體創建,但應作為智能體配置的一部分提供。智能體在運行時使用模型和示例來決定哪個擴展最適合解決用戶的查詢。這突出了擴展的一個關鍵優勢:它們內置的示例類型,允許智能體動態選擇最適合用戶查詢的擴展。
(二)函數
在軟件工程領域,函數被定義為自包含的代碼模塊,用于完成特定任務,并且可以根據需要重復使用。當軟件開發人員編寫程序時,他們通常會創建許多函數來完成各種任務。他們還會定義何時調用函數A而不是函數B的邏輯,以及每個函數所需的輸入是什么。
函數在智能體世界中的工作方式非常相似,只是我們可以將軟件開發人員替換為模型。模型可以從一組已知的函數中選擇,并根據其規范決定何時使用每個函數以及函數需要哪些參數。函數與擴展有幾個不同之處,其中最顯著的是:模型輸出函數及其參數,但不會直接調用API。函數在客戶端執行,而擴展在服務器端執行。
(三)數據存儲
語言模型就像一個巨大的圖書館,包含其訓練數據。但與不斷收購新書的圖書館不同,這個圖書館是靜態的,只包含其最初訓練時的知識。這帶來了一個挑戰,因為現實世界中的知識是不斷變化的。數據存儲通過提供動態信息來解決這一限制,確保模型的響應基于事實和最新信息。
考慮一個常見的情景,開發人員可能需要向模型提供少量額外數據,例如以電子表格的形式。數據存儲允許開發人員以原始格式向智能體提供額外數據,消除了耗時的數據轉換、模型重新訓練或微調的需要。數據存儲將傳入的文檔轉換為一組向量數據庫嵌入,智能體可以利用這些嵌入來提取其下一步行動或響應所需的信息。
三、AI Agent開發實踐:從原型到生產的全鏈路方案
從快速原型開發到企業級生產部署,開發者需要一個完整的解決方案來確保智能體能夠高效地實現目標并滿足復雜的需求。本文將探討如何通過針對性學習提升模型性能、使用LangChain快速啟動智能體開發,以及借助Vertex AI平臺實現智能體的生產級部署。通過這些實踐,開發者可以充分利用智能體的強大能力,從簡單的原型設計到復雜的生產應用,實現無縫過渡和持續優化。
(一)提升模型性能的針對性學習
在實際應用中,模型需要在生成輸出時能夠選擇正確的工具,尤其是在大規模生產環境中使用工具時。雖然通用訓練可以幫助模型發展這種技能,但現實場景往往需要超出訓練數據的知識。這可以類比為烹飪中的基礎技能與精通特定菜系的區別:兩者都需要基礎的烹飪知識,但后者需要針對特定領域的深入學習。
為了幫助模型獲得這種特定領域的知識,有幾種方法可供選擇:
1.上下文學習(In-context learning):這種方法在推理時為通用模型提供提示、工具和少量示例,使其能夠即時學習如何為特定任務使用這些工具。ReAct框架是自然語言處理中這種即時學習方法的一個例子。
2.基于檢索的上下文學習(Retrieval-based in-context learning):這種技術通過從外部存儲中檢索相關信息、工具和相關示例來動態填充模型提示。例如,Vertex AI擴展中的“示例存儲”或基于RAG的數據存儲架構。
3.基于微調的學習(Fine-tuning based learning):這種方法涉及使用大量特定示例對模型進行訓練,以幫助模型在接收用戶輸入之前理解何時以及如何應用某些工具。
每種方法在速度、成本和延遲方面都有其獨特的優勢和劣勢。然而,通過將這些技術結合到智能體框架中,我們可以利用各自的優點,減少缺點,從而實現更強大、更靈活的模型性能。
(二)使用LangChain快速啟動智能體
為了提供一個實際可執行的智能體示例,我們將使用LangChain和LangGraph庫快速搭建一個原型。這些流行的開源庫允許用戶通過“鏈式”邏輯、推理和工具調用來構建自定義智能體,以回答用戶的查詢。
我們定義了兩個工具:“search”用于執行谷歌搜索,“places”用于執行谷歌位置查詢。然后,我們初始化了一個“ChatVertexAI”模型,并將這兩個工具傳遞給模型。最后,我們創建了一個智能體,并向其輸入了一個多階段查詢:“A隊上周在足球比賽中對陣誰?對方球隊的主場地址是什么?”智能體通過調用“search”工具獲取了比賽信息,然后通過調用“places”工具獲取對方球隊主場的地址,并最終輸出了完整的答案。
這個簡單的智能體示例展示了模型、編排層和工具如何協同工作以實現特定目標。通過LangChain和LangGraph,開發者可以快速構建和測試智能體,而無需從頭開始編寫復雜的邏輯和工具調用代碼。這種敏捷開發方式使得開發者能夠快速迭代和優化智能體,以滿足不同的業務需求。
(三)使用Vertex AI智能體進行生產應用
雖然本文探討了智能體的核心組件,但構建生產級應用需要將它們與額外的工具進行集成。谷歌的Vertex AI平臺簡化了這一過程,提供了一個完全托管的環境,涵蓋了前面提到的所有基礎元素。使用自然語言界面,開發者可以快速定義智能體的關鍵元素,如目標、任務指令、工具、用于任務委派的子智能體和示例,從而輕松構建期望的系統行為。此外,該平臺還配備了一套開發工具,用于測試、評估、衡量智能體性能、調試和改進所開發智能體的整體質量。這使得開發者可以專注于構建和優化智能體,而平臺則管理基礎設施、部署和維護的復雜性。
四、未來展望:AI Agent的無限可能
智能體通過工具擴展了語言模型的能力,能夠訪問實時信息、建議現實世界的行動,并自主規劃和執行復雜任務。這些任務對于語言模型單獨完成來說可能是困難甚至不可能的。智能體可以利用一個或多個語言模型來決定何時以及如何轉換狀態,并使用外部工具來完成各種復雜任務。
智能體的核心是編排層,它通過結構化的推理、規劃和決策來指導智能體的行動。各種推理技術,如ReAct、Chain-of-Thought和Tree-of-Thoughts,為編排層提供了框架,使其能夠接收信息、進行內部推理,并生成明智的決策或行動。
工具是智能體與外部世界互動的關鍵,包括擴展、函數和數據存儲。這些工具使智能體能夠與外部系統互動并訪問超出其訓練數據的知識。擴展為智能體和外部API之間提供了橋梁,使API調用和實時信息的檢索成為可能。函數為開發者提供了更精細的控制,通過分工協作,允許智能體生成可以在客戶端執行的函數參數。數據存儲為智能體提供了對結構化或非結構化數據的訪問,使數據驅動的決策成為可能。
智能體的未來充滿了無限可能。隨著工具的日益復雜化和推理能力的不斷提升,智能體將能夠解決越來越復雜的問題。此外,“智能體鏈”(agent chaining)這種策略性方法也將繼續獲得關注。通過將專門化的智能體——每個智能體都在特定領域或任務中表現出色——結合起來,我們可以創建一種“智能體專家混合體”(mixture of agent experts)的方法,從而在各個行業和問題領域中提供卓越的成果。
構建復雜的智能體架構需要采用迭代的方法。實驗和優化是找到特定業務案例和組織需求解決方案的關鍵。由于支撐智能體架構的基礎模型具有生成性,因此沒有兩個智能體是完全相同的。然而,通過利用這些基礎組件的各自優勢,我們可以創建具有影響力的應用程序,這些應用程序不僅能夠擴展語言模型的能力,還能推動現實世界的變革。
免責聲明:本文轉自啟元洞見。文章內容系原作者個人觀點,本公眾號編譯/轉載僅為分享、傳達不同觀點,如有任何異議,歡迎聯系我們!
研究所簡介
國際技術經濟研究所(IITE)成立于1985年11月,是隸屬于國務院發展研究中心的非營利性研究機構,主要職能是研究我國經濟、科技社會發展中的重大政策性、戰略性、前瞻性問題,跟蹤和分析世界科技、經濟發展態勢,為中央和有關部委提供決策咨詢服務。“全球技術地圖”為國際技術經濟研究所官方微信賬號,致力于向公眾傳遞前沿技術資訊和科技創新洞見。
地址:北京市海淀區小南莊20號樓A座
電話:010-82635522
微信:iite_er
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.