如何管理一百個ai專家智能體——ai調度系統設計

前言

如果你用過openai的chatgpt服務,你肯定知道一個叫做GPTs的智能體商店,里面提供了大量的來自官方和個人制作的專門針對某個領域的gpt助手。比如,你想讓gpt幫忙寫文章,并且要能夠寫得好,你就可以在商店中搜索相關的助手并應用到聊天窗口,同理,還有網頁搜索助手,PDF閱讀助手,等等。

你要先搜索,尋找能解決你問題領域的專家助手,再和它交流。

不覺得這樣很繁瑣嗎?

我們來想象一個這樣的場景,你是一所豪宅的主人,豪宅里配備了一個家政團隊,有管家和負責不同工作的仆人。當你想要預定午餐吃什么,你不需要去找廚師,而是找管家說一聲;你想讓人去打掃客廳,你也不需要去找負責打掃衛生的仆人,而是找管家說一聲。

所以,GPTs實際上是提供了一個龐大的專業執行團隊,但是,卻沒有一個管家。

對于我們提出的一個需求或請求,實際上能分成兩個重要環節——“做什么?”和“怎么做?”

因此,我們可以考慮一個這樣的ai系統設計,它分為兩個層面——調度層(管家)和執行層(專家角色),分別用于解決兩個重要環節的問題。

image-20240710110800496

調度層

對于一個管家來說,他的職責其實可以概括為:理解、分解、分配。

  1. 理解

    根據與用戶的交流內容(可能是一條指令或是一段對話的上下文),理解并總結出需要的事情。這一步是調度層的第一步,也是最關鍵的一步。

  2. 分解

    當用戶的請求包含有多個需要做的事情時,應當把它們拆解成獨立的小任務。例如,”幫我把臥室的地板打掃一下,順便開下客廳的燈“,就應當拆分成”打掃臥室的地板“和”打開客廳的燈“這樣的兩個任務。

  3. 分配

    把一個任務分配給對應的執行層角色。這個操作可以依靠讓大模型做選擇題來實現。把執行層角色的能力作為一個帶序號列表放入提示詞中,讓大模型根據任務描述輸出對應角色的序號。后面就是傳統程序化的工作了。

image-20240710111407508

對于理解這個環節,對大模型的考驗比較大。例如,“把‘幫我訂一張火車票’翻譯成英文”與“幫我訂一張火車票”就是完全不同的意圖,對于前者,甚至管家自己就能回答。再比如,“今天天氣好像不錯啊,幫我把窗戶打開吧”,這樣的用戶請求,管家應當要能正確理解和歸納出要做的事情是”打開窗戶“,而不需要去查天氣的情況。

對于上下文理解就更加考驗大模型能力了。

重新回到現實情境,如果豪宅的主人只告訴管家”中午我想吃點好吃的“,那么管家理論上是只需要轉達給廚師,但是,今天來的可能是個新廚師,不知道屋主人的用餐喜好,那他可能就會先提供一份菜單,反問屋主人想吃哪個,等屋主人決定后才會執行做菜的任務。在這個過程中就有一個需要考慮的問題,是廚師親自去找屋主人問,然后自己理解,還是把問題返回給管家,讓管家問清楚后,由管家自己理解并生成一個新的任務?

我的想法是,仍然由管家進行匯總與理解。因為理解意圖,本身就是管家的職責。

所以我們可以設想一個這樣的對話:

user: 我中午想吃點好吃的
assistant: 您具體想吃什么呢?今天午餐可選的菜品有炸雞、紅燒肉、西蘭花炒瘦肉、醬香面。
user: 醬香面吧

那管家收到這樣一段對話后,就應當理解出一個新任務,”主人要求今天的午餐為醬香面“,然后直接把該任務交給廚師即可。

執行層

對于一個執行角色來說,他的職責會更加明確:規劃、執行、反饋。

  1. 規劃

    規劃這個步驟可以比較靈活。第一種方式是參考現在的一些ai-agent框架,直接讓大模型生成一個行動規劃,按照順序步驟執行;第二種方式就是偏程序化的方式固定一系列行動規劃,比如,對于IOT控制,通常就是根據用戶請求查詢可控制設備的列表,然后生成參數或者直接生成函數,運行代碼,控制設備,這樣具有固定流程的步驟。

  2. 執行

    執行通常就是運行代碼,或者讓大模型生成內容(文字、圖片、視頻、音頻等)。

  3. 反饋

    反饋這一步可以做得比較靈活,根據任務類型場景,反饋可以是針對生成代碼的運行測試審核,或者是對文字內容的審核,又或者是對內容的二次修改,總之,是利用LLM進行自我反饋,從而校準輸出結果與目標結果的匹配度。

