久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

構(gòu)建智能未來:Google AI 智能體白皮書

 mrjiangkai 2025-01-22
圖片

本文深入探討了生成式 AI 智能體的核心組件,、工作原理、關(guān)鍵技術(shù)及其廣泛應(yīng)用,。從智能體的定義到模型,、工具和編排層的協(xié)同作用,再到認(rèn)知架構(gòu)的運(yùn)作機(jī)制,,本文揭示了智能體如何利用擴(kuò)展,、函數(shù)和數(shù)據(jù)存儲(chǔ)等工具來執(zhí)行復(fù)雜任務(wù)。此外,,本文還介紹了如何通過定向?qū)W習(xí)提升模型性能,,并展望了智能體在未來的發(fā)展趨勢(shì),特別是 Google 在該領(lǐng)域的探索和應(yīng)用,。

內(nèi)容提綱:

  1. 1. 引言:智能體時(shí)代的來臨
  2. 2. 什么是智能體 (Agent),?
    • · 2.1 模型 (The Model)
    • · 2.2 工具 (The Tools)
    • · 2.3 編排層 (The Orchestration Layer)
    • · 2.4 智能體 vs. 模型:關(guān)鍵區(qū)別
    • · 2.5 認(rèn)知架構(gòu):智能體的運(yùn)作機(jī)制
  3. 3. 工具:智能體的外部世界
    • · 3.1 擴(kuò)展 (Extensions)
    • · 3.2 示例擴(kuò)展 (Sample Extensions)
    • · 3.3 函數(shù) (Functions)
      • · 3.3.1 使用案例 (Use Cases)
      • · 3.3.2 函數(shù)示例代碼 (Function Sample Code)
    • · 3.4 數(shù)據(jù)存儲(chǔ) (Data Stores)
      • · 3.4.1 實(shí)施與應(yīng)用 (Implementation and Application)
    • · 3.5 工具總結(jié) (Tools Recap)
  4. 4. 通過定向?qū)W習(xí)提升模型性能
  5. 5. 使用 LangChain 快速構(gòu)建智能體原型
  6. 6. 生產(chǎn)環(huán)境中的智能體應(yīng)用:Vertex AI Agents
  7. 7. 總結(jié):智能體的未來展望
  8. 8. 尾注

1. 引言:智能體時(shí)代的來臨

人類擅長處理復(fù)雜的模式識(shí)別任務(wù)。然而,,我們往往也需要借助工具——如書籍,、Google 搜索或計(jì)算器——來補(bǔ)充我們的先驗(yàn)知識(shí),從而做出最終的判斷,。正如人類一樣,,生成式 AI 模型也可以通過訓(xùn)練來使用工具,以獲取實(shí)時(shí)信息或建議現(xiàn)實(shí)世界的行動(dòng),。 例如,,模型可以利用數(shù)據(jù)庫檢索工具來訪問特定信息,如客戶的購買歷史,,從而生成量身定制的購物推薦,?;蛘撸鶕?jù)用戶的查詢,,模型可以進(jìn)行各種 API 調(diào)用,,向同事發(fā)送電子郵件回復(fù),或代表您完成一筆金融交易,。為了做到這一點(diǎn),,模型不僅必須能夠訪問一組外部工具,還需要能夠以自主的方式計(jì)劃和執(zhí)行任何任務(wù),。這種推理,、邏輯和外部信息訪問能力的結(jié)合,都與生成式 AI 模型相關(guān)聯(lián),,從而引出了智能體 (Agent) 的概念,,即一個(gè)擴(kuò)展了生成式 AI 模型獨(dú)立能力的程序。本白皮書將更詳細(xì)地深入探討所有這些方面及相關(guān)內(nèi)容,。

2. 什么是智能體 (Agent),?

智能體是一個(gè)應(yīng)用程序,它能夠通過觀察周圍環(huán)境,,并利用其可支配的工具來嘗試實(shí)現(xiàn)預(yù)設(shè)的目標(biāo),。 智能體具有自主性,可以獨(dú)立于人類干預(yù)而行動(dòng),,特別是在為其設(shè)定了明確的目標(biāo)或任務(wù)的情況下,。即使沒有明確的指令,智能體也能主動(dòng)地思考如何達(dá)成最終目標(biāo),。雖然人工智能中智能體的概念相當(dāng)寬泛且強(qiáng)大,,但本白皮書著重于探討在本文發(fā)表之時(shí),生成式 AI 模型能夠構(gòu)建的特定類型的智能體,。

智能體的行為,、動(dòng)作和決策由其內(nèi)部的認(rèn)知架構(gòu)驅(qū)動(dòng)。一個(gè)典型的智能體認(rèn)知架構(gòu)包含以下三個(gè)核心組件:

2.1 模型 (The Model)

