谷歌 AI Agents 技術應用全面解析

一、引言

在複雜的現實世界中,人類常常藉助各種工具來完成任務,從傳統的書籍查閱到現代的搜索引擎和專業軟件。同樣,生成式 AI 模型也在不斷進化,試圖通過利用工具獲取實時信息和執行實際行動,以突破自身侷限。這就引出了 AI Agent 的概念,它是一種創新的程序架構,將推理、邏輯與外部信息訪問能力整合到生成式 AI 模型中,極大地拓展了模型的應用邊界。本文將深入探討 AI Agent 的各個方面,爲讀者揭示其背後的技術原理和應用潛力。

二、什麼是 Agent

從根本上講,生成式 AI Agent 是一種具有自主目標導向的應用程序。它能夠自主地觀察周圍環境,並利用其配備的工具採取行動以實現預定目標。與傳統模型不同,Agent 具有較高的自主性,在給定明確目標後,能夠在無需持續人類干預的情況下獨立運作。即使沒有人類提供的詳細指令,它也能憑藉自身的推理能力,規劃一系列步驟來逐步實現最終目標,展現出主動探索和解決問題的能力。

三、Agent 核心組件詳解

Agent 的行爲、決策和行動由三個核心組件構成的認知架構所驅動,分別是模型、工具和編排層。這三個組件相互協作、緊密配合,共同決定了 Agent 的功能和表現。模型作爲核心決策單元,負責處理信息和生成推理結果;工具則充當 Agent 與外部世界交互的橋樑,使其能夠獲取和處理外部數據;編排層負責協調模型和工具之間的工作流程,管理信息的輸入、推理過程和行動決策,確保 Agent 能夠高效地實現目標。

(一)模型(Model)

在 Agent 體系中,模型通常是指語言模型(LM),它是整個系統的決策中樞。這些語言模型可以是單一的或多個的,規模大小各異,並且能夠遵循基於指令的推理和邏輯框架,如 ReAct、Chain-of-Thought 或 Tree-of-Thoughts 等。根據不同的應用需求,模型可以是通用型的,適用於廣泛的任務場景;也可以是多模態的,能夠處理多種類型的數據;還可以針對特定的 Agent 架構進行微調,以提高在特定領域的性能表現。爲了在實際生產環境中獲得最佳效果,選擇與目標應用高度適配的模型至關重要,理想情況下,該模型應在與 Agent 所使用工具相關的數據上進行過訓練,這樣才能更好地理解和處理工具所涉及的信息。雖然模型在訓練過程中通常不會針對特定 Agent 的配置(如工具選擇和編排推理設置)進行專門訓練,但可以通過向其提供展示 Agent 能力的示例數據來進一步優化其在 Agent 任務中的表現。這些示例涵蓋了 Agent 在各種實際情境下使用工具和進行推理的具體案例,幫助模型學習如何在 Agent 架構中有效地發揮作用。

(二)工具(Tools)

儘管基礎模型在文本和圖像生成等方面表現出色,但它們與外部世界的交互能力相對薄弱。工具的出現彌補了這一關鍵缺陷,成爲 Agent 連接內部能力與外部世界的關鍵紐帶,極大地拓展了 Agent 的行動可能性。工具的形式豐富多樣,複雜度也各不相同,但大多數都與常見的網絡 API 方法(如 GET、POST、PATCH 和 DELETE)相兼容。例如,Agent 可以利用工具在數據庫中更新客戶信息,或者獲取天氣數據以優化旅行推薦。通過工具,Agent 能夠訪問和處理真實世界的信息,從而支持更高級的應用系統,如檢索增強生成(RAG),顯著提升了 Agent 的能力,使其超越了基礎模型的侷限。

(三)編排層(Orchestration layer)

