智能體是什么?全面深度了解AI智能體(AI Agents)

智能體是什么?

智能體的英文是Agent,AI業(yè)界對(duì)智能體提出了各種定義。2025年智能體被定義為:一種解決通用問(wèn)題的工作流。從軟件工程的角度看來(lái),智能體是一種基于大語(yǔ)言模型的,具備規(guī)劃思考能力、記憶能力、使用工具函數(shù)的能力,能自主完成給定任務(wù)流程的計(jì)算機(jī)機(jī)器人。

v2-aa0216b0594e0d1b91d0e15c54da3aec_1440w.webp-2
圖1. 由LLM驅(qū)動(dòng)的智能體系統(tǒng)

如圖1所示,在基于LLM的智能體中,LLM的充當(dāng)著智能體的“大腦”的角色,同時(shí)還有3個(gè)關(guān)鍵部分:

  • 規(guī)劃(Planning)?: 智能體會(huì)把大型任務(wù)分解為子任務(wù),并規(guī)劃執(zhí)行任務(wù)的流程;智能體會(huì)對(duì)任務(wù)執(zhí)行的過(guò)程進(jìn)行思考和反思,從而決定是繼續(xù)執(zhí)行任務(wù),或判斷任務(wù)完結(jié)并終止運(yùn)行。
  • 記憶(Memory): 短期記憶,是指在執(zhí)行任務(wù)的過(guò)程中的上下文,會(huì)在子任務(wù)的執(zhí)行過(guò)程產(chǎn)生和暫存,在任務(wù)完結(jié)后被清空。長(zhǎng)期記憶是長(zhǎng)時(shí)間保留的信息,一般是指外部知識(shí)庫(kù),通常用向量數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)和檢索。
  • 工具使用(Tool use)?為智能體配備工具API,比如:計(jì)算器、搜索工具、代碼執(zhí)行器、數(shù)據(jù)庫(kù)查詢工具等。有了這些工具API,智能體就可以是物理世界交互,解決實(shí)際的問(wèn)題。

大語(yǔ)言模型 vs 人類

大語(yǔ)言模型很強(qiáng)大,就像人類的大腦一樣擁有思考的能力。如果人類只有大腦,沒有四肢,沒有工具,是沒辦法與世界互動(dòng)的。如果我們能給大模型配備上四肢和工具呢?大模型是不是就會(huì)打破次元壁,從數(shù)字世界走向現(xiàn)實(shí)世界,與現(xiàn)實(shí)世界實(shí)現(xiàn)夢(mèng)幻聯(lián)動(dòng)呢?

大語(yǔ)言模型(后文將用LLM指代)可以接受輸入,可以分析&推理、可以輸出文字\代碼\媒體。然而,其無(wú)法像人類一樣,擁有規(guī)劃思考能力、運(yùn)用各種工具與物理世界互動(dòng),以及擁有人類的記憶能力。

  • LLM:接受輸入、思考、輸出
  • 人類LLM(接受輸入、思考、輸出)+?記憶?+?工具?+?規(guī)劃

如果我們給LLM配備上:與物理世界互動(dòng)的工具、記憶能力、規(guī)劃思考能力。LLM 是否就可以像人類一樣,能夠自主思考并規(guī)劃完成任務(wù)的過(guò)程,能檢索記憶,能使用各種工具提高效率,最終完成某個(gè)任務(wù)。

智能體能做什么?

相信看到這里,我們已經(jīng)對(duì)智能體有了基本的認(rèn)知。如果你還覺得智能體這個(gè)概念有點(diǎn)抽象,沒關(guān)系,現(xiàn)在我們來(lái)點(diǎn)好玩的,一起來(lái)看看智能體能玩出什么花樣?

智能體之調(diào)研員

調(diào)研員智能體,可以根據(jù)用戶的調(diào)研問(wèn)題,從搜索引擎上搜索資料并總結(jié),然后生成調(diào)研報(bào)告。 這里使用MetaGPT框架中的調(diào)研員?示例來(lái)展示一個(gè)智能體的實(shí)際作用及其構(gòu)成。

運(yùn)行一下試試

  • 輸入調(diào)研課題:調(diào)研特斯拉FSD和華為ADS這兩個(gè)自動(dòng)駕駛系統(tǒng)
