自動化的循環邏輯
8月19日,不列顛哥倫比亞大學的三位研究人員發表了一篇名為《自動化設計智能體系統》的論文。在這篇論文裡,他設計了一個讓AI自己發現並搭建智能體,還能自己迭代的系統。
回想一下OpenAI對智能體的經典定義,智能體就是一個能夠儲存知識,能夠進行計劃,並且應用工具的產品。
而我們在用工作流構建智能體的時候,也是利用已有的知識(對智能體形式的知識),自己進行計劃(搭建流程)並利用工具(接入API)最終去執行產出,並沒有超越智能體自己的能力範圍。
那為什麼不搭建一個能自動發現和設計智能體的智能體呢?
論文作者就按照這個思路,把設計者稱為元智能體,他讓它去設計新的智能體。把設計好的智能體加到資料庫裡作為資料,不停迭代出新的、更強版本的智能體。
這整一套方法,他們稱之為ADAS(Automated Design of 智能體ic Systems)。
讓鏈條轉起來
ADAS系統中生成新智能體的過程可以被分為三個部分:
第一部分建立搜索空間,可以理解為通過一些基礎工具和規則,它可以設計出潛在的新智能體。
第二部分是運行搜索算法,它規定了元智能體怎麼利用搜索空間,取用其中的元素去具體搭建新的智能體。
最後一部分是運行評估函數,它會根據性能等目標對搭建出來的智能體進行評估。
研究人員在論文中分步解釋了如何構建以上三個核心部分。
首先得確定建構搜索空間的基礎元素,研究人員認為最好的方法是程式碼。
這是因為程式碼具有圖靈完備性,能表達所有可能性。所以,理論上元智能體能夠發現任何可能的構建模塊(如提示、工具使用、控制流程)以及以任何方式組合這些構建模塊的智能體系統。
更重要的是,Langchain這樣用來構建智能體的網站中已存在的各種工作流都已被程式碼化。因此相關資料手到擒來,不用再轉換。而工具調用,如RAG(retrieval augmented generation檢索增強生成)之類的能力組件也已經有了非常充分的程式碼基礎。
採用程式碼去構建搜索空間,也意味著ADAS生成的智能體可以直接運行,用來糾錯、跑分,無需人工再干預。
定義好了搜索空間,研究人員就開始設計搜索算法,即讓元智能體去探索可能去完成任務的方法。這一過程基本上都是依靠提示詞工程完成的。
首先是先給它一系列系統提示詞。
然後,把基礎Prompt提到的資料給到元智能體,包括
1.任務的基本描述。
- 最基本的框架程式碼,比如格式化提示、封裝等操作名稱,還有調用其他基礎模型(FM)、API的能力。
3.任務輸入輸出的格式和範例。
4.原來迭代中生成的一些智能體形成的範例庫,包括其基線測試結果。
根據這些基礎提示,ADAS就可以開始運作,生成一個去解決特定問題的智能體。
在這個過程中,元智能體會進行兩輪反思保證生成的智能體具有新穎性和正確性。它會檢查新生成的程式碼框架是否有錯誤,相對於智能體範例庫裡的過往結果是否有足夠的創新。
元智能體還需要基於其對實用性能能力的"理解"對生成的智能體進行初步評估,判斷它是不是比之前的智能體性能更好。
當這些條件中有一些不滿足時,元智能體就得對生成的智能體或者修改或者乾脆回爐重造。
兩輪反思和修改過後,元智能體會把覺得又新又好的新生成的智能體送給第三步的評估系統。
評估系統會根據基線測試對這個智能體的能力打一個客觀分數,然後把它返回給到智能體範例庫。
元智能體會再根據之前的評分結果和範例庫裡的過往範例,繼續進行下一次迭代優化,以達到更高的任務性能分數。
一整條全自動化的鏈條就在這一過程中誕生了。而要生成一個效果絕佳的智能體,可能需要進行兩位數以上次數的迭代。
超越手搓智能體
通過ADAS方法自動化流程得到的智能體能有多複雜?下圖就是經過14次迭代後生成的一個智能體框架。
這個智能體的結構中有五個思維鏈給出初步答案。三個專家專家模型和一個模仿人類給出評價的模型對這些答案給出反饋後,這些答案會在優化流程階段進行三次修改加強。最後經評估篩選出來三個結果,合併給出最終答案。