編排層是 Agent 運行的核心控制機制,它管理着一個循環過程,決定了 Agent 如何接收信息、進行內部推理以及基於推理結果採取下一步行動。在這個循環中,Agent 不斷地攝取新信息,運用自身的推理能力進行分析和決策,然後根據決策結果執行相應的行動,這個過程會持續進行,直到 Agent 實現目標或達到預定的停止條件。編排層的複雜程度因 Agent 的任務性質和應用場景而異,簡單的任務可能只涉及基本的計算和直接的決策規則,而複雜的任務則可能需要運用鏈式邏輯、額外的機器學習算法或其他概率推理技術。在後續的認知架構部分,我們將詳細探討編排層的具體實現方式和技術細節。

(四)Agent 與模型的對比分析

tIGOY1

四、認知架構:Agent 如何運作

(一)類比廚師工作流程

想象一位在繁忙廚房中工作的廚師,其目標是爲餐廳顧客烹製美味的菜餚。首先,廚師需要收集各種信息,包括顧客的訂單詳情、廚房中現有的食材儲備以及食材的新鮮度等。然後,根據這些信息進行內部推理,規劃出適合的菜品和獨特的風味組合,同時考慮食材的搭配和烹飪方法的選擇。接下來,廚師開始實際行動,如熟練地切菜、精確地調配香料、恰到好處地煎炒烹炸食材等。在整個烹飪過程中,廚師會根據食材的消耗情況、烹飪過程中的實際效果以及顧客的反饋及時調整計劃,不斷優化菜品的製作過程,以確保最終菜餚能夠滿足顧客的口味需求。

(二)Agent 迭代處理機制

與廚師的工作流程類似,Agent 也通過迭代的方式處理信息、做出決策並優化行動。在這個過程中,編排層起着核心的支撐作用,負責維護 Agent 的記憶、狀態信息,引導推理和規劃過程。目前,在提示工程框架和語言模型任務規劃領域,已經湧現出了多種有效的推理技術,其中 ReAct、Chain-of-Thought 和 Tree-of-Thoughts 是比較具有代表性的。

1.ReAct

這是一種強大的提示工程框架,爲語言模型提供了一種清晰的思維策略,使其能夠針對用戶查詢進行有效的推理並及時採取行動。無論是在有上下文示例輔助的情況下,還是在沒有示例的情況下,ReAct 提示都表現出了優異的性能,在多個性能測試中超越了現有的 SOTA 基線,顯著提高了大語言模型(LLM)的人機交互性和可靠性。在實際操作中,當 Agent 採用 ReAct 框架處理用戶查詢時,會遵循一系列特定的步驟。首先,Agent 接收用戶查詢信息,隨後啓動 ReAct 序列,向模型提供詳細的提示,要求其生成下一步的 ReAct 步驟及對應的輸出結果。這個過程包括明確問題(即來自用戶查詢的原始輸入問題)、展示思考(模型對下一步行動的分析與思考)、確定行動(模型決定採取的具體行動,如選擇調用特定工具)、指定行動輸入(模型爲所選工具提供的輸入參數)和記錄觀察(行動執行後的結果反饋)等環節。這些步驟可能會根據任務的複雜程度和需求重複多次,直到最終得出模型對用戶原始查詢的準確答案,爲用戶提供滿意的迴應。

2.Chain-of-Thought(CoT)

通過引入中間推理步驟,爲模型賦予了更強大的推理能力。CoT 包含多種子技術,如自我一致性、主動提示和多模態 CoT 等,每種技術在不同的應用場景中都具有獨特的優勢和侷限性。在實際應用中,CoT 能夠引導模型逐步展示其推理過程,使答案的生成更具邏輯性和可解釋性,從而提高用戶對模型輸出的信任度和理解度,在處理複雜問題時表現出較高的應用價值。

3.Tree-of-Thoughts(ToT)

特別適用於探索性或需要戰略前瞻的任務場景。它對 Chain-of-Thought 提示進行了進一步的泛化和拓展,允許模型廣泛探索多種潛在的思維鏈,這些思維鏈作爲解決問題的中間步驟,爲模型提供了更廣闊的搜索空間和更靈活的推理方式。在面對複雜的語言問題時,ToT 能夠幫助模型從多個角度進行思考和探索,從而更有可能找到最優的解決方案,提升模型在處理複雜任務時的性能表現。

五、工具:連接外部世界的關鍵

(一)工具類型