~ python3 -m metagpt.roles.researcher "特斯拉FSD vs 華為ADS"
  • 智能體執(zhí)行調(diào)研
v2-000b1114e4bb0cd91dde015e6aa12b8d_1440w.webp-2
圖2. 從搜索引擎進(jìn)行搜索并獲取Url地址列表
v2-78005e065514ac5888bed71dc0e097d4_1440w.webp-2
圖3. 瀏覽網(wǎng)頁(yè)并總結(jié)網(wǎng)頁(yè)內(nèi)容
v2-13c31c895d9f242fbd60611ca45f9700_1440w.webp-2
圖4. 生成調(diào)研報(bào)告
  • 輸出調(diào)研報(bào)告

metaGPT生成并保存了調(diào)研報(bào)告

文件:特斯拉FSD vs 華為ADS.md

v2-fe7732569b41e8fb048968ed762f7267_1440w.webp-2
圖5

拆解調(diào)研員

調(diào)研員智能體構(gòu)成

回到前文所說(shuō)的,如果僅有LLM這個(gè)大腦,是無(wú)法完成整個(gè)調(diào)研流程的。在調(diào)研員智能體中,為L(zhǎng)LM大腦配備了規(guī)劃、工具、記憶的能力,使得他能獨(dú)立完成調(diào)研任務(wù),下面列出其基本構(gòu)成,構(gòu)成分三部分:角色、工具、記憶。在角色中,會(huì)注冊(cè)各種工具,定義思考規(guī)劃的方式,以及本身具備的短期記憶能力。

類型 名稱 說(shuō)明
角色 Researcher 調(diào)研員智能體,從網(wǎng)絡(luò)進(jìn)行搜索并總結(jié)報(bào)告。通過(guò)LLM提示工程(Prompt Engineering),讓LLM以調(diào)研員的角色去規(guī)劃和拆分任務(wù),使用提供的工具,完成調(diào)研過(guò)程,生成調(diào)研報(bào)告。在定義角色時(shí),會(huì)為其注冊(cè)下面列出的各項(xiàng)工具
工具 CollectLinks 問(wèn)題拆解,從搜索引擎進(jìn)行搜索,并獲取Url地址列表。該工具基于LLM提示工程和搜索引擎實(shí)現(xiàn),其功能如下:(1)將問(wèn)題拆分成多個(gè)適合搜索的子問(wèn)題(基于LLM提示工程)。(2)通過(guò)搜索引擎搜索子問(wèn)題。(3)篩選出與調(diào)研問(wèn)題有關(guān)的Url,并根據(jù)網(wǎng)站可靠性對(duì)url列表進(jìn)行排序(基于LLM提示工程)
工具 WebBrowseAndSummarize 瀏覽網(wǎng)頁(yè)并總結(jié)網(wǎng)頁(yè)內(nèi)容。由兩個(gè)工具組成:瀏覽網(wǎng)頁(yè)和總結(jié)網(wǎng)絡(luò)內(nèi)容。(1)瀏覽網(wǎng)頁(yè)是通過(guò)封裝的 WebBrowserEngine 工具訪問(wèn)搜索引擎實(shí)現(xiàn)的。(2)總結(jié)搜索結(jié)果是通過(guò)LLM提示工程實(shí)現(xiàn)。
工具 ConductResearch 生成調(diào)研報(bào)告?;贚LM提示工程的工具,該工具會(huì)整合 WebBrowseAndSummarize 的輸出給到LLM,讓LLM生成調(diào)研報(bào)告
記憶 short-term memory 短期記憶能力,metaGPT框架封裝了短期記憶的能力,用于在任務(wù)執(zhí)行周期內(nèi)保存和檢索上下文記憶,如CollectLinks 和 WebBrowseAndSummarize 等工具的執(zhí)行結(jié)果

圖解調(diào)研員智能體

v2-8b0104643e8c9cb035f383a3fb706fdd_1440w.webp-2
圖6

智能體的關(guān)鍵構(gòu)成

v2-aa0216b0594e0d1b91d0e15c54da3aec_1440w.webp-2