在智能體的范疇內(nèi),,模型是指在智能體運(yùn)行過程中充當(dāng)核心決策者的語言模型 (LM),。 它可以是一個(gè)或多個(gè)不同規(guī)模(小型或大型)的 LM,并且能夠理解并執(zhí)行基于指令的推理和邏輯框架,,如 ReAct,、Chain-of-Thought 或 Tree-of-Thoughts。模型可以是通用的,、多模態(tài)的,,也可以根據(jù)特定智能體架構(gòu)的需求進(jìn)行微調(diào)。為了獲得最佳的生產(chǎn)效果,,應(yīng)選擇最適合目標(biāo)應(yīng)用的模型,,并且該模型最好已經(jīng)過與認(rèn)知架構(gòu)中計(jì)劃使用的工具相關(guān)的數(shù)據(jù)簽名的訓(xùn)練。

需要注意的是,,模型通常不使用智能體的特定配置設(shè)置(即工具選擇,、編排/推理設(shè)置)進(jìn)行訓(xùn)練。然而,,可以通過向模型提供展示智能體能力的示例,,包括智能體在各種上下文中使用特定工具或推理步驟的實(shí)例,來進(jìn)一步改進(jìn)模型以適應(yīng)智能體的任務(wù),。

2.2 工具 (The Tools)

盡管基礎(chǔ)模型在文本和圖像生成方面表現(xiàn)出色,,但它們?nèi)允芟抻跓o法與外部世界交互。工具彌合了這一差距,,使智能體能夠與外部數(shù)據(jù)和服務(wù)進(jìn)行交互,,從而解鎖超越模型本身的一系列操作。 工具可以有多種形式,,并且具有不同的復(fù)雜程度,,但通常與常見的 Web API 方法(如 GET、POST,、 PATCH 和 DELETE)一致,。例如,工具可以更新數(shù)據(jù)庫中的客戶信息,,或獲取天氣數(shù)據(jù)以影響智能體提供的旅行建議,。借助工具,智能體可以訪問和處理現(xiàn)實(shí)世界的信息,。這使它們能夠支持更多專用系統(tǒng),,如檢索增強(qiáng)生成 (RAG),這大大擴(kuò)展了智能體的能力,,使其超越了基礎(chǔ)模型本身的能力,。

2.3 編排層 (The Orchestration Layer)

編排層描述了一個(gè)循環(huán)過程,它控制著智能體如何獲取信息,、執(zhí)行內(nèi)部推理,,并利用推理結(jié)果來指導(dǎo)下一步的行動(dòng)或決策。 通常,,這個(gè)循環(huán)會(huì)持續(xù)進(jìn)行,,直到智能體達(dá)到其目標(biāo)或停止點(diǎn)。編排層的復(fù)雜性因智能體及其執(zhí)行的任務(wù)而異,。一些循環(huán)可能是簡(jiǎn)單的決策規(guī)則計(jì)算,,而另一些可能包含鏈?zhǔn)竭壿嫛㈩~外的機(jī)器學(xué)習(xí)算法或其他概率推理技術(shù),。

2.4 智能體 vs. 模型:關(guān)鍵區(qū)別

下表總結(jié)了智能體和模型之間的主要區(qū)別:

特性
模型
智能體
知識(shí)范圍
局限于訓(xùn)練數(shù)據(jù)
通過工具連接到外部系統(tǒng)進(jìn)行擴(kuò)展
推理方式
基于用戶查詢的單次推理/預(yù)測(cè)
支持基于用戶查詢和編排層決策的多輪推理/預(yù)測(cè),,并管理會(huì)話歷史記錄(例如聊天歷史)
工具使用
無原生工具實(shí)現(xiàn)
工具在智能體架構(gòu)中得到原生支持
邏輯層
無原生邏輯層,;用戶可使用推理框架構(gòu)建提示
具有原生的認(rèn)知架構(gòu),使用 ReAct,、CoT,、ToT 等推理框架或 LangChain 等預(yù)構(gòu)建的智能體框架,來進(jìn)行復(fù)雜的提示工程,。

2.5 認(rèn)知架構(gòu):智能體的運(yùn)作機(jī)制

如同在繁忙廚房中工作的廚師,,智能體的目標(biāo)是通過一系列的計(jì)劃、執(zhí)行和調(diào)整來為顧客創(chuàng)造美味佳肴,。他們收集信息(例如顧客訂單和現(xiàn)有食材),,進(jìn)行內(nèi)部推理(例如構(gòu)思菜品和口味搭配),然后采取行動(dòng)(例如切菜,、調(diào)味,、烹飪)。在每個(gè)階段,,廚師都會(huì)根據(jù)需要進(jìn)行調(diào)整,,并根據(jù)先前的結(jié)果優(yōu)化下一步計(jì)劃。這種信息獲取,、計(jì)劃,、執(zhí)行和調(diào)整的循環(huán)過程,構(gòu)成了一種獨(dú)特的認(rèn)知架構(gòu),。

與廚師類似,,智能體利用認(rèn)知架構(gòu)來迭代處理信息、做出明智決策,,并根據(jù)之前的輸出優(yōu)化后續(xù)行動(dòng),,最終實(shí)現(xiàn)其目標(biāo)。 編排層是智能體認(rèn)知架構(gòu)的核心,,負(fù)責(zé)維護(hù)記憶,、狀態(tài)、推理和計(jì)劃,。它利用快速發(fā)展的提示工程領(lǐng)域及其相關(guān)框架來指導(dǎo)推理和計(jì)劃,,使智能體能夠更有效地與其環(huán)境交互并完成任務(wù)。