雖然語言模型在信息處理方面具有強大的能力,但它們缺乏直接感知和影響現實世界的能力,這在很大程度上限制了它們在需要與外部系統或數據交互的場景中的應用。爲了突破這一限制,工具應運而生,成爲連接基礎模型與外部世界的橋樑。目前,谷歌模型能夠與之交互的主要工具類型包括擴展、函數和數據存儲。通過爲 Agent 配備這些工具,我們爲其開啓了一扇通往更廣闊應用領域的大門,使其能夠更好地理解用戶意圖並採取有效的行動。

(二)擴展(Extensions)

  1. 作用與原理

擴展的主要作用是在 API 和 Agent 之間建立一種標準化的連接方式,使得 Agent 能夠無縫地調用各種 APIs,而無需關注其底層的具體實現細節。例如,在構建一個旨在幫助用戶預訂航班的 Agent 時,如果我們希望使用 Google Flights API 來獲取航班信息,擴展就可以發揮關鍵作用。傳統的方法可能需要編寫大量的自定義代碼來處理用戶查詢、解析相關信息並進行 API 調用,但這種方法存在諸多弊端,如代碼複雜、難以維護,並且在面對一些特殊情況(如用戶提供的信息不完整)時容易出錯。而擴展則通過提供一系列示例,向 Agent 詳細說明如何使用 API 端點以及所需的參數信息,使得 Agent 在運行時能夠根據模型和這些示例,智能地選擇合適的擴展來處理用戶查詢,大大提高了 API 調用的效率和準確性。

  1. 優勢與應用示例

擴展的一個顯著優勢是其內置的示例類型,這些示例爲 Agent 提供了動態選擇最合適擴展的依據,使其能夠更好地適應不同的任務需求和用戶查詢。例如,在 Gemini 應用中,用戶可以通過簡單的設置啓用擴展功能,然後就可以方便地使用各種擴展來完成任務。比如,用戶可以啓用 Google Flights 擴展,然後向 Gemini 提出 “Show me flights from Austin to Zurich leaving next Friday.” 的查詢,Agent 就能夠利用該擴展準確地調用 Google Flights API,獲取並返回相關的航班信息,展示了擴展在實際應用中的便捷性和有效性。

(三)函數(Functions)

  1. 與軟件工程函數的相似性

在 Agent 架構中,函數與軟件工程中的函數概念具有相似之處,它們都是完成特定任務的獨立代碼模塊。在軟件工程中,開發者會根據不同的功能需求編寫多個函數,並明確規定何時調用哪個函數以及函數所需的輸入和輸出參數。同樣,在 Agent 體系中,模型會根據函數的規範說明,決定何時調用函數以及傳遞何種參數。

  1. 工作方式與優勢

與擴展不同的是,函數的執行過程在客戶端完成,而不是在 Agent 端。以航班查詢爲例,當用戶提出查詢需求時,模型會輸出對應的函數及參數,客戶端接收到這些信息後,負責執行實際的 API 調用操作。這種分工方式爲開發者提供了更精細的控制能力,適用於多種複雜場景。例如,當 API 調用需要在應用棧的其他特定層進行,或者存在安全或認證限制導致 Agent 無法直接調用 API,以及受時間或操作順序約束、需要在客戶端對 API 響應進行額外數據轉換處理,或者開發者希望在不部署額外 API 端點基礎設施的情況下迭代 Agent 開發時,函數調用機制都能發揮重要作用,滿足開發者的多樣化需求。

(四)數據存儲(Data stores)

  1. 解決的問題與原理

語言模型就像一個靜態的知識寶庫,其知識範圍通常侷限於初始訓練數據,無法及時獲取和更新現實世界中不斷變化的知識。數據存儲的出現就是爲了解決這一問題,它爲 Agent 提供了訪問動態、實時信息的通道,確保 Agent 的響應始終基於最新、最相關的事實依據。在實際應用中,開發者可以將電子表格、PDF 等格式的少量數據通過數據存儲提供給 Agent。數據存儲會將傳入的文檔轉換爲向量數據庫嵌入,Agent 能夠利用這些嵌入數據提取所需信息,以補充其行動或響應內容。

  1. 在 RAG 中的應用

