本文是《從零手搓大模型實(shí)戰(zhàn)》學(xué)習(xí)的第三篇個(gè)人學(xué)習(xí)筆記,主要通過學(xué)習(xí)TinyAgent項(xiàng)目來總結(jié)開發(fā)智能體Agent的相關(guān)知識(shí),下面記錄下學(xué)習(xí)內(nèi)容以及相關(guān)心得喘漏。
注:TinyAgent相關(guān)學(xué)習(xí)內(nèi)容來自datawhalechina/tiny-universe
1.什么是智能體Agent? 關(guān)于Agent理解
智能體(Agent)是人工智能領(lǐng)域的一個(gè)概念描验,它是一個(gè)能夠自主運(yùn)行并具有一定智能的系統(tǒng)或程序,可以在特定的環(huán)境(Environment)中通過對(duì)環(huán)境感知與觀察(Observation)捶箱,根據(jù)自身目標(biāo)和能力進(jìn)行思考和決策(Decision)智什,并執(zhí)行相應(yīng)的動(dòng)作(Action)達(dá)到某種目的或完成任務(wù)。
隨著大模型LLM發(fā)展丁屎,基于大語言模型(LLM)的智能體Agent可以被視為一個(gè)基于LLM包含多個(gè)組件的系統(tǒng)荠锭,我們可以把智能體理解為:
智能體 = LLM+觀察+思考+行動(dòng)+記憶
- 大模型(LLM):是智能體的核心,可以看作智能體Agent的大腦晨川,它負(fù)責(zé)處理和理解語言信息证九。
- 觀察(Observation):Agent需要能夠從環(huán)境中獲取信息,這可能涉及到通過外部傳感器(如攝像頭共虑、麥克風(fēng)等)收集數(shù)據(jù)愧怜,然后使用適當(dāng)?shù)奶幚矸椒ǎㄈ鐖D像識(shí)別、語音識(shí)別等)來解析這些數(shù)據(jù)妈拌。
- 思考(Thinking) 和推理(Reasoning):在接收到環(huán)境信息后拥坛,智能體需要能夠理解和解釋這些信息,進(jìn)行思考并據(jù)此做出決策,通常涉及邏輯推理猜惋、規(guī)劃丸氛、問題解決等過程。
- 行動(dòng)(Action):Agent根據(jù)決策來執(zhí)行特定的動(dòng)作著摔,這些動(dòng)作可以通過效應(yīng)器(如機(jī)械臂缓窜、揚(yáng)聲器等)在環(huán)境中產(chǎn)生效果。
- 記憶(Memory):Agent還需要能夠存儲(chǔ)和檢索過去的信息梨撞,以便從中學(xué)習(xí)并改進(jìn)其未來的行為雹洗。可以是通過經(jīng)驗(yàn)學(xué)習(xí)來實(shí)現(xiàn)的卧波,也可以是通過存儲(chǔ)先前的交互和知識(shí)來實(shí)現(xiàn)的时肿。
2. 智能體Agent的模式
Agent的設(shè)計(jì)模式有很多,ReAct(reasoning + acting)的設(shè)計(jì)理念很有代表性港粱,它主要結(jié)合了推理和行動(dòng)螃成,讓Agent能夠以交錯(cuò)的方式生成推理步驟和特定于任務(wù)的操作。
注意的是:Agent 的行動(dòng)一般涉及到外部 Tool Use(工具使用)查坪,Agent通過利用外部工具來擴(kuò)展自身功能寸宏,這些工具可以是搜索引擎、專業(yè)數(shù)據(jù)庫或其他類型的插件偿曙,來幫助增強(qiáng)Agent解決問題的能力氮凝。
3. TinyAgent的主要架構(gòu)及一點(diǎn)修改
這里的TinyAgent是一個(gè)基于React模式,手動(dòng)制作的一個(gè)最小的Agent結(jié)構(gòu)望忆,主要是演示通過LLM來推理和調(diào)用外部自定義工具(這里主要是web 搜索)罩阵。
TinyAgent主要包含了3個(gè)模塊,Agent启摄、LLM稿壁、Tool。
- Agent類主要實(shí)現(xiàn)了text_completion方法歉备,通過調(diào)用大模型LLM傅是,根據(jù)React的Agent的邏輯,來調(diào)用Tools中的工具蕾羊。
- LLM模塊定義大模型使用喧笔,這里默認(rèn)使用InternLM2作 Agent 模型,不過我本地沒下載InternLM2龟再,所以這里修改了一下代碼溃斋,增加了Zhipu API。
- Tools中定義了一個(gè)工具類Tools吸申,初始化時(shí)加載了一些工具配置信息梗劫,并包含了一個(gè)名為google_search的方法享甸,通過serper.dev提供的API接口執(zhí)行谷歌搜索,我們能夠在這個(gè)類里面繼續(xù)擴(kuò)展增加其他工具,比如計(jì)算器梳侨、天氣查詢蛉威、特定的數(shù)據(jù)檢索等。
運(yùn)行測(cè)試TinyAgent走哺,如下所示:
agent = Agent()
print(agent.system_prompt)
下面進(jìn)行具體的提問測(cè)試蚯嫌,如:
response, _ = agent.text_completion(text='周杰倫的太太和他年齡相差多少?', history=[])
print(response)
換一個(gè)問題:
備注:
論文 ReAct: Synergizing Reasoning and Acting in Language Models