圖片

圖 1:通用智能體架構(gòu)和組件 - 該圖展示了智能體的典型架構(gòu),,包括模型,、編排層、工具和用戶查詢之間的交互關(guān)系,。

目前,,一些主流的提示工程框架和推理技術(shù)包括:

  • · ReAct: 一種提示工程框架,為語言模型提供了一種推理 (Reason) 和行動(dòng) (Act) 的策略,,無論是否有上下文示例,。ReAct 提示已被證明優(yōu)于多個(gè) SOTA 基線,,并提高了 LLM 的可解釋性和可信度。
  • · Chain-of-Thought (CoT): 一種通過中間步驟實(shí)現(xiàn)推理能力的提示工程框架,。CoT 具有多種子技術(shù),,包括自洽性,、主動(dòng)提示和多模態(tài) CoT,,每種技術(shù)都具有其自身的優(yōu)勢(shì)和劣勢(shì),具體取決于具體的應(yīng)用場(chǎng)景,。
  • · Tree-of-Thoughts (ToT): 一種適用于探索或戰(zhàn)略前瞻任務(wù)的提示工程框架,。它對(duì)思維鏈提示進(jìn)行了泛化,并允許模型探索各種思維鏈,,這些思維鏈作為使用語言模型解決一般問題的中間步驟,。

例如,一個(gè)被編程為使用 ReAct 框架來為用戶查詢選擇正確行動(dòng)和工具的智能體,,其事件序列可能如下所示:

  1. 1. 用戶向智能體發(fā)送查詢
  2. 2. 智能體開始 ReAct 序列
  3. 3. 智能體向模型提供一個(gè)提示,,要求它生成下一個(gè) ReAct 步驟及其相應(yīng)的輸出:
    • · 問題 (Question): 用戶查詢中的輸入問題,隨提示一起提供,。
    • · 思考 (Thought): 模型關(guān)于下一步應(yīng)該做什么的思考,。
    • · 行動(dòng) (Action): 模型決定采取的行動(dòng)。
      • · 這是可能發(fā)生工具選擇的地方,。
      • · 例如,,一個(gè)行動(dòng)可能是 [航班, 搜索, 代碼, 無] 中的一個(gè),其中前三個(gè)代表模型可以選擇的一個(gè)已知工具,,最后一個(gè)代表“無工具選擇”,。
    • · 行動(dòng)輸入 (Action Input): 模型決定向工具提供的輸入(如果有)。
    • · 觀察 (Observation): 行動(dòng)/行動(dòng)輸入序列的結(jié)果,。
      • · 這種思考/行動(dòng)/行動(dòng)輸入/觀察可以根據(jù)需要重復(fù) N 次,。
    • · 最終答案 (Final Answer): 模型提供的原始用戶查詢的最終答案。
  4. 4. ReAct 循環(huán)結(jié)束,,并將最終答案提供給用戶,。
圖片

圖 2:具有 ReAct 推理的智能體示例 - 該圖展示了一個(gè)智能體使用 ReAct 框架與用戶交互,并最終調(diào)用 'Flights' 工具查詢航班信息的完整流程,。

3. 工具:智能體的外部世界

截至本文發(fā)布之日,,Google 模型能夠交互的主要工具類型有三種:擴(kuò)展 (Extensions)、函數(shù) (Functions) 和數(shù)據(jù)存儲(chǔ) (Data Stores),。 通過為智能體配備工具,,我們釋放了它們理解世界并對(duì)其采取行動(dòng)的巨大潛力,為無數(shù)新的應(yīng)用和可能性打開了大門,。

3.1 擴(kuò)展 (Extensions)

擴(kuò)展以標(biāo)準(zhǔn)化的方式橋接了 API 和智能體之間的鴻溝,,使智能體能夠無縫地執(zhí)行 API,,而無需考慮其底層實(shí)現(xiàn)。 可以將擴(kuò)展理解為 API 和智能體之間的橋梁,,它以標(biāo)準(zhǔn)化的方式使智能體能夠無縫執(zhí)行 API,,而無需考慮 API 的底層實(shí)現(xiàn)。假設(shè)您構(gòu)建了一個(gè)旨在幫助用戶預(yù)訂航班的智能體,。您知道您想使用 Google Flights API 來檢索航班信息,,但不確定如何讓您的智能體調(diào)用此 API 端點(diǎn)。

圖片

圖 3:智能體如何與外部 API 交互,?- 該圖展示了在沒有擴(kuò)展的情況下,,智能體需要自定義代碼來解析用戶查詢并調(diào)用 API,這種方式難以擴(kuò)展且容易出錯(cuò),。

