多步推理碾壓GPT-4o,無需訓(xùn)練性能提升10%!斯坦福開源通用框架OctoTools
大型語言模型(LLMs)目前仍然很難處理需要多步驟推理、特定領(lǐng)域知識或外部工具集成的復(fù)雜任務(wù),有研究工作探索了使用預(yù)先構(gòu)建的外部工具來增強LLMs處理復(fù)雜任務(wù)的能力,但這些方法需要對模型進(jìn)行微調(diào)或額外訓(xùn)練以實現(xiàn)工具的集成,在不同任務(wù)之間難以靈活適應(yīng)。
現(xiàn)有的方法要么依賴于靜態(tài)的、預(yù)定義的工具集,要么缺乏高效的工具選擇和規(guī)劃機制,這種低效性會導(dǎo)致任務(wù)執(zhí)行出錯、計算成本增加,以及在應(yīng)用于新領(lǐng)域時適應(yīng)性受限。
傳統(tǒng)增強LLMs的方法包括少量樣本提示(few-shot prompting)、思維鏈(chain-of-thought reasoning)以及與外部工具接口的功能調(diào)用API;有的框架如LangChain和AutoGen允許LLMs夠使用外部資源,但通常智能用于指定應(yīng)用場景或需要大量的預(yù)配置,沒有提供一種統(tǒng)一的多步驟規(guī)劃和執(zhí)行方法,因此在處理復(fù)雜推理問題時效果不佳。
此外,大多數(shù)現(xiàn)有方法缺乏對工具選擇的結(jié)構(gòu)化方法,導(dǎo)致執(zhí)行效率低下。
最近,斯坦福大學(xué)推出一個無需訓(xùn)練、用戶友好且易于擴展的開源智能體框架OctoTools框架,包含對工具選擇的結(jié)構(gòu)化方法,大幅提高執(zhí)行效率的同時,還能夠解決跨多個領(lǐng)域的復(fù)雜推理。
OctoTools引入了標(biāo)準(zhǔn)化的工具卡來封裝工具功能,一個用于高級和低級規(guī)劃的規(guī)劃器(planner),以及一個執(zhí)行工具使用的執(zhí)行器(executor)。
論文鏈接:https://arxiv.org/pdf/2502.11271
代碼鏈接:https://github.com/octotools/octotools
研究人員在16個不同的任務(wù)(包括MathVista、MMLU-Pro、MedQA和GAIA-Text)上驗證了OctoTools的通用性,比GPT-4o的平均準(zhǔn)確率提高了9.3%
此外,當(dāng)提供相同的工具集時,OctoTools的性能全面優(yōu)于AutoGen、GPT-Functions和LangChain,最多提高了10.6%的性能,在任務(wù)規(guī)劃、有效工具使用和多步問題解決方面具有非常大的優(yōu)勢。
OctoTools框架
OctoTools框架的核心設(shè)計理念是讓人工智能系統(tǒng)能夠高效地使用外部工具,而無需額外的訓(xùn)練或框架調(diào)整。
主要包含工具卡片、規(guī)劃器、執(zhí)行器,還包含一個任務(wù)指定的工具集優(yōu)化算法,能夠?qū)W習(xí)為下游任務(wù)選擇最有用的工具子集。
整個過程不斷迭代,直到找到完整的解決方案。
工具卡片(Tool Cards)
工具卡片定義了工具使用的元數(shù)據(jù),每個工具卡片的設(shè)計與框架是相對獨立的,用戶可以在不修改底層框架或智能體邏輯的情況下,輕松集成各種工具。
新的工具卡片可以無縫集成到框架中,而無需進(jìn)行額外的訓(xùn)練或?qū)蚣苓M(jìn)行調(diào)整,極大提高了工具的可擴展性和靈活性。
每個工具卡片代表一個工具及其必要的元數(shù)據(jù),包括工具的名稱、輸入和輸出類型,以及命令示例,為規(guī)劃器和執(zhí)行器提供了開發(fā)者的指導(dǎo)建議。
比如,圖像描述工具(Image_Captioner_Tool)指出「在復(fù)雜場景中可能會出錯」以及「可以考慮使用其他工具進(jìn)行驗證」;目標(biāo)檢測工具(Object_Detector_Tool)注明了其在檢測對象方面的限制。
為了確保交互上的一致性,每個工具卡片都實現(xiàn)了兩個標(biāo)準(zhǔn)功能:
execute()函數(shù)封裝了工具的核心功能,例如生成代碼片段或執(zhí)行目標(biāo)檢測,執(zhí)行結(jié)果以結(jié)構(gòu)化格式存儲,以支持不同的輸出類型,例如生成的代碼、檢測到的目標(biāo)或存儲的文件;
get_metadata()函數(shù)允許規(guī)劃器和執(zhí)行器動態(tài)評估工具的能力,并理解其使用限制。
規(guī)劃器(Planner)
規(guī)劃器負(fù)責(zé)從宏觀和微觀兩個層面進(jìn)行規(guī)劃,不僅關(guān)注整體目標(biāo),還會逐步細(xì)化每一步的動作,確保任務(wù)能夠高效、精準(zhǔn)地執(zhí)行。
初始化
規(guī)劃器首先會檢查工具箱,加載所有工具卡片,每個工具都帶有描述其輸入輸出模式和使用限制的元數(shù)據(jù)。
為了更高效地使用工具,規(guī)劃器會根據(jù)專家建議或通過少量示例(few-shot)進(jìn)行優(yōu)化,選出工具子集。
查詢分析與動作預(yù)測
當(dāng)輸入一個查詢時,規(guī)劃器會根據(jù)其初始化信息,為工具的使用制定一個初步的、宏觀的計劃:總結(jié)查詢的目標(biāo),分析所需的技能,識別相關(guān)的工具,并特別指出需要驗證的環(huán)節(jié),確保每個后續(xù)的子目標(biāo)都與原始查詢保持一致。
隨后,在每步內(nèi)會提出一個行動(微觀計劃),實時細(xì)化并執(zhí)行每個子目標(biāo),根據(jù)新信息或反饋進(jìn)行調(diào)整。
上下文驗證與解決方案總結(jié)
在每次執(zhí)行命令后,上下文驗證器會檢查當(dāng)前上下文是否已經(jīng)解決了問題,是否所有子目標(biāo)都已滿足,并識別是否有模糊處理。
如果問題仍未解決,規(guī)劃器會繼續(xù)進(jìn)入下一個循環(huán),預(yù)測下一個動作。
整合答案時,會結(jié)合中間工具的輸出,追溯推理步驟,并以簡潔、用戶友好的方式呈現(xiàn)最終解決方案。
執(zhí)行器(Executor)
執(zhí)行器負(fù)責(zé)生成可執(zhí)行的命令,調(diào)用工具,并將結(jié)構(gòu)化的結(jié)果保存在上下文中。
命令預(yù)測
當(dāng)規(guī)劃器預(yù)測出動作時,命令生成器(由語言模型驅(qū)動)會創(chuàng)建一個低層次的命令,形式為可執(zhí)行的Python腳本,調(diào)用指定工具,并提供必要的輸入,同時完成數(shù)據(jù)準(zhǔn)備工作。
命令執(zhí)行
命令執(zhí)行器會在Python環(huán)境中運行生成的命令,并獲取結(jié)果,包括工具的輸出、日志或錯誤信息。軌跡保留了采取的動作、生成的代碼以及獲得的結(jié)果的清晰歷史記錄。
針對任務(wù)優(yōu)化工具集
OctoTools工具箱包含多種工具,涵蓋了不同的模態(tài)和技能,啟用所有可用工具時具有很強的通用性,當(dāng)為某個任務(wù)提供少量驗證樣本時,選出工具子集可以進(jìn)一步提高效率和性能表現(xiàn)。
研究人員提出了一種自動化的算法為每個任務(wù)優(yōu)化工具集配置,采用貪心搜索策略將計算復(fù)雜度降低到O(n),與工具數(shù)量線性相關(guān)。
實驗結(jié)果
主要結(jié)論
研究人員對比了工具集優(yōu)化后的框架OctoTools與其他三種基線方法的性能,包括:
1. 零樣本(zero-shot):基礎(chǔ)語言模型(gpt-4o-2024-08-06)直接回答問題,沒有任何額外的提示;
2. 思維鏈(chain-of-thought,CoT):基礎(chǔ)語言模型被提示“逐步思考”,以生成逐步推理的過程;
3. OctoTools基礎(chǔ)版(OctoTools-base):僅使用基礎(chǔ)工具,不進(jìn)行任何外部集成。
在16個基準(zhǔn)測試中,OctoTools在性能上取得了顯著提升,比零樣本和連貫推理基線分別高出9.3%和7.7%,比零樣本(高出4.2%)和思維鏈(高出2.6%)的性能更強,表明該框架的逐步推理能力對性能的提升有顯著貢獻(xiàn),即使不依賴外部工具集成也是如此。
其他智能體框架
研究人員還對比了三種常用的通用人工智能(GenAI)智能體框架:
1. GPT-Functions:使用GPT-4o通過函數(shù)調(diào)用用戶指定的工具;
2. LangChain:提供多智能體協(xié)作、長期記憶和工具使用能力;
3. AutoGen:能夠創(chuàng)建多個具有工具使用能力的自主智能體。
為了公平對比每個系統(tǒng)在多步驟中規(guī)劃和使用工具的能力,研究人員將所有智能體框架(包括OctoTools)配置為使用相同的底層模型(GPT-4o)和超參數(shù),使用相同的工具集,最大推理步數(shù)為10步,時間限制為300秒。
總體而言,OctoTools的表現(xiàn)優(yōu)于其他智能體框架,平均準(zhǔn)確率比AutoGen高出10.6%,比GPT-Functions高出7.5%,比LangChain高出7.3%