GPT-4絕對性能暴漲74.4%!UIUC蘋果華人團隊提出CodeAct,用Python代碼統一LLM智能體行動
【新智元導讀】最近,UIUC蘋果華人提出了一個通用智能體框架CodeAct,通過Python代碼統一LLM智能體的行動。
一直以來,LLM智能體被衆多業界AI大佬看好,甚至有望成爲將人類從瑣碎工作中解放出來的利器。
但是,它們該如何與世界進行最佳互動?
最近,來自UIUC和蘋果的華人研究員,提出了一種全新的智能體框架——CodeAct。
它通過采用可執行的Python代碼,來統一LLM智能體的行動。
論文地址:https://arxiv.org/pdf/2402.01030.pdf
與多數現有的LLM智能體不同的是,CodeAct的突出之處在于:能夠充分利用現有LLM對代碼數據的預訓練,以實現低成本高效的采用。
而且本質上可以通過控制和數據流支持複雜的操作,還可以使用廣泛的軟件包來擴展行動空間和自動反饋。
對此,作者還構建了一個CodeActAgent工具,在Mistral 7B模型之上搭建,能夠通過對話完成代碼任務。
比如,「你能創建100個隨機數據點(每個數據點的維度爲 2)並創建散點圖嗎?運行 k-means 對它們進行聚類並可視化」。
讓LLM成爲最優智能體
當允許訪問API的行動模塊進行增強時,LLM的行動空間可以擴展到傳統的文本處理之外。
從而讓LLM獲得工具調用和內存管理等功能,並冒險進入現實世界的任務,例如控制機器人並進行科學實驗 。
那麽,如何有效拓展LLM智能體解決複雜現實問題的行動空間?
如下圖1左上,許多現有研究已經檢驗了使用文本,或JSON來生成行動。
然而,這兩種方法通常都受到行動空間範圍的限制(行動通常是針對特定任務定制的)和靈活性有限(例如無法在單個行動中組合多個工具)。
另外一些研究展示了,使用LLM生成代碼來控制機器人或遊戲角色的潛力。
然而,它們通常依賴于預先指定的控制原語和手工設計的提示,更重要的是,它們很難根據新的環境觀察和反饋動態調整或發出行動。
對此,這項研究提出了一個通用框架CodeAct,允許LLM生成可執行的Python代碼作爲行動(圖1右上)。
CodeAct旨在處理各種應用程序,並具有獨特的優勢:
(1) CodeAct與Python解釋器集成,可以執行代碼行動,並動態調整先前的行動,或根據通過多輪交互(代碼執行)收到的觀察結果發出新行動。
(2) 代碼行動允許LLM利用現有軟件包。CodeAct可以使用現成的Python包來擴展行動空間,而不是手工制作的特定于任務的工具。它還允許大模型使用大多數軟件中實現的自動反饋(例如錯誤消息),通過自我調試其生成的代碼來改進任務解決。
(3) 代碼數據廣泛應用于當今大模型的預訓練中。這些模型已經熟悉結構化編程語言,因此可以經濟高效地采用 CodeAct。
(4) 與JSON和預定義格式的文本相比,代碼本質上支持控制和數據流,允許將中間結果存儲爲變量以供重用,並用一段代碼允許組合多個工具來執行複雜的邏輯操作(例如,if-語句、for循環),從而釋放大模型預訓練的編程知識來處理複雜任務的潛力。
在圖1中,使用CodeAct(右上角)的法學碩士可以通過for循環將相同的工具序列應用到所有輸入,只需一個行動。而文本或JSON必須對每個輸入采取行動。
CodeAct框架
在圖2中,首先介紹了LLM智能體在現實世界中使用的一般多輪交互框架,該框架考慮了三個角色:
智能體、用戶、環境。
研究人員將交互定義爲智能體與外部實體(用戶或環境)之間的信息交換。
在每一輪交互中,智能體從用戶(如自然語言指令)或環境(如代碼執行結果)接收觀察結果(輸入),通過思維鏈(CoT)選擇性地規劃其行動,並以自然語言或環境向用戶發出行動(輸出)。
CodeAct采用Python代碼來整合智能體與環境交互的所有操作。
在CodeAct中,向環境發出的每個動作都是一段Python代碼,而智能體將收到代碼執行的輸出(如結果、錯誤)作爲觀察結果。
CodeAct作爲強大工具使用框架的前景
研究中,作者進行了一項對照實驗,以了解哪種格式(文本、JSON、CodeAct)更有可能引導LLM生成正確的原子工具調用。
本實驗的表現,反映了LLM對相應格式的熟悉程度。
研究人員假設使用CodeAct調用工具是爲模型使用工具的更自然的方式,模型通常在訓練期間廣泛接觸代碼數據。
對于大多數LLM,即使在其控制和數據流強度被削弱的原子操作(簡單化的工具使用場景)中,CodeAc也能實現相當或更好的性能。
與閉源LLM相比,CodeAct的改進在開源模型中更爲突出。
此外,對于微調開源LLM來說,代碼數據通常比專門JSON或文本工具調用格式更容易訪問。盡管JSON始終弱于其他開源模型方法,但它在閉源LLM中實現了不錯的性能,這表明這些閉源模型可能已經針對其JSON功能進行了有針對性的微調。
這些結果表明,對于開源大模型來說,針對CodeAct進行優化是比其他方法更好的途徑來提高其工具使用能力,因爲由于在預訓練期間廣泛接觸代碼數據,它們已經表現出了良好的初始CodeAct能力。
CodeAct以更少的交互完成更多工作
除此之外,作者研究了LLM智能體是否可以,從需要複雜工具使用模式的問題上的代碼控制和數據流中受益。
這裏,研究人員策劃了一個基准來評估LLM解決通常需要多次調用多個工具的複雜任務的能力。
作者在表3中列出了全部結果,在圖1中列出了可視化結果子集。
CodeAct通常具有更高的任務成功率(17個已評估LLM中有12個)。此外,使用CodeAct執行任務所需的平均交互輪數也較低。
比如,與次佳操作格式(文本)相比,最佳模型gpt-4-1106-preview實現了20.7%的絕對改進,同時平均減少了2.1個交互回合。
然而,就CodeAct的絕對性能而言,開源和閉源LLM之間仍存在顯著差距,最佳開源模型的絕對性能提高了13.4%,而最佳閉源模型gpt-4-1106-preview的絕對性能提高了74.4%。
這可能是由于開源模型的任務解決能力較弱,無法在沒有演示的情況下遵循複雜指令,這表明迫切需要改進開源 LLM,以在零樣本設置下完成實際任務。
CodeAct受益于多輪交互和現有軟件包
研究人員還展示了LLM智能體如何與Python集成,並使用現有軟件在多輪交互中執行複雜的任務。
得益于在預訓練期間學到的豐富的Python知識,LLM智能體可以自動導入正確的Python庫來解決任務,而不需要用戶提供的工具或演示。
如圖3所示,CodeActAgent可以使用Pandas下載和處理表格數據,使用Scikit-Learn進行機器學習訓練-測試數據分割和回歸模型訓練,並使用Matplotlib用于數據可視化。
此外,使用交互式Python解釋器執行代碼可以自動顯示錯誤消息,幫助LLM智能體在多輪交互中「自我調試」其操作,並最終正確完成人類用戶的請求。
構建開源LLM智能體
CodeAct所展示潛力的結果,激勵研究人員構建一個開源的LLM智能體,可以通過CodeAct與環境交互,又可以使用語言與人類進行交流。
爲了提高開源LLM的CodeAct能力,作者介紹了CodeActInstruct,這是一個包含智能體與環境交互軌迹的指令微調數據集。
如表4,是CodeActInstruct的數據組成,以及與先前工作的對比。
接下來,研究人員對Llama-2 7B和Mistral 7B的CodeActInstruct和一般對話進行了微調,進而獲得CodeActAgent
CodeActAgent在CodeAct任務中表現出色。
如表5所示,CodeActAgent(兩種變體)在MINT的域內和域外子集上都比所有評估的開源LLM表現更好。
在上,作者發現CodeActAgent(Mistral)的性能優于類似規模(7B和13B)的開源LLM,甚至達到了與70B模型相似的性能。
令人驚訝的是,Llama-2變體沒有觀察到任何改進。
CodeActAgent概括爲文本操作。
當對域外文本操作進行評估時,從未針對文本操作進行過優化的CodeActAgent (LLaMA2, 7B) 實現了與對文本操作進行顯式調整的AgentLM-7B相當的性能。
在表5中,還發現CodeActAgent保持或提高了一般LLM任務的性能。
在表 5 中,研究人員還發現CodeActAgent(兩個變體)在測試的一般LLM任務中表現更好,除了CodeActAgent(Mistral-7B)在MMLU上略有下降。---[新智元報導*編輯:桃子/來源: 新智元 ]
參考資料:https://twitter.com/xingyaow_/status/1754556835703751087