智能體 如上圖所示,在基于LLM的智能體中,LLM的充當(dāng)著智能體的“大腦”的角色,同時(shí)還有3個(gè)關(guān)鍵部分:規(guī)劃(Planning)、記憶(Memory)、工具使用(Tool use)

規(guī)劃(Planing)

規(guī)劃,可以為理解觀察和思考。如果用人類來(lái)類比,當(dāng)我們接到一個(gè)任務(wù),我們的思維模式可能會(huì)像下面這樣:

  • 我們首先會(huì)思考怎么完成這個(gè)任務(wù)。
  • 然后我們會(huì)審視手頭上所擁有的工具,以及如何使用這些工具高效地達(dá)成目的。
  • 我們會(huì)把任務(wù)拆分成子任務(wù)(就像我們會(huì)使用TAPD做任務(wù)拆分)。
  • 在執(zhí)行任務(wù)的時(shí)候,我們會(huì)對(duì)執(zhí)行過(guò)程進(jìn)行反思和完善,吸取教訓(xùn)以完善未來(lái)的步驟
  • 執(zhí)行過(guò)程中思考任務(wù)何時(shí)可以終止

這是人類的規(guī)劃能力,我們希望智能體也擁有這樣的思維模式,因此可以通過(guò)LLM提示工程,為智能體賦予這樣的思維模式。在智能體中,最重要的是讓LLM具備這以下兩個(gè)能力:

子任務(wù)分解

通過(guò)LLM使得智能體可以把大型任務(wù)分解為更小的、更可控的子任務(wù),從而能夠有效完成復(fù)雜的任務(wù)。

思維鏈(Chain of Thoughts, CoT)

思維鏈已經(jīng)是一種比較標(biāo)準(zhǔn)的提示技術(shù),能顯著提升LLM完成復(fù)雜任務(wù)的效果。當(dāng)我們對(duì)LLM這樣要求「think step by step」,會(huì)發(fā)現(xiàn)LLM會(huì)把問(wèn)題分解成多個(gè)步驟,一步一步思考和解決,能使得輸出的結(jié)果更加準(zhǔn)確。這是一種線性的思維方式。

思維鏈的prompt可以像是如下這樣(這里只是一個(gè)極簡(jiǎn)的prompt,實(shí)際會(huì)按需進(jìn)行prompt調(diào)優(yōu)):

template="Answer the question: Q: {question}? Let's think step by step:"

思維樹(Tree-of-thought, ToT)

對(duì)CoT的進(jìn)一步擴(kuò)展,在思維鏈的每一步,推理出多個(gè)分支,拓?fù)湔归_成一棵思維樹。使用啟發(fā)式方法評(píng)估每個(gè)推理分支對(duì)問(wèn)題解決的貢獻(xiàn)。選擇搜索算法,使用廣度優(yōu)先搜索(BFS)或深度優(yōu)先搜索(DFS)等算法來(lái)探索思維樹,并進(jìn)行前瞻和回溯

v2-3df2fa7662cb2746723942ef2c80ba62_1440w.webp-2
圖7

反思和完善

智能體在執(zhí)行任務(wù)過(guò)程中,通過(guò)LLM對(duì)完成的子任務(wù)進(jìn)行反思,從錯(cuò)誤中吸取教訓(xùn),并完善未來(lái)的步驟,提高任務(wù)完成的質(zhì)量。同時(shí)反思任務(wù)是否已經(jīng)完成,并終止任務(wù)。

ReAct

(剛接觸到這個(gè)單詞時(shí),腦子里冒出來(lái)的是 「React是由Facebook開源的一個(gè)進(jìn)行創(chuàng)建用戶界面的一款JavaScript庫(kù)….」,打住,我們好像走錯(cuò)片場(chǎng)了,此React非彼ReAct ?﹏? )

ReAct(Yao et al. 2023) ,《ReAct: Synergizing Reasoning and Acting in Language Models》 這篇論文提出一種用于增強(qiáng)大型語(yǔ)言模型的方法,它通過(guò)結(jié)合推理(Reasoning)和行動(dòng)(Acting)來(lái)增強(qiáng)推理和決策的效果。

  • 推理(Reasoning):?LLM基于「已有的知識(shí)」或「行動(dòng)(Acting)后獲取的知識(shí)」,推導(dǎo)出結(jié)論的過(guò)程。
  • 行動(dòng)(Acting):?LLM根據(jù)實(shí)際情況,使用工具獲取知識(shí),或完成子任務(wù)得到階段性的信息。