在檢索增強生成(RAG)應用中,數據存儲得到了廣泛應用。通過與模型的協同工作,數據存儲能夠擴展模型的知識邊界,使 Agent 能夠處理超出其初始訓練範圍的任務。例如,在一個旅遊信息查詢的場景中,Agent 可以利用數據存儲訪問各種旅遊網站的內容、相關的結構化數據(如酒店預訂信息、景點介紹等)以及非結構化數據(如遊客的評論和遊記等),從而爲用戶提供更全面、準確的旅遊建議和信息。

(五)工具總結與對比

prX6Ne

六、增強模型效果的策略與方法

使用模型的關鍵在於它們在生成輸出時選擇正確工具的能力,尤其是在生產環境中大規模使用工具時。雖然通用訓練有助於模型培養這一技能,但現實場景往往需要超出訓練數據的知識。可以將其想象成基礎烹飪技能與精通特定菜系之間的區別。兩者都需要基礎的烹飪知識,但後者要求有針對性的學習,以獲得更精細的結果。

(一)上下文學習(In-context learning)

在推理階段,爲通用模型提供豐富的提示信息、相關工具以及少量示例數據,使其能夠在處理特定任務的過程中即時學習如何以及何時使用工具。這種學習方式類似於廚師在面對一份特定食譜、少量關鍵食材和一些示例菜餚時,憑藉自身已有的一般烹飪知識,迅速掌握新菜品的製作方法。它具有較強的靈活性和即時性,能夠在一定程度上幫助模型快速適應新的任務需求。然而,這種學習方式也存在一定的侷限性,在面對較爲複雜的任務時,可能需要更多的示例數據來支持模型的學習和決策過程,以確保模型能夠生成準確、可靠的結果。

(二)基於檢索的上下文學習(Retrieval-based in-context learning)

該技術通過從外部存儲(如 Vertex AI 擴展中的示例存儲或基於數據存儲的 RAG 架構)中檢索相關信息、工具和示例,動態地填充模型提示。這就好比廚師在一個設備齊全、食材豐富的廚房中工作,能夠隨時從充足的食材庫和大量的食譜中獲取所需資源,從而更好地滿足顧客的特定需求,提高菜品的質量和適應性。這種學習方式能夠充分利用外部存儲中的大量信息,有效增強模型在不同任務場景中的表現能力。但它也對外部存儲的質量和檢索效率提出了較高的要求,若外部存儲中的信息不準確、不完整或檢索過程過於緩慢,可能會影響模型的性能和學習效果。

(三)微調學習(Fine-tuning based learning)

在推理前,使用包含大量特定示例的數據集對模型進行全面訓練,使模型提前熟悉在各種特定情況下如何應用特定工具。如同廚師經過專業的烹飪課程系統學習特定菜系的製作方法後,在面對相應菜品製作時能夠更加得心應手、遊刃有餘。微調學習能夠使模型在特定領域或任務中表現出卓越的性能,顯著提高模型的準確性和可靠性。然而,這種學習方式需要大量的標註數據和強大的計算資源支持,並且在訓練過程中可能存在過擬合的風險,即模型在訓練數據上表現良好,但在實際應用中的泛化能力可能受到限制。

在實際應用中,開發者通常會根據具體的任務需求、數據資源狀況以及計算能力等因素,綜合選擇和靈活運用這些學習策略,以充分發揮模型的潛力,實現 Agent 性能的最大化提升。例如,對於一些簡單的、即時性較強的任務,可能會優先選擇上下文學習;對於需要大量歷史數據支持且對準確性要求較高的任務,微調學習可能更爲合適;而在數據資源豐富但計算資源有限的情況下,基於檢索的上下文學習則可能是一種較爲理想的選擇。

七、Agent 開發實踐:LangChain 快速入門與 Vertex AI 應用

(一)LangChain 快速入門