一種方法可以是實(shí)現(xiàn)自定義代碼,,該代碼將接收傳入的用戶查詢,解析查詢以獲取相關(guān)信息,,然后進(jìn)行 API 調(diào)用,。例如,在航班預(yù)訂用例中,,用戶可能會(huì)說“我想預(yù)訂從奧斯汀到蘇黎世的航班”,。在這種情況下,我們的自定義代碼解決方案將需要在嘗試進(jìn)行 API 調(diào)用之前,,從用戶查詢中提取“奧斯汀”和“蘇黎世”作為相關(guān)實(shí)體,。但是,如果用戶說“我想預(yù)訂飛往蘇黎世的航班”而沒有提供出發(fā)城市怎么辦,?在沒有所需數(shù)據(jù)的情況下,,API 調(diào)用將失敗,并且需要實(shí)現(xiàn)更多代碼才能捕獲這樣的邊緣和極端情況,。這種方法不可擴(kuò)展,,并且在任何超出已實(shí)現(xiàn)自定義代碼的場(chǎng)景中都很容易出錯(cuò)。

一個(gè)更具彈性的方法是使用擴(kuò)展,。 擴(kuò)展通過以下方式連接智能體和外部 API:

  1. 1. 使用示例指導(dǎo)智能體如何使用 API 端點(diǎn),。
  2. 2. 指導(dǎo)智能體成功調(diào)用 API 端點(diǎn)所需的參數(shù)。
圖片

圖 4:擴(kuò)展將智能體連接到外部 API - 該圖展示了擴(kuò)展如何通過提供示例和參數(shù)信息,,幫助智能體更便捷地調(diào)用外部 API,。

擴(kuò)展可以獨(dú)立于智能體進(jìn)行構(gòu)建,但應(yīng)作為智能體配置的一部分提供,。智能體使用模型和示例在運(yùn)行時(shí)決定哪個(gè)擴(kuò)展(如果有)適合解決用戶的查詢,。這凸顯了擴(kuò)展的一個(gè)關(guān)鍵優(yōu)勢(shì),即其內(nèi)置的示例類型,允許智能體動(dòng)態(tài)地選擇最合適的擴(kuò)展來完成任務(wù),。

圖片

圖 5:智能體,、擴(kuò)展和 API 之間的 1 對(duì)多關(guān)系 - 該圖展示了一個(gè)智能體如何配置多個(gè)擴(kuò)展,從而訪問不同的 API,,例如 Flights API,、Maps API 和 Weather API。

3.2 示例擴(kuò)展 (Sample Extensions)

為了簡(jiǎn)化擴(kuò)展的使用,,Google 提供了一些開箱即用的擴(kuò)展,,可以快速導(dǎo)入到您的項(xiàng)目中,并以最少的配置使用,。例如,,代碼片段 1 中的代碼解釋器擴(kuò)展允許您從自然語言描述中生成和運(yùn)行 Python 代碼,。

import vertexai
import pprint

PROJECT_ID = 'YOUR_PROJECT_ID'
REGION = 'us-central1'

vertexai.init(project=PROJECT_ID, location=REGION)

from vertexai.preview.extensions import Extension

extension_code_interpreter = Extension.from_hub('code_interpreter')
CODE_QUERY = '''Write a python method to invert a binary tree in O(n) time.'''

response = extension_code_interpreter.execute(
    operation_id='generate_and_execute', operation_params={'query': CODE_QUERY}
)

print('Generated Code:')
pprint.pprint({response['generated_code']})

# The above snippet will generate the following code.
# Generated Code:
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
def invert_binary_tree(root):
    '''
    Inverts a binary tree.

    Args:
      root: The root of the binary tree.

    Returns:
      The root of the inverted binary tree.
    '''

    ifnot root:
        returnNone

    # Swap the left and right children recursively
    root.left, root.right = invert_binary_tree(root.right), invert_binary_tree(root.left)

    return root

# Example usage:
# Construct a sample binary tree
root = TreeNode(4)
root.left = TreeNode(2)
root.right = TreeNode(7)
root.left.left = TreeNode(1)
root.left.right = TreeNode(3)
root.right.left = TreeNode(6)
root.right.right = TreeNode(9)

# Invert the binary tree
inverted_root = invert_binary_tree(root)

代碼片段 1. 代碼解釋器擴(kuò)展可以生成和運(yùn)行 Python 代碼

3.3 函數(shù) (Functions)

函數(shù)可以被視為執(zhí)行特定任務(wù)并可復(fù)用的自包含代碼模塊,。 在軟件工程領(lǐng)域,函數(shù)被定義為完成特定任務(wù)并且可以根據(jù)需要重復(fù)使用的自包含代碼模塊,。當(dāng)軟件開發(fā)人員編寫程序時(shí),,他們通常會(huì)創(chuàng)建許多函數(shù)來執(zhí)行各種任務(wù)。他們還將定義調(diào)用 function_a 與 function_b 的邏輯,,以及預(yù)期的輸入和輸出,。

函數(shù)在智能體領(lǐng)域中的工作方式非常相似,但我們可以用模型替換軟件開發(fā)人員,。模型可以采用一組已知函數(shù),,并根據(jù)其規(guī)范決定何時(shí)使用每個(gè)函數(shù)以及函數(shù)需要哪些參數(shù)。函數(shù)與擴(kuò)展的不同之處主要在于:

  1. 1. 模型輸出函數(shù)及其參數(shù),,但不進(jìn)行實(shí)時(shí)的 API 調(diào)用,。
  2. 2. 函數(shù)在客戶端執(zhí)行,而擴(kuò)展在智能體端執(zhí)行,。