image-20240710111653394

任務表

這里我提供另一種設計思路,將調度層的部分壓力轉移給執行層,這種設計理論上更簡單點,但是會增加系統的開銷和問題風險。

假設現在已經有了一個支持100種專家角色的ai服務系統,然后,我打算增加100種,那么,按照之前的思路,我不僅要在執行層新增100種角色,我還要在調度層的分配提示詞中增加對應的100種角色的描述,一旦這些角色的職責有變動,我還要在分配提示詞中相應更改,顯然會比較繁瑣。

于是,我們可以選擇:將調度層的分配操作去掉,在執行層的每個角色都增加一個任務匹配檢查,調度層不直接分發任務,而是把所有任務放到一個任務表中,執行層的角色自行掃描任務表,從中獲取屬于自身職責的任務。

image-20240710112039666

總結

當然,你可能從一開始就意識到,這樣的設計就是最基本的分治思想。事實上,也已經有不少ai-agent開源框架采用了分治方法,把大任務拆解為多個小任務,以此來提升ai回答內容的質量,不過,我個人認為這優化的是“怎么做”這個環節,而針對“做什么”這個環節,我個人提出的方案就是引入調度層這樣的設計來進行優化。或許再大膽一點,這可能也是一種專用于AI的“操作系統”的雛形。

后記:這篇文章實際上寫于24年4月份,但由于一些原因一直到7月才打算發布,此時我已經看到不少大公司的AI系統支持這種ALL IN ONE的功能,因此,這篇文章的參考價值或許不算太高了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43066.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43066.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43066.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C語言】符號優先級詳解

C語言符號優先級詳細解析 在C語言中,不同的運算符具有不同的優先級和結合性,這決定了在表達式中運算符的計算順序。理解這些優先級和結合性是正確編寫和理解C語言程序的基礎。本文將詳細解析C語言中的符號優先級,包括各類運算符的優先級、結…

Smail語句如何使用判斷語句跳過驗證卡密界面?談談思路

🏆本文收錄于《CSDN問答解惑》專欄,主要記錄項目實戰過程中的Bug之前因后果及提供真實有效的解決方案,希望能夠助你一臂之力,幫你早日登頂實現財富自由🚀;同時,歡迎大家關注&&收藏&…

數據融合工具(5)面中心線提取

這是一個重磅工具,建議先看視頻。 提取中心線 一、需求背景 說真的,當小編第一次使用ArcGIS中的Polygon To Centerline工具提取面要素中心線時,激動得無以言表,畢竟,以前要提取面中心線,是一件非常麻煩的事…

uniapp圖片壓縮之后在上傳