藉助 LangChain 和 LangGraph 庫,開發者可以便捷地構建簡單的 Agent 原型。以 gemini-1.5-flash-001 模型爲例,結合 SerpAPI(用於 Google Search)和 Google Places API 等工具,可實現回答多階段用戶查詢的功能。在實際代碼實現過程中,開發者首先需要定義搜索和地點查詢等工具函數,明確其功能和調用方式。例如,通過以下代碼定義搜索工具函數:

@tool
def search(query: str): 
  """Use the SerpAPI to run a Google Search.""" 
  search = SerpAPIWrapper()
  return search.run(query)

以及地點查詢工具函數:

@tool
def places(query: str):
  """Use the Google Places API to run a Google Places Query."""
  places = GooglePlacesTool()
  return places.run(query)

然後,實例化模型並將定義好的工具傳遞給它,如下所示:

model = ChatVertexAI(model="gemini-1.5-flash-001")
tools = [search, places]

最後,輸入用戶查詢,如詢問 “Who did the Texas Longhorns play in football last week? What is the address of the other team's stadium?”,Agent 能夠通過調用相應工具獲取信息並給出準確回答。在執行過程中,Agent 會根據用戶查詢的內容,判斷需要調用的工具,並將工具的執行結果進行整合和處理,最終生成回答反饋給用戶。這一過程展示了基於這些庫構建 Agent 的基本流程和組件協同工作的方式,爲開發者提供了一個簡單易懂的入門示例,幫助開發者快速瞭解和掌握 Agent 開發的基本原理和方法。

(二)Vertex AI 平臺的生產應用

谷歌的 Vertex AI 平臺爲開發者提供了一個強大的全託管環境,專門用於構建和部署生產級別的 Agent 應用。在這個平臺上,開發者可以通過自然語言界面方便快捷地定義 Agent 的關鍵要素,包括明確的目標、詳細的任務指令、適用的工具、負責特定任務的子 Agent 以及豐富的示例等,從而輕鬆構建出符合實際需求的系統行爲。同時,平臺還配備了一系列全面的開發工具,涵蓋測試、評估、性能測量、調試等多個方面,能夠有效提高開發的 Agent 的整體質量。例如,開發者可以利用平臺提供的功能構建一個包含多種組件的 Agent 架構,如使用 Vertex Agent Builder 進行基礎架構構建、通過 Vertex Extensions 和 Vertex Function Calling 實現工具的高效調用、藉助 Vertex Example Store 進行示例的有效管理等,這些組件相互協作、緊密配合,爲生產應用提供了堅實的支持,大大簡化了開發和部署的流程,降低了開發成本和難度,使開發者能夠專注於 Agent 功能的創新和優化,提高應用的實際價值。

八、總結與展望

本文對生成式 AI Agent 進行了全面而深入的探討,涵蓋了其基礎構建塊、架構組成、實現方式以及應用實踐等多個方面。Agent 通過有效利用工具,成功突破了語言模型的固有侷限,具備了自主規劃和執行復雜任務的能力。其核心的編排層和多種先進的推理技術爲任務處理提供了有力的支撐,而擴展、函數和數據存儲等工具則成爲其與外部世界交互的關鍵橋樑。

展望未來,隨着工具的不斷髮展和完善,以及推理能力的持續提升,Agent 將在解決複雜問題方面發揮更加重要的作用。特別是 “Agent 鏈” 的發展趨勢,即將不同領域的專業 Agent 進行有機組合,有望形成強大的“專家混合體”,在各個行業和領域展現出巨大的應用潛力,爲解決現實世界的複雜問題帶來新的突破和機遇。然而,構建複雜的 Agent 架構並非一蹴而就,需要開發者不斷進行迭代和實驗,根據具體的業務需求和應用場景,靈活選擇和優化組件,以充分發揮 Agent 的潛力,實現其在實際應用中的價值最大化,推動 AI 技術在各領域的廣泛應用和深度發展。在這一過程中,我們也需要關注和解決可能出現的技術挑戰和倫理問題,確保 AI Agent 技術的健康、可持續發展。

原文參考:https://archive.org/details/google-ai-agents-whitepaper

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/NdsTFVGCrRBQTHj2Bxv4wg