自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

解碼通用 AI Agent:七步構(gòu)建你的智能系統(tǒng)

人工智能
為什么要構(gòu)建通用 Agent?因為這是一個很好的工具,可以為我們的目標(biāo)使用場景提供原型,并為設(shè)計我們自己的定制 Agent 架構(gòu)奠定基礎(chǔ)。

LLM Agent 高層次概述(圖片由原文作者提供)LLM Agent 高層次概述(圖片由原文作者提供)

為什么要構(gòu)建通用 Agent?因為這是一個很好的工具,可以為我們的目標(biāo)使用場景提供原型,并為設(shè)計我們自己的定制 Agent 架構(gòu)奠定基礎(chǔ)。

在我們繼續(xù)深入之前,先快速介紹一下 LLM Agent。如果您已經(jīng)了解,可以跳過這部分。

1.什么是 LLM Agent?

LLM Agent 是一種程序,其執(zhí)行邏輯由底層模型控制。

從獨立的 LLM 到具備 Agent 功能的系統(tǒng)。(圖片由原文作者提供)從獨立的 LLM 到具備 Agent 功能的系統(tǒng)。(圖片由原文作者提供)

LLM Agent 與簡單的少量樣本提示(few-shot prompting)或預(yù)設(shè)工作流程的不同之處在于,它能夠制定并調(diào)整執(zhí)行用戶查詢所需的步驟。當(dāng)擁有諸如代碼執(zhí)行或網(wǎng)絡(luò)搜索等工具集的訪問權(quán)限時,Agent 能夠自主決定使用何種工具、如何使用,并依據(jù)輸出結(jié)果進行迭代優(yōu)化。這種靈活性使得系統(tǒng)能夠以極低的配置需求應(yīng)對多樣化的場景。

LLM Agent 架構(gòu)譜系。(圖片由原文作者提供)LLM Agent 架構(gòu)譜系。(圖片由原文作者提供)

Agent 架構(gòu)存在于一個連續(xù)的變化范圍內(nèi),從固定工作流程的可靠性到 autonomous agents 的高度靈活性。例如,像檢索增強生成(RAG)[1]這樣的預(yù)設(shè)流程,可以通過加入自我反思循環(huán)(self-reflection loop)來提升改進,使得程序在初次響應(yīng)不充分時能夠進行改進。另一方面,ReAct[2] Agent 可以配備預(yù)設(shè)流程作為其工具之一,實現(xiàn)一種既靈活又有條理的處理方式。架構(gòu)的選擇最終應(yīng)根據(jù)具體應(yīng)用場景以及可靠性與靈活性之間的平衡需求來決定。

想要更全面的了解,請觀看此視頻[3]。

2.讓我們從頭開始打造一款通用 LLM Agent

第一步:挑選合適的 LLM

挑選合適的模型是實現(xiàn)預(yù)期性能的關(guān)鍵。在決策時,需考慮多個因素,如版權(quán)許可、成本和語言支持。對于構(gòu)建 LLM Agent 來說,最關(guān)鍵的考慮因素是模型在核心任務(wù)上的表現(xiàn),例如編程、調(diào)用工具和邏輯推理。以下是一些評估標(biāo)準(zhǔn):

大規(guī)模多任務(wù)語言理解(MMLU)[4](用于推理能力評估)

伯克利大學(xué)的函數(shù)調(diào)用排行榜[5](用于工具的選擇與調(diào)用能力評估)

HumanEval[6] 和BigCodeBench[7] (用于編程能力評估)

此外,模型的處理窗口大小也非常重要。Agent 的工作流程可能會消耗大量 token —— 有時甚至超過 10 萬個 —— 因此,更大的處理窗口將大大提高處理效率。

當(dāng)前值得關(guān)注的模型(本文撰寫時)包括:

前沿模型:GPT4-o[8],Claude 3.5[9]

開源模型:Llama 3.2[10],Qwen 2.5[11]

一般來說,模型越大,性能越優(yōu)越。但能夠在本地運行的小型模型也是一個不錯的選擇。小型模型通常適用于較為簡單的場景,并且可能只能與一到兩個基礎(chǔ)工具對接。