圖片

圖 7:函數(shù)如何與外部 API 交互,?- 該圖展示了函數(shù)調(diào)用與擴(kuò)展的區(qū)別,其中模型輸出函數(shù)名和參數(shù),,由客戶端負(fù)責(zé)執(zhí)行函數(shù)并調(diào)用 API,。

圖片

圖 8:客戶端控制與智能體端控制 - 該圖對(duì)比了擴(kuò)展和函數(shù)調(diào)用在控制流程上的差異,其中函數(shù)調(diào)用將 API 的實(shí)際調(diào)用放在了客戶端,。

3.3.1 使用案例 (Use Cases)

模型可以用于調(diào)用函數(shù),,以便為最終用戶處理復(fù)雜的客戶端執(zhí)行流程,在這種情況下,,智能體開發(fā)人員可能不希望語言模型管理 API 執(zhí)行(就像擴(kuò)展的情況一樣),。讓我們考慮以下示例,其中一個(gè)智能體被訓(xùn)練成一個(gè)旅行禮賓員,與想要預(yù)訂度假旅行的用戶進(jìn)行交互,。目標(biāo)是讓智能體生成一個(gè)城市列表,,我們可以在我們的中間件應(yīng)用程序中使用該列表為用戶的旅行計(jì)劃下載圖像、數(shù)據(jù)等,。用戶可能會(huì)說這樣的話:

“我想和家人一起去滑雪旅行,,但我不確定去哪里?!?/span>

在對(duì)模型的典型提示中,,輸出可能如下所示:

當(dāng)然,以下是您可以考慮的家庭滑雪旅行城市列表:

  • · 美國科羅拉多州克雷斯特德比特
  • · 加拿大不列顛哥倫比亞省惠斯勒
  • · 瑞士采爾馬特

雖然上述輸出包含我們需要的數(shù)據(jù)(城市名稱),,但該格式并不適合解析,。通過函數(shù)調(diào)用,我們可以教會(huì)模型以結(jié)構(gòu)化樣式(如 JSON)格式化此輸出,,這更便于另一個(gè)系統(tǒng)解析,。 假設(shè)用戶提供相同的輸入提示,則來自函數(shù)的示例 JSON 輸出可能如代碼片段 5 所示,。

{
  'function_call':{
    'name':'display_cities',
    'args':{
      'cities':[
        'Crested Butte',
        'Whistler',
        'Zermatt'
      ],
      'preferences':'skiing'
    }
}
}

代碼片段 5. 用于顯示城市列表和用戶偏好的示例函數(shù)調(diào)用負(fù)載

圖片

圖 9:函數(shù)調(diào)用生命周期 - 該圖詳細(xì)展示了函數(shù)調(diào)用的各個(gè)步驟,,包括模型生成 JSON 響應(yīng),客戶端解析并調(diào)用 API,,以及最終將結(jié)果返回給用戶的完整流程,。

3.3.2 函數(shù)示例代碼 (Function Sample Code)

為了從我們的滑雪度假場(chǎng)景中獲得上述輸出,讓我們構(gòu)建每個(gè)組件,,使其與我們的 gemini-1.5-flash-001 模型一起使用,。

首先,我們將 display_cities 函數(shù)定義為一個(gè)簡(jiǎn)單的 Python 方法,。

from typing import ListOptional

def display_cities(cities: List[str], preferences: Optional[str] = None) -> List[str]:
    '''根據(jù)用戶的搜索查詢和偏好提供城市列表,。

    Args:
        preferences (str): 用戶的搜索偏好,如滑雪,、
            海灘,、餐館,、燒烤等,。
        cities (List[str]): 推薦給用戶的城市列表。

    Returns:
        List[str]: 推薦給用戶的城市列表,。
    '''

    return cities

代碼片段 6. 用于顯示城市列表的函數(shù)的示例 Python 方法

接下來,,我們將實(shí)例化我們的模型,構(gòu)建工具,,然后將用戶的查詢和工具傳遞給模型,。執(zhí)行下面的代碼將產(chǎn)生如代碼片段底部所示的輸出。

from vertexai.generative_models import GenerativeModel, Tool, FunctionDeclaration

model = GenerativeModel('gemini-1.5-flash-001')

display_cities_function = FunctionDeclaration.from_func(display_cities)
tool = Tool(function_declarations=[display_cities_function])

message = '我想和家人一起去滑雪旅行,但我不確定去哪里,。'

res = model.generate_content(message, tools=[tool])

print(f'Function Name: {res.candidates[0].content.parts[0].function_call.name}')
print(f'Function Args: {res.candidates[0].content.parts[0].function_call.args}')
> Function Name: display_cities
> Function Args: {'preferences': 'skiing', 'cities': ['Aspen', 'Vail', 'Park City']}