壓縮圖片js方法,新建imgPress.js /** * H5壓縮 二分查找算法來找到一個合適的圖像質量系數,使得壓縮后的圖片文件大小接近于目標大小* param {Object} imgSrc 圖片url * param {Object} callback 回調設置返回值 * */ export function compressH5(fileI…

nginx熱更新詳解及實戰操作

Nginx熱更新,也被稱為平滑升級或熱部署,是指在不中斷Nginx服務的情況下,對Nginx進行升級或更新其配置,以實現業務的無損和用戶無感知的升級過程。以下是關于Nginx熱更新的詳細解釋: 一、Nginx熱更新的原理 Nginx熱更…

Kubernetes APIServer 幾種基本認證方式

"認證",形象地理解就是"你是誰"。在上文中,用戶A在發起API請求時,管理員如何道該請求是用戶A發起的呢?所以,客戶端在發起API請求時,必須要攜帶一個身份信息來表明"我是誰"&a…

泰勒公式中拉格朗日余項和佩亞諾余項的區別及具體的應用場景案例

泰勒公式是微積分中的一個重要工具,用于將一個函數在某一點附近展開成多項式形式,以便于近似計算和分析。泰勒公式的一般形式為: f ( x ) f ( a ) f ′ ( a ) ( x ? a ) f ′ ′ ( a ) 2 ! ( x ? a ) 2 ? f ( n ) ( a ) n ! ( x ? a…

[CTF]-PWN:House of Cat堆題型綜合解析

原理: 調用順序: exit->_IO_wfile_jumps->_IO_wfile_seekoff->_IO_switch_to_wget_mode _IO_wfile_seekoff源碼: off64_t _IO_wfile_seekoff (FILE *fp, off64_t offset, int dir, int mode) {off64_t result;off64_t delta, new…

AI繪畫小白必備!Stable Diffusion常用插件合集,好用推薦!(附插件下載)

前言 寶子們,早上好啊~Stable Diffusion 常用插件,月月已經給大家整理好了,自取就好。 擁有這些SD常用插件,讓您的圖像生成和編輯過程更加強大、直觀、多樣化。以下插件集成了一系列增強功能,覆蓋從自動補全提示詞到…

開源項目:驅動創新與協作的時代引擎

《開源項目:驅動創新與協作的時代引擎》 在當今全球經濟與科技環境瞬息萬變的背景下,開源軟件項目如同一顆璀璨的新星,在開發者社區的天空中熠熠生輝。其蓬勃發展的態勢不僅成為了熱門話題,更是引領著技術領域的變革潮流。 開源…

無法訪問。你可能沒有權限使用網絡資源。請與這臺服務器的管理員聯系以查明你是否有訪問權限。【解決辦法】

問題描述 新建好一臺windows虛擬機,兩臺設備網絡是互通的,但是物理機在訪問虛擬機的網絡共享文件資源時,出現圖下所示的報錯:XXX無法訪問。你可能沒有權限使用網絡資源。請與這臺服務器的管理員聯系以查明你是否有訪問權限。用戶…

echarts無法加載Map地圖的問題

項目場景: echarts無法加載Map地圖的問題 詳情 查閱相關資料講,echarts4.9以上版本已經移除了map,那么我們就得重新打包echarts文件了。打包echarts.min.js的鏈接:https://echarts.apache.org/zh/builder.html 在這個鏈接頁面可…

考完軟考之后,如何評職稱?是否有有效期?

一、軟考和職稱之間的關系 軟考和職稱之間的關系可以這樣理解:拿到軟考證書并不意味著就能獲得職稱。軟考證書是技術等級證書,而職稱則是一種資格。如果單位聘用你做工程師,那么你的軟考證書就可以發揮作用,相當于獲得了職稱證。…

單商戶和多商戶的區別

單商戶商城通常由單個企業或品牌運營,專注于銷售自家產品,而多商戶商城則類似于一個平臺,允許多個商家入駐并銷售各自的商品。它們在經營模式、商家入駐和運營投入等方面有所不同。具體分析如下: 經營模式 單商戶商城&#xff1…

MES:連接計劃與執行的橋梁

想象一下,你的企業擁有一份完美的生產計劃,但如何將這份計劃準確無誤地轉化為實際生產中的每一步操作?這就是MES大展身手的地方。MES作為ERP(企業資源計劃)與車間自動化控制之間的橋梁,確保生產計劃能夠順暢…

hf-mirror (huggingface 的國內鏡像)

官網: https://hf-mirror.com/ 網站域名 hf-mirror.com,用于鏡像 huggingface.co 域名。作為一個公益項目,致力于幫助國內AI開發者快速、穩定的下載模型、數據集。 如何使用HF-Mirror 方法一:網頁下載 在https://hf-mirror.com/…

邊框插畫:成都亞恒豐創教育科技有限公司

邊框插畫:藝術與生活的精致邊界 在視覺藝術的廣闊天地里,邊框插畫以其獨特的魅力和細膩的表達方式,成為連接藝術與生活的一道精致邊界。成都亞恒豐創教育科技有限公司它不僅僅是圖像的外框裝飾,更是情感、故事與創意的延伸&#…

看到指針就頭疼?這篇文章讓你對指針有更全面的了解!

文章目錄 1.什么是指針2.指針和指針類型2.1 指針-整數2.2 指針的解引用 3.野指針3.1為什么會有野指針3.2 如何規避野指針 4.指針運算4.1 指針-整數4.2 指針減指針4.3 指針的關系運算 5.指針與數組6.二級指針7.指針數組 1.什么是指針 指針的兩個要點 1.指針是內存中的一個最小單…

【Python】ModuleNotFoundError: No module named ‘distutils.util‘ bug fix

【Python】ModuleNotFoundError: No module named distutils.util bug fix 1. error like this2. how to fix why this error occured , because i remove the origin version python of ubuntu of 20.04. then the system trapped in tty1 , you must make sure the laptop li…

MVC 返回集合方法,以及分頁

返回一個數據集方法 返回多個數據集方法 》》定義一個Model public class IndexMoel {public List<UserGroup> UserGroup{get;set;}public List<User> User{get;set;}}》》》控制器 //db 是 EF 中的上下文 var listnew IndexModel(); list.UserGroupdb.UserGro…