第二步:設(shè)定智能體的控制邏輯(亦稱為通信結(jié)構(gòu))

圖片圖片

單智能體(single Agent)架構(gòu)圖示。(圖片由原文作者創(chuàng)作)

簡單大語言模型(LLM)與智能體(Agent)之間的核心差異,主要體現(xiàn)在系統(tǒng)提示詞上。

就 LLM 而言,系統(tǒng)提示詞[12]是指在模型開始處理用戶查詢前,提供給模型的一系列指令和背景信息。

我們可以通過系統(tǒng)提示詞來編碼大語言模型應(yīng)展現(xiàn)的智能體行為。

以下是一些常見的智能體行為模式,它們可以根據(jù)您的具體需求進行調(diào)整:

  • 工具運用:智能體判斷何時應(yīng)將問題轉(zhuǎn)交給適當(dāng)?shù)墓ぞ咛幚?,或是依賴自身知識庫。
  • 自我反思:智能體在回復(fù)用戶前,會審視并修正自己的答案。大多數(shù) LLM 系統(tǒng)也可以加入這一反思過程。
  • Reason-then-Act(ReAct):智能體通過反復(fù)推理來確定解決問題的方法,執(zhí)行操作,觀察結(jié)果,并決定是否需要進一步行動或直接給出回答。
  • Plan-then-Execute:智能體通過將任務(wù)細(xì)分為多個子步驟(如有必要)來進行事前規(guī)劃,然后逐一執(zhí)行這些步驟。

在構(gòu)建通用單智能體時,ReAct 和 Plan-then-Execute 這兩種模式通常是起步的最佳選擇。

常見智能體行為模式概覽。(圖片由原文作者創(chuàng)作)常見智能體行為模式概覽。(圖片由原文作者創(chuàng)作)

為了有效地實現(xiàn)這些行為模式,我們需要對提示詞進行精心設(shè)計??赡苓€需要采用結(jié)構(gòu)化生成技術(shù)[13],這意味著會調(diào)整 LLM 的輸出,使其符合特定的格式或架構(gòu),從而確保智能體的回復(fù)與我們所追求的溝通風(fēng)格保持一致。

舉例:下面是 Bee Agent Framework[14] 中一個 ReAct 風(fēng)格智能體的系統(tǒng)提示詞片段。

圖片圖片

第三步:設(shè)定智能體的核心指令

我們往往會想當(dāng)然地認(rèn)為,大語言模型(LLMs)一開箱就能提供一系列功能。雖然其中某些功能非常出色,但并非所有功能都能滿足我們的具體需求。要想實現(xiàn)期望的性能表現(xiàn),就需要在系統(tǒng)提示詞中詳細(xì)列出應(yīng)該包含以及不應(yīng)該包含的功能。

這可能涉及以下指令:

  • 智能體的名稱與職責(zé):智能體的命名及其預(yù)期執(zhí)行的任務(wù)。
  • 語言風(fēng)格與簡潔性:智能體在交流時應(yīng)該保持的正式或隨意程度,以及信息傳達(dá)的簡潔性。
  • 工具使用時機:確定何時應(yīng)該利用外部工具,何時依賴模型自身的知識庫。
  • 錯誤處理:當(dāng)工具使用或流程執(zhí)行出現(xiàn)問題時,智能體應(yīng)采取的行動。

示例:以下摘錄自 Bee Agent Framework[14] 的操作指南部分。

圖片圖片

第四步:定義并優(yōu)化核心工具集

工具就是賦予智能體超能力的魔法。只需一套定義明確的工具,就能實現(xiàn)廣泛的應(yīng)用功能。重要的工具包括代碼執(zhí)行、網(wǎng)絡(luò)檢索、文檔讀取和數(shù)據(jù)解析等。