代碼片段 7. 構(gòu)建工具,,將其與用戶查詢一起發(fā)送到模型,并允許進(jìn)行函數(shù)調(diào)用

3.4 數(shù)據(jù)存儲(chǔ) (Data Stores)

數(shù)據(jù)存儲(chǔ)可以被視為一個(gè)大型的,、不斷更新的知識(shí)庫,。 可以將數(shù)據(jù)存儲(chǔ)想象成一個(gè)龐大的圖書館,其中包含其訓(xùn)練數(shù)據(jù),。但與不斷獲取新卷的圖書館不同,,這個(gè)圖書館保持靜態(tài),僅保存最初訓(xùn)練時(shí)的知識(shí),。這提出了一個(gè)挑戰(zhàn),,因?yàn)楝F(xiàn)實(shí)世界的知識(shí)在不斷發(fā)展。數(shù)據(jù)存儲(chǔ)通過提供對(duì)更動(dòng)態(tài)和最新信息的訪問來解決此限制,,并確保模型的響應(yīng)始終基于事實(shí)和相關(guān)性,。 數(shù)據(jù)存儲(chǔ)允許開發(fā)人員以其原始格式向智能體提供額外數(shù)據(jù),從而無需耗時(shí)的數(shù)據(jù)轉(zhuǎn)換,、模型重新訓(xùn)練或微調(diào),。數(shù)據(jù)存儲(chǔ)將傳入文檔轉(zhuǎn)換為一組向量數(shù)據(jù)庫嵌入,智能體可以使用這些嵌入來提取所需信息,,以補(bǔ)充其下一個(gè)操作或?qū)τ脩舻捻憫?yīng)。

圖片

圖 10:智能體如何與結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)交互,?- 該圖展示了智能體如何通過數(shù)據(jù)存儲(chǔ)訪問私有文檔,、網(wǎng)站和結(jié)構(gòu)化數(shù)據(jù)等不同類型的數(shù)據(jù)源。

圖片

圖 11:數(shù)據(jù)存儲(chǔ)將智能體連接到各種類型的新實(shí)時(shí)數(shù)據(jù)源 - 該圖展示了數(shù)據(jù)存儲(chǔ)如何將智能體與私有文檔,、網(wǎng)站和結(jié)構(gòu)化數(shù)據(jù)等數(shù)據(jù)源連接起來,,從而實(shí)現(xiàn) RAG 應(yīng)用。

3.4.1 實(shí)施與應(yīng)用 (Implementation and Application)

在生成式 AI 智能體的上下文中,,數(shù)據(jù)存儲(chǔ)通常被實(shí)現(xiàn)為向量數(shù)據(jù)庫,,它以向量嵌入的形式存儲(chǔ)數(shù)據(jù),這是一種高維向量或數(shù)據(jù)的數(shù)學(xué)表示,。開發(fā)人員希望智能體在運(yùn)行時(shí)能夠訪問此向量數(shù)據(jù)庫,。雖然我們不會(huì)在這里深入介紹向量數(shù)據(jù)庫,但關(guān)鍵是要了解它們以向量嵌入的形式存儲(chǔ)數(shù)據(jù),,向量嵌入是一種提供的數(shù)據(jù)的高維向量或數(shù)學(xué)表示,。

近年來,將數(shù)據(jù)存儲(chǔ)與語言模型結(jié)合使用的最豐富的示例之一是實(shí)現(xiàn)基于檢索增強(qiáng)生成 (RAG) 的應(yīng)用,。 這些應(yīng)用程序試圖通過讓模型訪問各種格式的數(shù)據(jù)來擴(kuò)展模型知識(shí)的廣度和深度,,例如:

  • · 網(wǎng)站內(nèi)容
  • · PDF、Word 文檔、CSV,、電子表格等格式的結(jié)構(gòu)化數(shù)據(jù)
  • · HTML,、PDF、TXT 等格式的非結(jié)構(gòu)化數(shù)據(jù)

圖片

圖 12:智能體和數(shù)據(jù)存儲(chǔ)之間的 1 對(duì)多關(guān)系 - 該圖展示了一個(gè)智能體如何配置多個(gè)數(shù)據(jù)存儲(chǔ),,從而訪問各種類型的預(yù)索引數(shù)據(jù),,例如非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)、網(wǎng)站數(shù)據(jù)存儲(chǔ)和結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ),。

每個(gè)用戶請(qǐng)求和智能體響應(yīng)循環(huán)的底層流程通常如圖 13 所示建模,。

  1. 1. 用戶查詢被發(fā)送到嵌入模型以生成查詢的嵌入
  2. 2. 然后使用像 SCaNN 這樣的匹配算法將查詢嵌入與向量數(shù)據(jù)庫的內(nèi)容進(jìn)行匹配
  3. 3. 從向量數(shù)據(jù)庫中以文本格式檢索匹配的內(nèi)容并將其發(fā)送回智能體
  4. 4. 智能體接收用戶查詢和檢索到的內(nèi)容,然后制定響應(yīng)或操作
  5. 5. 將最終響應(yīng)發(fā)送給用戶
