來(lái)自波形智能、蘇黎世聯(lián)邦理工和浙江大學(xué)的算法團(tuán)隊(duì)和研究者發(fā)布了名為 Agents 的開源框架。
近一年來(lái),隨著大模型突飛猛進(jìn)的發(fā)展,基于大模型的推理泛化能力的語(yǔ)言智能體 (Language Agents) 展示了通向 AGI 的巨大潛力。科研和開發(fā)者社區(qū)也涌現(xiàn)出各種語(yǔ)言智能體的框架和系統(tǒng),如 AutoGPT [1], LangChain [2], SuperAGI [3] 等。這些系統(tǒng)能夠接受人類提供的簡(jiǎn)單的指令之后自主規(guī)劃和執(zhí)行任務(wù)。盡管看起來(lái)很炫酷,這些框架和系統(tǒng)的都存在一個(gè)非常致命的通病:智能體的運(yùn)行一旦開始,就幾乎脫離了人類的控制,對(duì)任務(wù)規(guī)劃和執(zhí)行一旦出錯(cuò),就會(huì)通過(guò)誤差傳播引起明顯的滾雪球效應(yīng),因此任務(wù)失敗概率很高。除了失敗率高以外,更致命的是用戶或開發(fā)者遇到這種情況,對(duì)于如何調(diào)優(yōu)很容易完全沒有頭緒,只能盲目更改任務(wù)描述,依靠玄學(xué)希望得到更好的效果。
圖 1 Agents 框架示意圖
為了解決這個(gè)痛點(diǎn),讓 LLM Agent 更可控,調(diào)優(yōu) LLM Agent 的過(guò)程更簡(jiǎn)單更系統(tǒng)化,波形智能聯(lián)合蘇黎世聯(lián)邦理工大學(xué)和浙江大學(xué),開發(fā)了名為 Agents 的開源智能體框架。
論文鏈接:https://arxiv.org/pdf/2309.07870.pdf
代碼 / Demo 鏈接:https://github.com/aiwaves-cn/agents
官方網(wǎng)站:http://www.aiwaves-agents.com/
Agents 框架探索了通過(guò)結(jié)合基于推理圖的符號(hào)主義 (symbolism) 推理和基于 LLM 的連接主義 (connectionism) 推理,來(lái)結(jié)合高層次的世界模型知識(shí)和低層次的簡(jiǎn)單推理泛化能力,從而實(shí)現(xiàn)更智能更可控的通用人工智能 (AGI) 方案。
具體來(lái)說(shuō),該框架創(chuàng)新性地提供了通過(guò)符號(hào)式的推理圖,即 “SOP”,來(lái)對(duì)任務(wù)進(jìn)行分解,首次實(shí)現(xiàn)了對(duì) LLM Agent 的細(xì)粒度控制。框架同時(shí)支持長(zhǎng)短期記憶,工具使用,網(wǎng)絡(luò)搜索,以及多智能體系統(tǒng)的構(gòu)建,用戶只需要用自然語(yǔ)言填寫配置文檔,就能輕松定義各種功能和使用場(chǎng)景的 AI 智能體 / 多智能體系統(tǒng),比如導(dǎo)購(gòu)機(jī)器人,客服機(jī)器人,以及包含各種角色的小說(shuō)工作室。
在支持零代碼定制 / 微調(diào)多智能體系統(tǒng)的同時(shí),Agents 框架也對(duì)開發(fā)者和研究者擴(kuò)展新的功能和定制復(fù)雜的多智能體環(huán)境 / 場(chǎng)景提供了很好的支持,為基于語(yǔ)言的智能體 (Language Agents) 研究提供便利。Agents 框架的主要功能和亮點(diǎn)如下:
長(zhǎng)短期記憶:基于 RecurrentGPT [4] 的方案讓自主智能體能夠維持長(zhǎng)短期記憶,從而更好地和人類 / 環(huán)境 / 其他智能體交互。長(zhǎng)期記憶將智能體自己的以及觀察到的對(duì)話 / 行為歷史儲(chǔ)存在向量數(shù)據(jù)庫(kù) (VectorDB) 中并根據(jù)當(dāng)前的觀察 (observation),通過(guò)語(yǔ)義搜索 (semantic search) 來(lái)選擇性的激活儲(chǔ)存的記憶。短期記憶則是以文字形式,通過(guò) LLM+prompt 進(jìn)行更新,負(fù)責(zé)智能體的 working memory。
工具使用 / 網(wǎng)絡(luò)搜索:該框架通過(guò)將各種工具 / API 封裝在 'ToolComponent' 類中,統(tǒng)一定義接口,讓智能體能夠通過(guò) OpenAI GPT 的 function-calling 來(lái)智能地使用各種工具。網(wǎng)絡(luò)搜索功能也被封裝成了 API,模型可以根據(jù)需求,通過(guò) function-calling 自動(dòng)生成搜索 query,獲取搜索結(jié)果來(lái)輔助行動(dòng)。
多智能體系統(tǒng): Agents 框架中同時(shí)支持單智能體和多智能體系統(tǒng)。其中多智能體系統(tǒng)區(qū)別于現(xiàn)有框架的一點(diǎn)是,不同于其他系統(tǒng)一般利用事先規(guī)定好的規(guī)則來(lái)決定智能體行動(dòng)的先后順序,Agents 庫(kù)當(dāng)中支持了基于 LLM 的控制器,可以根據(jù)當(dāng)前狀態(tài)的目標(biāo),智能體的行為,和當(dāng)前環(huán)境,來(lái)決定是否進(jìn)入下一個(gè)狀態(tài),以及確定下一個(gè)行動(dòng)的智能體應(yīng)該是誰(shuí)。
人 - 智能體交互: Agents 框架除了支持多智能體之間的相互交互,也支持了能夠讓人類使用者扮演多智能體系統(tǒng)中的一個(gè)或多個(gè)智能體的功能,可以方便地支持各種人 - 智能體交互的應(yīng)用場(chǎng)景,如人和智能體一起玩游戲、辯論等。
符號(hào)化細(xì)粒度控制:作為 Agents 框架的核心亮點(diǎn),框架中的 SOP 系統(tǒng)支持了通過(guò)符號(hào)化的推理圖來(lái)對(duì)智能體 / 多智能體系統(tǒng)提供更細(xì)粒度的控制。一個(gè)任務(wù) / 場(chǎng)景的 SOP 是一個(gè)圖結(jié)構(gòu),圖中的每個(gè)節(jié)點(diǎn)被稱作 '狀態(tài)',每個(gè)狀態(tài)定義了該任務(wù)場(chǎng)景的一個(gè)子任務(wù)或者中間過(guò)程。用戶可以在 Agent 系統(tǒng)的設(shè)置模版 (config template) 中定義每個(gè)智能體在每個(gè)狀態(tài)中的任務(wù)描述,策略,規(guī)則,和 in-context learning 的樣例等。狀態(tài)和狀態(tài)之間的切換通過(guò)一個(gè)基于 LLM 的控制器來(lái)決定。基于 SOP 的細(xì)粒度的控制讓智能體系統(tǒng)更能夠嚴(yán)格按照人類確認(rèn)過(guò)的流程運(yùn)行,從而更加穩(wěn)定,可控,進(jìn)而達(dá)到可以作為商業(yè)化的客服 / 銷售 / 導(dǎo)購(gòu)等智能體的目標(biāo)。另外因?yàn)橹悄荏w系統(tǒng)的控制嚴(yán)格按照 SOP 的流程,所以任何一步發(fā)生問(wèn)題,用戶都可以方便的定位到問(wèn)題所在,并且有針對(duì)性地對(duì) SOP 進(jìn)行修改,提升系統(tǒng)的表現(xiàn),既提高了 Agent 系統(tǒng)的可解釋性,又方便了系統(tǒng)的編輯和調(diào)優(yōu)。
圖 2 Agents 框架和其他常見開源智能體系統(tǒng)框架的功能對(duì)比
Agents 框架包含三個(gè)主要類:Agent、SOP 和 Environment,具體如下:
Agent 類包含了 Agent 的各種功能,包括長(zhǎng)短期記憶,觀察環(huán)境,使用工具,調(diào)用 LLM 進(jìn)行推理和生成回復(fù)等。
SOP 類是由狀態(tài)和狀態(tài)之間的連接定一個(gè)一個(gè)符號(hào)式的計(jì)劃(Plan)。SOP 的每個(gè)狀態(tài)節(jié)點(diǎn)由 State 類定義,State 類中涵蓋了 Agent 在這個(gè)狀態(tài)內(nèi)特有模塊化的 Prompt 和可以使用的各種工具 / API 等,由用戶在配置文件中定義。每次行動(dòng)時(shí),Agent 會(huì)將這些模塊化 prompt 和工具 / API 的輸出組裝成完整的 prompt,然后調(diào)用 LLM 決定如何行動(dòng)。SOP 中還包括了一個(gè)控制器函數(shù),利用大模型的推理能力來(lái)動(dòng)態(tài)決定狀態(tài)的轉(zhuǎn)移和下一個(gè)行動(dòng)的 Agent 是哪個(gè)。
Environment (環(huán)境類) 是智能體之間交互的媒介,儲(chǔ)存了智能體之間的對(duì)話歷史和環(huán)境本身的狀態(tài) / 變化等。
智能體系統(tǒng)的初始化代碼如下:所有類均可由一個(gè)用戶定制好的 config 文件加載。
加載之后多智能系統(tǒng)的運(yùn)行邏輯如下:SOP 的控制器決定了下一個(gè)狀態(tài)和行動(dòng)的智能體是哪個(gè),之后智能體結(jié)合環(huán)境和狀態(tài)執(zhí)行行動(dòng),最后環(huán)境根據(jù)智能體的行為進(jìn)行自我更新。Agents 框架同時(shí)支持讓智能體系統(tǒng)動(dòng)態(tài) Planning,生成新的后續(xù)狀態(tài)和節(jié)點(diǎn),只需要定義從 action 抽取新狀態(tài)節(jié)點(diǎn)設(shè)置的函數(shù)并將對(duì)應(yīng)的設(shè)置動(dòng)態(tài)添加到當(dāng)前的 SOP 中即可。
Step 1:配置多智能體系統(tǒng)參數(shù) (框架提供了相應(yīng)的 WebUI)
Step 2: 得到 JSON 配置文件
Step 3:?jiǎn)?dòng)多智能體系統(tǒng)
接下來(lái),作者展示了一個(gè)利用 Agents 框架開發(fā)的多智能體影視工作室的 Demo。小說(shuō)工作室中包括了作家,編輯,導(dǎo)演,和演員等角色。SOP 中規(guī)定了首先作家和編輯要根據(jù)特定的劇情設(shè)定來(lái)構(gòu)思人設(shè)和劇本大綱,之后作家根據(jù)大綱寫出劇本,再由導(dǎo)演根據(jù)劇本指導(dǎo)多個(gè)演員一起進(jìn)行每一段情節(jié)的表演:
其他的多智能體框架在接受了這樣一個(gè)復(fù)雜流程的指示之后,很容易會(huì)在執(zhí)行任務(wù)的過(guò)程中逐漸偏離原始的任務(wù)規(guī)劃和指示。這是因?yàn)樵诿恳淮螆?zhí)行的時(shí)候,各個(gè)智能體都只能根據(jù)總體的相對(duì)籠統(tǒng)的任務(wù)介紹來(lái)推測(cè)系統(tǒng)現(xiàn)在走到了哪一步以及接下來(lái)要做什么,而基于 Agents 框架的智能體系統(tǒng)則為每個(gè)智能體提供了當(dāng)前狀態(tài)特有的指令,規(guī)則,和示例,并且有了解全局任務(wù)和當(dāng)前 / 下一個(gè)狀態(tài)各自的目標(biāo)的控制器來(lái)決定狀態(tài)的轉(zhuǎn)變,因此能夠更準(zhǔn)確、穩(wěn)定地沿著預(yù)先設(shè)定的流程完成整個(gè)劇本設(shè)計(jì),創(chuàng)作到表演的復(fù)雜任務(wù)流。
Agents 框架除了支持在終端和 Gradio 體驗(yàn)多智能體系統(tǒng)之外,還為開發(fā)者提供了利用 FastAPI 在后端部署自主智能體系統(tǒng)的示例代碼,可以讓開發(fā)者便捷的將調(diào)教好的智能體部署到應(yīng)用程序中。另外 Agents 開發(fā)團(tuán)隊(duì)還提供了 community AgentHub,可供方便地供用戶搜索他人共享的智能體系統(tǒng)從而更便捷地打造自己的智能體系統(tǒng),也可以將自己調(diào)試好的智能體系統(tǒng)方便地共享給社區(qū)其他用戶。
聯(lián)系客服