對于每一項工具,都需要定義以下信息,并將其融入系統(tǒng)提示詞之中:

  • Tool Name:為這項功能起一個獨特且具描述性的名稱。
  • Tool Description:清晰地闡述該工具的作用及其使用時機。這有助于智能體判斷何時選用合適的工具。
  • Tool Input Schema:這是一個框架,它規(guī)定了必需和可選的參數(shù)、參數(shù)類型以及所有約束條件。智能體根據(jù)用戶的提問,利用這個框架來填充所需的輸入。
  • 提供一個指示或者指南,告訴用戶或者開發(fā)者這個工具應(yīng)該在哪里以及如何被運行。

例如:以下是從 Langchain 社區(qū)摘錄的 Arxiv 工具實現(xiàn)片段[15],需要 ArxivAPIWrapper[16] 的支持。

圖片圖片

在某些場景下,為了達(dá)到預(yù)期的性能,我們需要對工具進行優(yōu)化。這可能需要通過微調(diào)工具名稱或描述來進行提示詞工程,設(shè)置高級配置來處理常見問題,或是過濾、篩選工具的輸出結(jié)果。

第五步:確立內(nèi)存管理策略

大語言模型(LLMs)受限于它們的上下文窗口大小 —— 也就是它們一次性能夠“記下”的 tokens 數(shù)量。在多輪對話中,過往互動、工具輸出的長文本或者是 Agent 所依賴的額外上下文信息,都可能迅速占滿內(nèi)存空間。因此,制定一個有效的內(nèi)存管理策略是非常重要的。

在這里,所謂的“內(nèi)存”是指智能體(Agent)存儲、調(diào)用并利用歷史交互信息的能力。這種能力使得智能體能夠持續(xù)跟蹤對話上下文,基于之前的對話來優(yōu)化回答,從而提供更加定制化的用戶體驗。

常見的內(nèi)存管理策略包括:

  • Sliding Memory:只保留最近 k 輪對話的記憶,較早的對話則被舍棄。
  • Token Memory:只記下最近 n 個 tokens,其余的則被遺忘。
  • Summarized Memory:每輪對話后,使用 LLM 對對話內(nèi)容進行總結(jié)摘要,并丟棄原始信息。

另外,我們還可以利用 LLM 來識別關(guān)鍵信息(key moments),并將其存儲在長期記憶中。這樣,智能體就能“記住”用戶的重要信息,使用戶體驗更加個性化。

我們目前所討論的五個步驟為創(chuàng)建智能體奠定了基礎(chǔ)。那么,如果在這個階段我們通過 LLM 處理用戶查詢,會發(fā)生什么呢?

圖片圖片

示例如下:

圖片圖片

此時,智能體會生成一段原始的文本輸出。那么,我們?nèi)绾未_保智能體能夠執(zhí)行后續(xù)操作呢?這就需要引入解析和編排機制了。

第六步:解析智能體(Agent)的原始輸出

解析器的作用是將原始數(shù)據(jù)轉(zhuǎn)換成應(yīng)用程序能夠識別和使用的數(shù)據(jù)格式(例如,帶有特定屬性的對象)。

對于我們正在構(gòu)建的智能體,解析器必須能夠辨認(rèn)出我們在第二步中設(shè)定的通信結(jié)構(gòu),并將其轉(zhuǎn)換成結(jié)構(gòu)化數(shù)據(jù)輸出,例如 JSON 格式。這樣做可以讓應(yīng)用程序更加便捷地處理和執(zhí)行智能體的后續(xù)動作。

備注:某些模型供應(yīng)商,例如 OpenAI,可以默認(rèn)提供可直接解析的輸出。而對于其他模型,尤其是那些開源模型,可能需要額外進行解析配置。

第七步:規(guī)劃智能體的后續(xù)行動

最后一步是建立編排邏輯。這一邏輯決定了 LLM 輸出內(nèi)容結(jié)果之后的處理流程。依據(jù)輸出內(nèi)容,系統(tǒng)將執(zhí)行以下任一操作:

  1. 執(zhí)行工具調(diào)用,或者
  2. 給出回應(yīng) —— 這可能是對用戶查詢的直接回答,也可能是為了獲取更多信息而提出的后續(xù)問題。

擴展的單智能體架構(gòu)圖示。(圖片由原文作者提供)擴展的單智能體架構(gòu)圖示。(圖片由原文作者提供)