圖片

圖 13:基于 RAG 的應(yīng)用程序中用戶請(qǐng)求和智能體響應(yīng)的生命周期 - 該圖詳細(xì)展示了基于 RAG 的應(yīng)用中,,用戶查詢?nèi)绾伪晦D(zhuǎn)換為嵌入,,并與向量數(shù)據(jù)庫中的內(nèi)容進(jìn)行匹配,最終返回給用戶檢索到的內(nèi)容,。

圖片

圖 14:基于 RAG 的應(yīng)用示例 - 該圖展示了一個(gè)基于 RAG 的智能體如何使用 ReAct 框架,,通過查詢數(shù)據(jù)存儲(chǔ)來回答用戶的關(guān)于“育兒假政策”的問題。

3.5 工具總結(jié) (Tools Recap)

總而言之,,擴(kuò)展,、函數(shù)和數(shù)據(jù)存儲(chǔ)構(gòu)成了智能體在運(yùn)行時(shí)可以使用的幾種不同工具類型。每種工具都有其自己的用途,,并且可以根據(jù)智能體開發(fā)人員的判斷一起使用或單獨(dú)使用,。

特性
擴(kuò)展 (Extensions)
函數(shù) (Functions)
數(shù)據(jù)存儲(chǔ) (Data Stores)
執(zhí)行
智能體端執(zhí)行
客戶端執(zhí)行
智能體端執(zhí)行
用例
· 開發(fā)人員希望智能體控制與 API 端點(diǎn)的交互
· 當(dāng)利用本機(jī)預(yù)構(gòu)建擴(kuò)展時(shí)非常有用(例如 Vertex Search、代碼解釋器等)
· 多跳規(guī)劃和 API 調(diào)用(即下一個(gè)智能體操作取決于上一個(gè)操作/API 調(diào)用的輸出)
· 安全性或身份驗(yàn)證限制阻止智能體直接調(diào)用 API
· 時(shí)序限制或操作順序限制阻止智能體實(shí)時(shí)進(jìn)行 API 調(diào)用,。(即批處理,、人工干預(yù)審查等)
· 未暴露于互聯(lián)網(wǎng)或 Google 系統(tǒng)無法訪問的 API
· 開發(fā)人員希望使用以下任何數(shù)據(jù)類型實(shí)現(xiàn)檢索增強(qiáng)生成 (RAG):
- 來自預(yù)索引域和 URL 的網(wǎng)站內(nèi)容
- PDF、Word 文檔,、CSV,、電子表格等格式的結(jié)構(gòu)化數(shù)據(jù)
- 關(guān)系/非關(guān)系數(shù)據(jù)庫
- HTML、PDF,、TXT 等格式的非結(jié)構(gòu)化數(shù)據(jù)

4. 通過定向?qū)W習(xí)提升模型性能

有效利用模型的關(guān)鍵在于其選擇正確工具的能力,,尤其是在生產(chǎn)環(huán)境中大規(guī)模使用工具時(shí)。 雖然一般訓(xùn)練有助于模型發(fā)展這項(xiàng)技能,,但現(xiàn)實(shí)世界的場(chǎng)景通常需要超出訓(xùn)練數(shù)據(jù)的知識(shí),。可以將其想象為基本烹飪技能和掌握特定菜系之間的區(qū)別,。兩者都需要基本的烹飪知識(shí),,但后者需要有針對(duì)性的學(xué)習(xí)才能獲得更細(xì)致的結(jié)果。

為了幫助模型獲得此類特定領(lǐng)域的知識(shí),,存在幾種方法:

  • · 情境學(xué)習(xí) (In-context learning): 這種方法在推理時(shí)為廣義模型提供提示,、工具和少量示例,,使其能夠“即時(shí)”學(xué)習(xí)如何以及何時(shí)將這些工具用于特定任務(wù)。ReAct 框架是自然語言中這種方法的一個(gè)示例,。
  • · 基于檢索的情境學(xué)習(xí) (Retrieval-based in-context learning): 該技術(shù)通過從外部存儲(chǔ)器(例如 Vertex AI 擴(kuò)展中的“示例存儲(chǔ)”或前面提到的基于數(shù)據(jù)存儲(chǔ)的 RAG 架構(gòu))中檢索最相關(guān)的信息,、工具和相關(guān)示例來動(dòng)態(tài)填充模型提示。
  • · 基于微調(diào)的學(xué)習(xí) (Fine-tuning based learning): 在推理之前,,使用更大的特定示例數(shù)據(jù)集來訓(xùn)練模型,。這有助于模型在接收任何用戶查詢之前了解何時(shí)以及如何應(yīng)用某些工具。

5. 使用 LangChain 快速構(gòu)建智能體原型

LangChain 和 LangGraph 是兩個(gè)流行的開源庫,,允許用戶通過將邏輯,、推理和工具調(diào)用序列“鏈接”在一起來構(gòu)建自定義智能體,以回答用戶的查詢,。我們可以使用 gemini-1.5-flash-001 模型和一些簡(jiǎn)單的工具來快速構(gòu)建一個(gè)智能體原型,。例如,代碼片段 8 展示了如何使用 LangChain 和 LangGraph 構(gòu)建一個(gè)簡(jiǎn)單的智能體,,該智能體可以利用 SerpAPI(用于 Google 搜索)和 Google Places API 來回答用戶的多階段查詢,。

