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