為什么結(jié)合推理和行動(dòng),就會(huì)有效增強(qiáng)LLM完成任務(wù)的能力?這個(gè)問(wèn)題其實(shí)很好回答,我們用上面的「調(diào)研員智能體」舉例,我提出了問(wèn)題:「特斯拉FSD 對(duì)比華為ADS」,下面列出幾種不同規(guī)劃模式的推演:

  • 僅推理(Reasoning Only):LLM僅僅基于已有的知識(shí)進(jìn)行推理,生成答案回答這個(gè)問(wèn)題。很顯然,如果LLM本身不具備這些知識(shí),可能會(huì)出現(xiàn)幻覺,胡亂回答一通。
  • 僅行動(dòng)(Acting Only): 大模型不加以推理,僅使用工具(比如搜索引擎)搜索這個(gè)問(wèn)題,得出來(lái)的將會(huì)是海量的資料,不能直接回到這個(gè)問(wèn)題。
  • 推理+行動(dòng)(Reasoning and Acting): LLM 首先會(huì)基于已有的知識(shí),并審視擁有的工具。當(dāng)發(fā)現(xiàn)已有的知識(shí)不足以回答這個(gè)問(wèn)題,則會(huì)調(diào)用工具,比如:搜索工具、生成報(bào)告等,然后得到新的信息,基于新的信息重復(fù)進(jìn)行推理和行動(dòng),直到完成這個(gè)任務(wù)。其推理和行動(dòng)的步驟會(huì)是如下這樣:
推理1:當(dāng)前知識(shí)不足以回答這個(gè)問(wèn)題,要回答該問(wèn)題,需要知道什么是「特斯拉FSD 」和「華為ADS」
行動(dòng)1:使用搜索工具搜索「特斯拉FSD 」和「華為ADS」的資料
觀察1:總結(jié)行動(dòng)1的內(nèi)容

推理2:基于行動(dòng)1和觀察1的信息,得知這是關(guān)于兩個(gè)自動(dòng)駕駛提供商的方案對(duì)比,基于已有的信息,現(xiàn)在需要生成報(bào)告
行動(dòng)2:使用生成報(bào)告的工具,生成調(diào)研報(bào)告
觀察2:任務(wù)完成
v2-d99cf19ba9a680cc270eb77f595353d8_1440w.webp-2
圖8

通過(guò)巧妙的promt提示設(shè)計(jì),使得LLM重復(fù)地執(zhí)行推理和行動(dòng),最終完成任務(wù)。ReAct的prompt模版的大致思路為:

Thought(思考): ...
Action(行動(dòng)): ...
Observation(觀察): ...

Thought(思考): ...
Action(行動(dòng)): ...
Observation(觀察): ...

...(Repeated many times(重復(fù)多次))

記憶(Memory)

記憶是什么?當(dāng)我們?cè)谒伎歼@個(gè)問(wèn)題,其實(shí)人類的大腦已經(jīng)在使用記憶。記憶是大腦存儲(chǔ)、保留和回憶信息的能力。記憶可以分為不同的類型:

  1. 短期記憶(或工作記憶):這是一種持續(xù)時(shí)間較短的記憶,能夠暫時(shí)存儲(chǔ)和處理有限數(shù)量的信息。例如,記住一個(gè)電話號(hào)碼直到撥打完畢。
  2. 長(zhǎng)期記憶:這是一種持續(xù)時(shí)間較長(zhǎng)的記憶,可以存儲(chǔ)大量信息,從幾分鐘到一生。長(zhǎng)期記憶可以進(jìn)一步分為顯性記憶和隱性記憶。顯性記憶,可以有意識(shí)地回憶和表達(dá)的信息,顯性記憶又可以分為情景記憶(個(gè)人經(jīng)歷的具體事件)和語(yǔ)義記憶(一般知識(shí)和概念)。隱性記憶,這種記憶通常是無(wú)意識(shí)的,涉及技能和習(xí)慣,如騎自行車或打字。