如果觸發(fā)了工具調(diào)用,工具的輸出信息會被送回 LLM(作為其工作記憶的一部分)。LLM 將據(jù)此決定如何利用這些新數(shù)據(jù):是繼續(xù)進行工具調(diào)用,還是直接向用戶返回答案。

以下是在代碼中實現(xiàn)這種編排邏輯的一個示例:

圖片圖片

大功告成!現(xiàn)在,你已經(jīng)有了一個能夠應(yīng)對多種場景的智能體系統(tǒng) —— 無論是進行競爭分析、深入研究,還是實現(xiàn)復(fù)雜工作流程的自動化。

3.多智能體(multi-agent)系統(tǒng)在什么情況下派上用場?

盡管當(dāng)前 LLM 的表現(xiàn)令人印象深刻,但它們在處理海量信息時卻顯得力不從心[17]。一旦上下文過多或工具使用過雜,模型便可能不堪重負(fù),導(dǎo)致性能下滑。面向多種用途的單智能體系統(tǒng)最終會觸及這一上限,尤其是在它們對 token 的消耗量之大已是眾所周知。

對于某些使用場景,部署多智能體系統(tǒng)或許更為合適。通過將任務(wù)分?jǐn)偨o多個智能體,可以有效避免單一 LLM Agent 的上下文負(fù)載過重,從而提高整體的執(zhí)行效率。

盡管如此,通用的單智能體系統(tǒng)仍然是原型開發(fā)的一個極好起點。它能幫助我們迅速驗證使用場景,并發(fā)現(xiàn)系統(tǒng)何時開始出現(xiàn)故障。在這個過程中,你將能夠:

  • 洞察哪些任務(wù)環(huán)節(jié)確實能通過 Agent 模式得到優(yōu)化。
  • 確定可以作為獨立流程分離出來,成為更大工作流程中一環(huán)的部分。
  • 從單智能體起步,這樣能夠獲得他人寶貴的經(jīng)驗、見解,以便在構(gòu)建更復(fù)雜系統(tǒng)時調(diào)整和優(yōu)化策略。

4.如何開始上手?

已經(jīng)迫不及待想要開始構(gòu)建智能體了嗎?使用框架是快速測試和迭代智能體配置的好方法。

  • 如果你打算使用 Llama 3 這樣的開源模型,不妨試試 Bee Agent Framework[18] 提供的初始模板[19]。
  • 如果你打算使用 OpenAI 這樣的前沿模型,試試 LangGraph[20] 提供的教程[21]可能會給你帶來幫助。

Thanks for reading! 

Hope you have enjoyed and learned new things from this blog!

About the authors

Maya Murad

Interdisciplinary techie currently tinkering with LLM agents. I write about AI, innovation ecosystems, and my creative coding experiments.

原文鏈接:https://towardsdatascience.com/build-a-general-purpose-ai-agent-c40be49e7400

責(zé)任編輯:武曉燕 來源: Baihai IDP
相關(guān)推薦

2011-09-05 17:36:24

2017-04-21 14:21:53

深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

2023-09-26 08:00:00

人工智能數(shù)據(jù)集

2019-03-10 20:37:14

Python編程語言

2010-08-10 13:15:36

Flex配置

2021-07-02 10:15:28

云計算邊緣計算

2016-11-22 13:25:28

Apache Spar大數(shù)據(jù)

2023-04-28 14:38:47

2009-10-12 11:11:49

2010-04-25 20:53:33

NTFS文件系統(tǒng)

2009-11-06 14:33:27

WCF代理節(jié)點

2009-07-30 18:08:14

IT與業(yè)務(wù)融合

2009-11-06 13:59:09

WCF Service

2011-07-18 16:11:32

域控制器

2014-04-30 15:20:06

數(shù)據(jù)挖掘

2022-02-25 11:27:15

云基礎(chǔ)設(shè)施云計算監(jiān)控

2017-03-03 10:09:30

2013-10-29 14:57:17

AngularJS項目

2018-02-24 18:12:30

2013-11-06 13:55:27

AngularJS服務(wù)
點贊
收藏

51CTO技術(shù)棧公眾號