圖片

代碼片段 8. 基于 LangChain 和 LangGraph 的智能體及工具示例

執(zhí)行該程序后,您可以在代碼片段 9 中看到示例輸出,。

圖片

代碼片段 9. 代碼片段 8 中程序的輸出

6. 生產(chǎn)環(huán)境中的智能體應(yīng)用:Vertex AI Agents

雖然本白皮書探討了智能體的核心組件,,但構(gòu)建生產(chǎn)級(jí)應(yīng)用程序需要將它們與其他工具(如用戶界面、評(píng)估框架和持續(xù)改進(jìn)機(jī)制)集成,。Google 的 Vertex AI 平臺(tái)提供了一個(gè)完全托管的環(huán)境,,集成了上述所有基本元素,可以用于構(gòu)建生產(chǎn)級(jí)的智能體應(yīng)用,。該平臺(tái)提供了一套開發(fā)工具,,可用于測(cè)試、評(píng)估,、衡量智能體性能、調(diào)試和提高已開發(fā)智能體的整體質(zhì)量,。這使開發(fā)人員可以專注于構(gòu)建和完善其智能體,,而基礎(chǔ)架構(gòu)、部署和維護(hù)的復(fù)雜性則由平臺(tái)本身管理,。

在圖 15 中,,我們提供了一個(gè)在 Vertex AI 平臺(tái)上構(gòu)建的智能體的示例架構(gòu),該平臺(tái)使用了諸如 Vertex 智能體構(gòu)建器,、Vertex 擴(kuò)展,、Vertex 函數(shù)調(diào)用和 Vertex 示例存儲(chǔ)等各種功能。該架構(gòu)包括許多生產(chǎn)就緒應(yīng)用程序所需的各種組件,。

圖片

圖 15:基于 Vertex AI 平臺(tái)的端到端智能體架構(gòu)示例 - 該圖展示了在 Vertex AI 平臺(tái)上構(gòu)建的智能體示例架構(gòu),,包括用戶界面,、智能體、函數(shù),、擴(kuò)展,、模型以及與外部 API(如 Google Places API 和向量搜索 API)的交互。

7. 總結(jié):智能體的未來展望

智能體通過利用工具訪問實(shí)時(shí)信息,、建議現(xiàn)實(shí)世界的行動(dòng)以及自主規(guī)劃和執(zhí)行復(fù)雜任務(wù),,擴(kuò)展了語言模型的能力。智能體的核心是編排層,,它利用各種推理技術(shù)來指導(dǎo)其行動(dòng),。工具,如擴(kuò)展,、函數(shù)和數(shù)據(jù)存儲(chǔ),,充當(dāng)智能體通往外部世界的鑰匙。

智能體的未來充滿了令人興奮的進(jìn)步,,我們才剛剛開始觸及可能性的表面,。隨著工具變得更加復(fù)雜以及推理能力得到增強(qiáng),智能體將有能力解決日益復(fù)雜的問題,?!爸悄荏w鏈”的戰(zhàn)略方法也將繼續(xù)獲得發(fā)展勢(shì)頭。通過結(jié)合各個(gè)領(lǐng)域的專業(yè)智能體,,我們可以創(chuàng)造一種“智能體專家組合”的方法,,能夠在各個(gè)行業(yè)和問題領(lǐng)域提供卓越的結(jié)果。

構(gòu)建復(fù)雜的智能體架構(gòu)需要迭代的方法,。實(shí)驗(yàn)和改進(jìn)是為特定業(yè)務(wù)案例和組織需求找到解決方案的關(guān)鍵,。通過利用這些基本組件中每一個(gè)的優(yōu)勢(shì),我們可以創(chuàng)建有影響力的應(yīng)用程序,,擴(kuò)展語言模型的能力并驅(qū)動(dòng)現(xiàn)實(shí)世界的價(jià)值,。

8. 尾注 (References)

  1. 1. ReAct: Synergizing Reasoning and Acting in Language Models - https:///abs/2210.03629
  2. 2. Chain-of-Thought Prompting Elicits Reasoning in Large Language Models - https:///pdf/2201.11903.pdf
  3. 3. Self-Consistency Improves Chain of Thought Reasoning in Language Models - https:///abs/2203.11171
  4. 4. Active Prompting with Chain-of-Thought for Large Language Models - https:///pdf/2302.12246.pdf
  5. 5. Multimodal Chain-of-Thought Reasoning in Language Models - https:///abs/2302.00923
  6. 6. Tree of Thoughts: Deliberate Problem Solving with Large Language Models - https:///abs/2305.10601
  7. 7. Large Language Model Guided Tree-of-Thought - https:///abs/2305.08291
  8. 8. Google Gemini Application - http://gemini.google.com
  9. 9. OpenAPI Specification - https:///specification/

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多