仿照人類的記憶機(jī)制,智能體實(shí)現(xiàn)了兩種記憶機(jī)制:

  • 短期記憶:在當(dāng)前任務(wù)執(zhí)行過(guò)程中所產(chǎn)生的信息,比如某個(gè)工具或某個(gè)子任務(wù)執(zhí)行的結(jié)果,會(huì)寫入短期記憶中。記憶在當(dāng)前任務(wù)過(guò)程中產(chǎn)生和暫存,在任務(wù)完結(jié)后被清空。
  • 長(zhǎng)期記憶:長(zhǎng)期記憶是長(zhǎng)時(shí)間保留的信息。一般是指外部知識(shí)庫(kù),通常用向量數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)和檢索。

工具使用(Tool use)

LLM是數(shù)字世界中的程序,想要與現(xiàn)實(shí)世界互動(dòng)、獲取未知的知識(shí),或是計(jì)算某個(gè)復(fù)雜的公式等,都離不開不工具。所以我們需要為智能體配備各種工具以及賦予它使用工具的能力。

工具是什么?它可以是錘子、螺絲刀,也可以是函數(shù)(function)、軟件開發(fā)工具包(sdk)。工具是人類智慧的具象化,擴(kuò)展我們的能力,提升工作效率。在智能體中,工具就是函數(shù)(Function),工具使用就是調(diào)用函數(shù)(Call Function)。

在LLM 中實(shí)現(xiàn)函數(shù)調(diào)用,使用到LLM的這個(gè)能力:

Function Calling

Function Calling 是一種實(shí)現(xiàn)大型語(yǔ)言模型連接外部工具的機(jī)制。通過(guò)API調(diào)用LLM時(shí),調(diào)用方可以描述函數(shù),包括函數(shù)的功能描述、請(qǐng)求參數(shù)說(shuō)明、響應(yīng)參數(shù)說(shuō)明,讓LLM根據(jù)用戶的輸入,合適地選擇調(diào)用哪個(gè)函數(shù),同時(shí)理解用戶的自然語(yǔ)言,并轉(zhuǎn)換為調(diào)用函數(shù)的請(qǐng)求參數(shù)(通過(guò)JSON格式返回)。調(diào)用方使用LLM返回的函數(shù)名稱和參數(shù),調(diào)用函數(shù)并得到響應(yīng)。最后,如果需求,把函數(shù)的響應(yīng)傳給LLM,讓LLM組織成自然語(yǔ)言回復(fù)用戶。

function calling 具體工作流程如下圖所示:

v2-257119e328cf8c7f9f242ff4c80c6a4a_1440w.webp-2
圖9

不同LLM的API接口協(xié)議會(huì)有所不同,下文將以OpenAI的API協(xié)議為例,說(shuō)明如何實(shí)現(xiàn)Function Calling

函數(shù)描述

我們可以按照智能體的需要來(lái)實(shí)現(xiàn)函數(shù),比如前文的「調(diào)研員」智能體,為其實(shí)現(xiàn)了這些函數(shù):WebBrowseAndSummarize:瀏覽網(wǎng)頁(yè)并總結(jié)網(wǎng)頁(yè)內(nèi)容;ConductResearch:生成調(diào)研報(bào)告等。如果是一個(gè)智能家居的智能體,可能會(huì)需要這些函數(shù):開關(guān)燈、開光空調(diào)、獲取環(huán)境信息等。函數(shù)的實(shí)現(xiàn)在這里不展開贅述,一個(gè)函數(shù)可以自行編碼實(shí)現(xiàn),也可以通過(guò)調(diào)用外部API實(shí)現(xiàn)。

假設(shè)你的函數(shù)已經(jīng)被實(shí)現(xiàn),我們需要向LLM描述這個(gè)函數(shù),函數(shù)描述的必備要素:

  • 函數(shù)名
  • 函數(shù)的功能描述
  • 函數(shù)的請(qǐng)求參數(shù)說(shuō)明
  • 函數(shù)的相應(yīng)參數(shù)說(shuō)明(可選)

「查詢最近天氣」的函數(shù)描述:

