阿里智能體“組裝工廠”開(kāi)源!0經(jīng)驗(yàn)搞定上萬(wàn)Agent并發(fā)
多智能體開(kāi)發(fā)就像搭積木
阿里巴巴通義實(shí)驗(yàn)室 投稿
量子位 | 公眾號(hào) QbitAI
讓多智能體開(kāi)發(fā)就像搭積木,阿里巴巴通義實(shí)驗(yàn)室開(kāi)源多智能體編程框架與開(kāi)發(fā)平臺(tái)AgentScope。
該平臺(tái)專門(mén)為多智能體應(yīng)用開(kāi)發(fā)者打造,旨在提供高易用的編程體驗(yàn)、穩(wěn)定可靠的運(yùn)行時(shí)保障,并且為開(kāi)發(fā)者提供了分布式和多模態(tài)的技術(shù)支持。
內(nèi)置了OpenAI、DashScope、Gemini、Ollama等多種不同平臺(tái)的模型API,深度兼容當(dāng)下的大模型開(kāi)源生態(tài)。
AgentScope提供了多種開(kāi)箱即用的功能,通過(guò)簡(jiǎn)單拖拽就能搭建多智能體應(yīng)用。
即使沒(méi)有分布式開(kāi)發(fā)經(jīng)驗(yàn)的開(kāi)發(fā)者,在AgentScope平臺(tái)上也能輕松實(shí)現(xiàn)上萬(wàn)級(jí)別的多智能體并發(fā)。
為了讓更多用戶能夠快速、輕松地開(kāi)發(fā)屬于自己的多智能體應(yīng)用。AgentScope提供了以下功能:
- 拖拽式的編程范式——AgentScope Workstation:為用戶提供了可視化的拖拽式開(kāi)發(fā)界面
- 交互式編程助手——AgentScope Copilot:解答開(kāi)發(fā)者關(guān)于AgentScope的疑問(wèn)
- 透明可控的開(kāi)發(fā)過(guò)程——應(yīng)用實(shí)時(shí)監(jiān)控:實(shí)時(shí)監(jiān)控應(yīng)用運(yùn)行成本、多智能體狀態(tài),實(shí)現(xiàn)透明且可控的開(kāi)發(fā)
- 豐富的開(kāi)發(fā)資源:助力快捷且方便的二次開(kāi)發(fā),搭建應(yīng)用無(wú)需“從零開(kāi)始”
AgentScope Workstation
AgentScope Workstation提供了便捷的“拖拽式”多智能體應(yīng)用編排范式。
在這里,編程經(jīng)驗(yàn)不再是限制你想象力的因素。每個(gè)開(kāi)發(fā)者都可以在豐富的工具欄中,零代碼地挑選和拖拽出他們喜歡的大模型、智能體和 Pipeline,就像搭積木一樣自由組合,創(chuàng)造出獨(dú)特創(chuàng)新的多智能體應(yīng)用。
為了確保這些通過(guò)拖拽搭建的多智能體應(yīng)用真正可用,AgentScope Workstation引入了靜態(tài)規(guī)則檢查,以確保應(yīng)用的正確性。
對(duì)于那些尋求進(jìn)一步自定義和深度開(kāi)發(fā)的高級(jí)開(kāi)發(fā)者,AgentScope Workstation也提供了強(qiáng)大的支持。
開(kāi)發(fā)者既可以將應(yīng)用導(dǎo)出為配置信息,借助AgentScope Workstation引擎進(jìn)行運(yùn)行,也可以使用AgentScope Workstation Compiler將配置信息一鍵轉(zhuǎn)換成Python代碼。這樣,開(kāi)發(fā)者便可以進(jìn)一步編輯和優(yōu)化代碼,實(shí)現(xiàn)更為精細(xì)和個(gè)性化的應(yīng)用調(diào)整。
AgentScope Copilot
AgentScope Copilot是基于AgentScope框架自身構(gòu)建的開(kāi)發(fā)助手,旨在幫助開(kāi)發(fā)者解決在多智能體應(yīng)用開(kāi)發(fā)過(guò)程中所遇到的問(wèn)題,其技術(shù)實(shí)現(xiàn)結(jié)合了多智能體群聊(Multi-agent Conversation)、數(shù)據(jù)檢索生成(Retrieval-Augmented Generation,RAG)、智能體呼叫(Mention)等諸多特性。
在與AgentScope Copilot的交互中,開(kāi)發(fā)者既可以與引導(dǎo)助手(Guide Assistant)進(jìn)行交互,直接獲取幫助;也可以呼叫專用的智能體助手,例如問(wèn)答助手(Tutoring Assistant)或者代碼編程助手(Coding Assistant),從而獲得更加專業(yè)、更加具體的回答。更具體而言,代碼編程助手可以幫助開(kāi)發(fā)者快速理清框架內(nèi)各個(gè)模塊的定義及使用方法,提供更優(yōu)的編程建議。
值得一提的是,AgentScope Copilot本身基于AgentScope框架中的RAG模塊進(jìn)行搭建,支持LlamaIndex等流行的數(shù)據(jù)檢索框架、以及多種向量數(shù)據(jù)庫(kù)類型,同時(shí)支持接入各種大語(yǔ)言模型。開(kāi)發(fā)者可以進(jìn)行快速的二次開(kāi)發(fā),輕松的搭建起自己項(xiàng)目的Copilot助手。
透明可控的開(kāi)發(fā)過(guò)程
一個(gè)友好的應(yīng)用開(kāi)發(fā)過(guò)程,對(duì)開(kāi)發(fā)者來(lái)說(shuō)應(yīng)該是可控的、透明的。
但是在多智能體場(chǎng)景下,模型API種類繁多,調(diào)用接口各異,如何有效管理和監(jiān)控模型API的使用成本,避免資源浪費(fèi)與意外開(kāi)支,對(duì)資源監(jiān)控能力提出了更高的挑戰(zhàn)。
例如,在使用搜索引擎時(shí)將一個(gè)復(fù)雜網(wǎng)頁(yè)作為大模型的輸入將引起高額的開(kāi)銷,而開(kāi)發(fā)者的感知往往滯后。為了解決這個(gè)問(wèn)題,AgentScope設(shè)計(jì)了Monitor模塊,實(shí)現(xiàn)了:
API開(kāi)銷自動(dòng)統(tǒng)計(jì):準(zhǔn)確記錄不同模型API的token用量,并自動(dòng)計(jì)算當(dāng)前開(kāi)銷,確保開(kāi)發(fā)者對(duì)模型API成本的每一份支出都了如指掌。
預(yù)算設(shè)置及超額報(bào)警:支持開(kāi)發(fā)者設(shè)定各模型API的預(yù)算上限。當(dāng)總開(kāi)銷超過(guò)預(yù)算時(shí),系統(tǒng)自動(dòng)觸發(fā)報(bào)警,及時(shí)通知開(kāi)發(fā)者進(jìn)行檢查和調(diào)整,避免超支的發(fā)生。
支持自定義監(jiān)控指標(biāo):除了預(yù)設(shè)的模型API相關(guān)指標(biāo)外,Monitor還允許開(kāi)發(fā)者自定義其他監(jiān)控指標(biāo),例如搜索工具的開(kāi)銷,數(shù)據(jù)存儲(chǔ)服務(wù)的開(kāi)銷,網(wǎng)絡(luò)流量等等,從而讓開(kāi)發(fā)者能夠?qū)?yīng)用的狀態(tài)進(jìn)行全面且自動(dòng)化的監(jiān)控。
△?Monitor模塊
即拿即用的開(kāi)發(fā)資源
AgentScope內(nèi)置了豐富的工具函數(shù)、智能體和應(yīng)用樣例,開(kāi)發(fā)者可以通過(guò)輕量化的修改,輕松的開(kāi)發(fā)屬于自己的多智能體應(yīng)用。
工具函數(shù):AgentScope支持包含網(wǎng)絡(luò)搜索、數(shù)據(jù)庫(kù)查詢、文件操作、文本處理等多種類型的工具函數(shù),每種類目下又包含不同實(shí)現(xiàn)形式。例如網(wǎng)絡(luò)搜索層面,AgentScope已經(jīng)支持Bing、arXiv和DBLP等多種搜索引擎。
智能體:AgentScope內(nèi)置了功能各異的智能體,包含基礎(chǔ)對(duì)話、格式化對(duì)話、Reasoning、RAG、分布式等多種不同類型的智能體。開(kāi)發(fā)者只需要使用不同的參數(shù)初始化智能體實(shí)例,就可以將智能體特化成自己需要的智能體實(shí)例。
應(yīng)用樣例:AgentScope預(yù)置了包含對(duì)話(Conversation)、游戲(Game)、和分布式(Distribution)等多種不同類型的應(yīng)用。一方面這些樣例可以幫助開(kāi)發(fā)者降低開(kāi)發(fā)代價(jià),另一方面也為應(yīng)用的開(kāi)發(fā)提供了模版和參照。
為了讓開(kāi)發(fā)者能夠更好、更快地了解AgentScope中的內(nèi)置資源,AgentScope提供了豐富且詳細(xì)的文檔,包含教程(Tutorial)、接口文檔(API Document)和設(shè)計(jì)論文,幫助開(kāi)發(fā)者更好的了解和使用AgentScope。
穩(wěn)定可靠
基于大模型的多智能體應(yīng)用會(huì)面臨模型幻覺(jué)、模型指令跟隨能力不足等諸多新的挑戰(zhàn)。為了保證多智能體應(yīng)用能夠穩(wěn)定可靠地運(yùn)行,AgentScope首先將應(yīng)用中出現(xiàn)的錯(cuò)誤進(jìn)行分類,然后相應(yīng)地提供了一套完整的容錯(cuò)機(jī)制和自定義的容錯(cuò)處理。
面向隨機(jī)性的容錯(cuò):隨機(jī)性錯(cuò)誤常常由網(wǎng)絡(luò)狀況不穩(wěn)定,或者模型生成內(nèi)容的不確定性引起,是基于大模型構(gòu)建應(yīng)用時(shí)最常見(jiàn)的一類錯(cuò)誤。這類錯(cuò)誤往往十分瑣碎且難以窮舉,因此AgentScope通過(guò)的內(nèi)置重試機(jī)制,將此類隨機(jī)性的錯(cuò)誤進(jìn)行過(guò)濾和屏蔽,方便開(kāi)發(fā)者將精力投入到應(yīng)用的編排中。
基于規(guī)則的容錯(cuò):應(yīng)用中遇到的部分錯(cuò)誤可以通過(guò)規(guī)則進(jìn)行修復(fù)。例如,要求大模型產(chǎn)生指定格式的回復(fù)時(shí),大模型有時(shí)會(huì)產(chǎn)生額外的內(nèi)容,因此可以通過(guò)預(yù)置的規(guī)則進(jìn)行截?cái)?,確保應(yīng)用的正常運(yùn)行。
基于模型的容錯(cuò):借助大模型自身能力進(jìn)行糾錯(cuò)是多智能體應(yīng)用的特點(diǎn)之一,AgentScope會(huì)嘗試將輸入和錯(cuò)誤信息提供給大模型,利用大模型的理解能力和知識(shí)來(lái)糾正錯(cuò)誤。
面向智能體/開(kāi)發(fā)者的容錯(cuò):當(dāng)預(yù)置規(guī)則和大模型都無(wú)法解決錯(cuò)誤時(shí),往往需要開(kāi)發(fā)者或者是智能體的介入才能解決問(wèn)題,因此AgentScope在遇到此類錯(cuò)誤的情況下,會(huì)將錯(cuò)誤的格式化歸因、錯(cuò)誤信息、輸入輸出信息完整的提交給開(kāi)發(fā)者或智能體,從而幫助解決遇到的問(wèn)題。
提示優(yōu)化
多智能體應(yīng)用性能的提升很大程度依賴大模型的提示(Prompt)質(zhì)量,一個(gè)好的提示可以大幅提高應(yīng)用運(yùn)行成功的概率。AgentScope編程框架提供了提示調(diào)優(yōu)模塊,助力開(kāi)發(fā)者持續(xù)優(yōu)化應(yīng)用。
提示自動(dòng)生成:對(duì)于開(kāi)發(fā)者來(lái)說(shuō),產(chǎn)生一個(gè)好的提示往往是一件耗時(shí)耗力的事情。AgentScope預(yù)置了一個(gè)智能體,其內(nèi)部通過(guò)上下文學(xué)習(xí)的方式(In-context learning,ICL),綜合開(kāi)發(fā)者的應(yīng)用場(chǎng)景,直接生成所需的提示,幫助開(kāi)發(fā)者快速開(kāi)始開(kāi)發(fā)。
支持樣例輸入:在AgentScope中,開(kāi)發(fā)者同時(shí)可以輸入若干樣例作為模板,AgentScope可以根據(jù)這些樣例,為特定的下游任務(wù)生成具體的提示詞。
提示動(dòng)態(tài)調(diào)優(yōu):在應(yīng)用運(yùn)行過(guò)程中,大模型的提示詞還需根據(jù)運(yùn)行情況做進(jìn)一步的調(diào)整,例如添加新的規(guī)則以避免錯(cuò)誤的產(chǎn)生。AgentScope將此過(guò)程自動(dòng)化,在智能體與開(kāi)發(fā)者、環(huán)境進(jìn)行交互的過(guò)程中,其歷史數(shù)據(jù)將成為調(diào)整提示的依據(jù);AgentScope根據(jù)當(dāng)時(shí)的場(chǎng)景,修改智能體的系統(tǒng)提示(System prompt)從而在運(yùn)行過(guò)程中提高智能體的表現(xiàn)。
分布式并行
作為一個(gè)多智能體編程框架,AgentScope在設(shè)計(jì)之初就將提升智能體之間的協(xié)作效率作為主要目標(biāo)之一,并為此設(shè)計(jì)了分布式模式。在該模式中,多智能體可以運(yùn)行在不同的進(jìn)程和機(jī)器當(dāng)中,從而充分利用計(jì)算資源,提高運(yùn)行效率。AgentScope中的分布式主要具有以下特點(diǎn):
自動(dòng)并行優(yōu)化:AgentScope中分布式的設(shè)計(jì)遵循Actor編程范式,可以自動(dòng)識(shí)別應(yīng)用流程編排中不同智能體之間潛在的并行可能性,并且進(jìn)行自動(dòng)并行優(yōu)化,提升運(yùn)行效率。同時(shí)各個(gè)智能體可以獨(dú)立運(yùn)行在本地或者遠(yuǎn)程機(jī)器上,能夠充分利用計(jì)算資源,支持大規(guī)模部署。
上手門(mén)檻極低:AgentScope向開(kāi)發(fā)者完全屏蔽了分布式的技術(shù)實(shí)現(xiàn)細(xì)節(jié),開(kāi)發(fā)者可以零代價(jià)開(kāi)發(fā)分布式多智能體應(yīng)用,或者將已有的多智能體應(yīng)用轉(zhuǎn)化成分布式模式運(yùn)行。在轉(zhuǎn)化成分布式應(yīng)用時(shí),AgentScope中分布式應(yīng)用編排與本地化的編排方式完全兼容,即使沒(méi)有分布式背景知識(shí),開(kāi)發(fā)者也能輕松編排分布式多智能體應(yīng)用。
支持大規(guī)模部署:AgentScope目前支持在單臺(tái)機(jī)器(64核8卡A100)上一次性運(yùn)行16000多個(gè)智能體實(shí)例,并且該規(guī)模能夠隨著機(jī)器數(shù)量的增加實(shí)現(xiàn)規(guī)模的線性增長(zhǎng)。舉例來(lái)說(shuō),AgentScope在4臺(tái)機(jī)器的集群上可以在30秒內(nèi)完成64000多次智能體的調(diào)用。這一特點(diǎn)使得智能體的大規(guī)模并行和仿真成為可能。
△本地模式向分布式模式轉(zhuǎn)換
多模態(tài)支持
AgentScope支持開(kāi)發(fā)者使用多模態(tài)數(shù)據(jù)和多模態(tài)模型來(lái)構(gòu)建強(qiáng)大的多智能體應(yīng)用。為了讓開(kāi)發(fā)者可以更加直觀、便捷地與自己編排的多智能體應(yīng)用交互,AgentScope提供了一款開(kāi)發(fā)者友好、簡(jiǎn)便易用的可交互式界面AgentScope Studio,讓文本、聲音、圖像等不同模態(tài)的數(shù)據(jù)得以生動(dòng)呈現(xiàn),確保了開(kāi)發(fā)者能以最直觀的方式感受并調(diào)整自己創(chuàng)造的智能體應(yīng)用。
△AgentScope Studio
接下來(lái),AgentScope還將持續(xù)為開(kāi)發(fā)者帶來(lái)更多的開(kāi)發(fā)便利,也期待更多開(kāi)發(fā)者加入AgentScope開(kāi)源社區(qū)的建設(shè),探索更多更有趣的多智能體應(yīng)用。
AgentScope開(kāi)源倉(cāng)庫(kù)地址:
https://github.com/modelscope/agentscope
歡迎試用:
https://agentscope.aliyun.com