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