tools = [
{
        "type": "function",
        "function": {
            "name": "get_n_day_weather_forecast",
            "description": "獲取最近n天的天氣預(yù)報(bào)",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "城市或鎮(zhèn)區(qū) 如:深圳市南山區(qū)",
                    },
                    "format": {
                        "type": "string",
                        "enum": ["celsius", "fahrenheit"],
                        "description": "要使用的溫度單位,攝氏度 or 華氏度",
                    },
                    "num_days": {
                        "type": "integer",
                        "description": "預(yù)測(cè)天數(shù)",
                    }
                },
                "required": ["location", "format", "num_days"]
            },
        }
    }
]

調(diào)用LLM獲得函數(shù)的請(qǐng)求參數(shù)

Function Calling 是通過(guò)請(qǐng)求LLM的chat API 實(shí)現(xiàn)的,在支持Function Calling 模型的 chat API 參數(shù)中,會(huì)有一個(gè)functions參數(shù) (或tools,不同LLM的參數(shù)會(huì)有所不同) ,通過(guò)傳入這個(gè)參數(shù),大模型則會(huì)知道擁有哪些參數(shù)可供使用。并且會(huì)根據(jù)用戶的輸入,推理出應(yīng)該調(diào)用哪些函數(shù),并將自然語(yǔ)言轉(zhuǎn)成函數(shù)的請(qǐng)求參數(shù),返回給請(qǐng)求方。下面以 OpenAI 的SDK 舉例:

from openai import OpenAI

def chat_completion_request(messages, tools=None, tool_choice=None, model="gpt-3.5-turbo"):
    try:
        response = client.chat.completions.create(
            model=model,
            messages=messages,
            tools=tools,
            tool_choice=tool_choice,
        )
        return response
    except Exception as e:
        print("Unable to generate ChatCompletion response")
        print(f"Exception: {e}")
        return e


if __name__ == "__main__":
    messages = []
    messages.append({"role": "system", "content": "不要假設(shè)將哪些值輸入到函數(shù)中。如果用戶請(qǐng)求不明確,請(qǐng)要求澄清"})
    messages.append({"role": "user", "content": "未來(lái)5天深圳南山區(qū)的天氣怎么樣"})
    chat_response = chat_completion_request(
        messages, tools=tools
    )

	tool_calls = chat_response.choices[0].message.tool_calls
	print("===回復(fù)===")
	print(tool_calls)

LLM 將會(huì)返回get_n_day_weather_forecast函數(shù)的調(diào)用參數(shù):

===回復(fù)===
[ChatCompletionMessageToolCall(id='call_7qGdyUEWp34ihubinIUCTXyH', function=Function(arguments='{"location":"深圳市南山區(qū)","format":"celsius","num_days":5}', name='get_n_day_weather_forecast'), type='function')]

// 格式化看看:chat_response.choices[0].message.tool_calls:
[
  {
    "id": "call_7qGdyUEWp34ihubinIUCTXyH",
    "function": {
      "arguments": {
        "location": "深圳市南山區(qū)",
        "format": "celsius",
        "num_days": 5
      },
      "name": "get_n_day_weather_forecast"
    },
    "type": "function"
  }
]

調(diào)用函數(shù)

調(diào)用方獲得LLM返回的函數(shù)調(diào)用信息(函數(shù)名稱和調(diào)用參數(shù))后,自行調(diào)用函數(shù),并得到函數(shù)執(zhí)行的響應(yīng)。如果有需要,還可以把函數(shù)執(zhí)行的響應(yīng)追加到chat API 的對(duì)話中傳給LLM,讓LLM組織成自然語(yǔ)言回復(fù)用戶。

# 執(zhí)行函數(shù)
for tool_call in tool_calls:
    function = tool_call.function.name
    arguments_list = json.loads(tool_call.function.arguments)
    function_to_call = globals().get(function)
    result = function_to_call(**arguments_list)
    print("===" + function + "===")
    print(result)

    # 把函數(shù)調(diào)用結(jié)果加入到對(duì)話歷史中
    messages.append(
        {
            "tool_call_id": tool_call.id,  # 用于標(biāo)識(shí)函數(shù)調(diào)用的 ID
            "role": "user",
            "name": function,
            "content": "函數(shù)執(zhí)行結(jié)果為:" + str(result)
        }
    )
# 函數(shù)執(zhí)行結(jié)果傳給LLM,組織成自然語(yǔ)言回復(fù)用戶
chat_response = chat_completion_request(
    messages, tools=tools
)
print("===回復(fù)===")
print(chat_response.choices[0].message.content)

執(zhí)行結(jié)果:

===get_n_day_weather_forecast===
[{'date': '2023-04-01', 'location': '深圳市南山區(qū)', 'temperature': '20°C', 'description': '晴朗'}, {'date': '2023-04-02', 'location': '深圳市南山區(qū)', 'temperature': '21°C', 'description': '多云'}, {'date': '2023-04-03', 'location': '深圳市南山區(qū)', 'temperature': '22°C', 'description': '晴朗'}, {'date': '2023-04-04', 'location': '深圳市南山區(qū)', 'temperature': '23°C', 'description': '多云'}, {'date': '2023-04-05', 'location': '深圳市南山區(qū)', 'temperature': '24°C', 'description': '晴朗'}]
===回復(fù)===
未來(lái)5天深圳南山區(qū)的天氣情況如下:
- 4月1日:晴朗,溫度20°C
- 4月2日:多云,溫度21°C
- 4月3日:晴朗,溫度22°C
- 4月4日:多云,溫度23°C
- 4月5日:晴朗,溫度24°C

請(qǐng)注意天氣預(yù)報(bào)僅供參考,實(shí)際情況可能會(huì)有所變化。

智能體的開發(fā)框架

現(xiàn)在(2024年5月)如果你想要開發(fā)一個(gè)AI智能體,已經(jīng)比大模型爆發(fā)的初期方便太多了,隨著AI應(yīng)用需求的持續(xù)火熱,智能體框架層出不窮。智能體開發(fā)框架,會(huì)抽象和封裝那些被高頻使用的模塊,如記憶能力、規(guī)劃能力、RAG能力、大模型調(diào)用等。使用智能體框架,可讓幫助你快速搭建智能體。

根據(jù)?awesome-ai-agents?的整理,無(wú)論是開源的還是閉源的,智能體應(yīng)用框架在各個(gè)領(lǐng)域,比如自定義智能體、編碼、研究、數(shù)據(jù)分析、多智能體等等,都有比較有代表性的產(chǎn)品可供選擇。

v2-f73d0876ae5e17d56135fe6e0bb99403_1440w.webp-2
圖10

上文曾使用到MetaGPT,MetaGPT 是一個(gè)多智能體框架,多智能體框架可以幫你開發(fā)一個(gè)由多個(gè)不同職責(zé)的智能體組合起來(lái)的多智能體。舉個(gè)例子,如果我們想開發(fā)一個(gè)多智能體軟件團(tuán)隊(duì),該軟件團(tuán)隊(duì)可以根據(jù)用戶需求交付代碼,其內(nèi)部會(huì)通過(guò)測(cè)試代碼、評(píng)審代碼來(lái)提升代碼質(zhì)量。該多智能體將包含:開發(fā)(coder)、測(cè)試(tester)、評(píng)審人(reviewer)這三個(gè)不同職責(zé)的智能體,他們各司其職,互相協(xié)作完成任務(wù)。下圖的左側(cè)是多智能體的協(xié)作流程,右側(cè)是單智能體的工作流程。

v2-4d24cbcb9377e5b6b73eafd4b4cb532d_1440w.webp-2
圖11

展望

隨著大模型的百花齊放,LLM 會(huì)支持更長(zhǎng)的上下文、更大的參數(shù)規(guī)模,其推理能力也會(huì)愈發(fā)強(qiáng)大。因此,基于大模型搭建的智能體(AI Agent)的能力邊界也在不斷突破。 通過(guò)智能體技術(shù),我們可以創(chuàng)建各種各樣的AI應(yīng)用,比如:Copilot、DB-GPT等等,一些AI應(yīng)用已經(jīng)成為工作生活中不可缺少的存在。相信AI應(yīng)用的將會(huì)快速全面地重構(gòu)我們?cè)?jīng)習(xí)以為常的軟件形態(tài)和交互方式,以及提升人類的生產(chǎn)效率。

引用:一文帶你了解智能體(Agent)