
實時航班追蹤背后的技術:在線飛機追蹤器的工作原理
近些年,開源大語言模型(LLM)進步飛快,例如 LLaMA 和 Vicuna 等模型在各種語言理解、生成任務上展現了極佳的水平。但是,當它們面對更高級別的任務,例如根據用戶指令使用外部工具(API)時,仍然有些力不從心。
為了解決這個問題,面壁智能聯合來自 TsinghuaNLP、耶魯、人大、騰訊、知乎的研究人員推出 ToolLLM 工具學習框架,加入 OpenBMB 大模型工具體系“全家桶”。ToolLLM 框架包括如何獲取高質量工具學習訓練數據、模型訓練代碼和模型自動評測的全流程。作者構建了 ToolBench 數據集,該數據集囊括 16464 個真實世界 API。ToolLLM 框架的推出,有助于促進開源語言模型更好地使用各種工具,增強其復雜場景下推理能力。該創新將有助于研究人員更深入地探索 LLMs 的能力邊界,也為更廣泛的應用場景敞開了大門。
目前 ToolLLM 的所有相關代碼均已開源,以下是作者訓練的 ToolLLaMA 的與用戶交互對話并實時進行推理的演示:
工具學習的目標是讓LLM能給定用戶指令與各種工具(API)高效交互,從而大大擴展LLM的能力邊界,使其成為用戶與廣泛應用生態系統之間的高效橋梁。盡管已經有一些工作(例如Gorrila、APIBank等)探索了如何讓LLM掌握API調用能力,這些工作仍然存在以下局限性:
1. 有限的API:很多研究沒有使用真實世界的API(如RESTful API),存在API范圍有限、多樣性不足的問題
2.??場景受限:先前工作大多集中在單一工具的使用,而實際場景中可能需要多個工具協同工作來完成復雜任務;此外,現有研究通常假設用戶提供與指令相關的API,但現實中可供選擇的API可能非常多,用戶難以從中高效選擇
3. 模型規劃和推理能力不足:現有模型推理方法如CoT、ReACT過于簡單,無法充分利用LLM的潛力來處理復雜指令,因而難以處理復雜任務
—
為了激發開源LLM的工具使用能力,該研究提出了ToolLLM,一個包括數據構建、模型訓練和評估過程的通用工具學習框架。作者首先收集高質量的工具學習指令微調數據集ToolBench,隨后對LLaMA進行微調得到ToolLLaMA,最后通過ToolEval評估ToolLLaMA的工具使用能力。
—
ToolBench 的構建完全由最新的 ChatGPT(gpt-3.5-turbo-16k)自動化完成,無需人工標注。在 ToolBench 上訓練出來的模型具備極強的泛化能力,能夠直接被應用到新的 API 上,無須額外訓練。下表列出了 ToolBench 與之前相關工作的對比情況。ToolBench 不僅在多工具混合使用場景獨一無二,且在真實 API 數量上也一騎絕塵。
ToolBench 的構建包括三個階段:API 收集,指令生成和解路徑標注:
API 收集分為 API 爬取、篩選和響應壓縮三個步驟。
API 爬取:作者從 RapidAPI Hub 上收集了大量真實多樣的 API。RapidAPI 是一個行業領先的 API 提供商,開發者可以通過注冊一個 RapidAPI 密鑰來連接各種現有 API。所有 RapidAPI 中的 API 可以分為 49 個類別,例如體育、金融和天氣等;每個類別下面有若干工具,每個工具由一個或多個 API 組成?
API 篩選:作者對在 RapidAPI 收集到的 10,853 個工具(53,190 個 API)基于能否正常運行和響應時間、質量等因素進行了篩選,最終保留了3,451 個高質量工具(16,464個API)
API 響應壓縮:某些 API 返回的內容可能包含冗余信息導致長度太長無法輸入 LLM,因此作者對返回內容進行壓縮以減少其長度并同時保留關鍵信息。基于每個API的固定返回格式,作者使用 ChatGPT 自動分析并刪除其中不重要信息,大大減少了 API 返回內容的長度
為了兼顧生成高質量的指令和保證指令能用 API 完成,作者采用自底向上的方法進行工具指令生成,即從收集的 API 入手,反向構造涵蓋各種 API 的指令。具體而言,作者首先從整個 API 集合中采樣各種各樣的 API 組合,接著通過 prompt engineering 讓 ChatGPT 構思可能調用這些 API 的指令。
其中 prompt 包括了每個 API 的詳細文檔,這樣 ChatGPT 能夠理解不同 API 的功能和 API 之間的依賴關系,從而生成符合要求的人類指令。具體的采樣方式分為單工具指令(指令涉及單工具下的多個 API)和多工具指令(指令涉及同類或跨不同類的工具的多個 API)。通過該方法,作者最終自動構造逾 20 萬條合格的指令。
給定一條指令?,作者調用 ChatGPT 來搜索(標注)一條有效的解路徑(動作序列):{,…,} 。這是一個多步決策過程,由 ChatGPT 的多輪對話來完成。在每個時間步 t,模型根據先前的行為歷史和 API 響應預測下一步動作?,即:
其中??表示真實的 API 響應。每個動作包括了調用的 API 名稱,傳遞的參數和為什么這么做的“思維過程”。為了利用 ChatGPT 新增的函數調用(function call)功能,作者將每個 API 視為一個特殊函數,并將其 API 文檔放入 ChatGPT 的函數字段來讓模型理解如何調用 API。此外,作者也定義了 “Give Up” 和 “Final Answer” 兩種函數標識行為序列的結束。
在實際應用中,作者發現傳統的 CoT 或 ReACT 算法在決策過程中存在錯誤累加傳播和搜索空間有限的問題,這導致即使是最先進的 GPT-4 在很多情況下也很難成功找到一條解路徑,從而對數據標注形成了一定的障礙。
為解決這個問題,作者采用構建決策樹的方式擴展搜索空間增加找到有效路徑的概率。作者提出 DFSDT 算法,讓模型評估不同的推理路徑并沿著有希望的路徑繼續前進,或者放棄當前節點并擴展一個新的節點。
為驗證 DFSDT 的效果,作者基于 ChatGPT 比較了 DFSDT 與 ReACT 的差異。此外,作者還引入了更強的 baseline (ReACT@N),它進行多次 ReACT 推理直到找到一條合理的解路徑。如上圖所示,DFSDT 在所有場景下的通過率(pass rate)顯著更高,超越了兩種 baseline。此外,DFSDT 在更復雜場景下(I2,I3)的效果提升更大,這說明擴大搜索空間更加有助于解決復雜的工具調用任務。
總而言之,DFSDT 算法顯著提升了模型推理能力,增加了解路徑標注的成功率。最終,作者生成了 12000+ 條指令-解路徑數據對用于訓練模型。
—
為了確保準確可靠的工具學習性能評測,作者開發了一個名為 ToolEval 的自動評估工具,它包含兩個評測指標:通過率(Pass Rate)和獲勝率(Win Rate)。通過率是指在有限步驟內成功完成用戶指令的比例;獲勝率則基于 ChatGPT 衡量兩個不同解路徑的好壞(即讓 ChatGPT 模擬人工偏好)。
為了檢驗這種評估方式的可靠性,作者首先收集了大量人類標注結果,并且發現利用 ChatGPT 做自動評測與人類評判的一致性高達 75.8%,這意味著 ToolEval 的結評測果與人類判斷高度相似。此外, ToolEval 的評測在多次重復時方差非常小(3.47%),小于人類的 3.97%,這表明,ToolEval 的評測一致性超越了人類,更加穩定可靠。
—基于 ToolBench,作者微調 LLaMA 7B 模型并得到了具備工具使用能力的 ToolLLaMA。由于訓練數據中存在十分多樣的工具與指令,ToolLLaMA 學習到了非常強的泛化能力,能在測試中處理一些在訓練期間未見過的新任務、新工具。為了驗證 ToolLLaMA 的泛化能力,作者進行了三個級別的測試:
1. 單一工具指令測試(I1):評測模型解決面向單工具的在訓練中未學習過的新指令
2.??類別內多工具指令測試(I2):評測模型如何處理已經再訓練中學習過的類別下的多種工具的新指令3.??集合內多工具指令測試(I3):考查模型如何處理來自不同類別的工具的新指令
作者選擇了兩個已經針對通用指令微調的 LLaMA 變體 Vicuna 和 Alpaca 以及OpenAI的ChatGPT 和 Text-Davinci-003 作為 baseline。對所有這些模型應用了更加先進的 DFSDT 推理算法,此外對 ChatGPT 應用了 ReACT。在計算 win rate 時,將每個模型與 ChatGPT-ReACT 進行比較。下面兩幅圖總結了 ToolLLaMA 模型和其他模型比較結果
根據上圖顯示,ToolLLaMA 在 pass rate 和 win rate 上顯著優于傳統的工具使用方法 ChatGPT-ReACT,展現出優越的泛化能力,能夠很容易地泛化到沒有見過的新工具上,這對于用戶定義新 API 并讓 ToolLLaMA 高效兼容新 API 具有十分重要的意義。此外,作者發現 ToolLLaMA 性能已經十分接近 ChatGPT,并且遠超 Davinci, Alpaca, Vicuna 等 baseline。
在實際情況下用戶可能無法從大量的 API 中手動推薦和當前指令相關的 API,因此需要一個具備 API 自動推薦功能的模型。為解決這個問題,作者調用 ChatGPT 自動標注數據并依此訓練了一個 sentence-bert 模型用作 dense retrieval。
為了測試API檢索器的性能,作者比較了訓練得到的 API 檢索器和 BM25、Openai Ada Embedding 方法,發現該檢索器效果遠超 baseline,表現出極強的檢索性能。此外,作者也將該檢索器與 ToolLLaMA 結合,得到了更加符合真實場景的工具使用模型 pipeline。
近年來,大模型在諸多領域展現出驚人的應用價值,持續刷新各類下游任務的效果上限。盡管大模型在很多方面取得了顯著的成果,但在特定領域的任務上,仍然存在一定的局限性。這些任務往往需要專業化的工具或領域知識才能有效解決。因此,大模型需要具備調用各種專業化工具的能力,這樣才能為現實世界任務提供更為全面的支持。最近,新的范式?大模型工具學習(Tool?Learning)應運而生。這一范式的核心在于將專業工具與基礎模型的優勢相融合,以在問題解決方面達到更高的準確性、效率和自主性,工具學習極大地釋放了大模型的潛力。
在應用方面,ChatGPT Plugins 的出現補充了 ChatGPT 最后的短板,使其可以支持連網、解決數學計算,被稱為 OpenAI的“App Store” 時刻。然而直到現在,它僅支持部分OpenAI Plus用戶,大多數開發者仍然無法使用。
為此,面壁智能之前也推出了工具學習引擎 BMTools,一個基于語言模型的開源可擴展工具學習平臺,它將是面壁智能在大模型體系布局中的又一重要模塊。研發團隊將各種各樣的工具(例如文生圖模型、搜索引擎、股票查詢等)調用流程都統一到一個框架上,使整個工具調用流程標準化、自動化。
開發者可以通過 BMTools,使用給定的模型(ChatGPT、GPT-4)調用多種多樣的工具接口,實現特定功能。此外,BMTools 工具包也已集成最近爆火的 Auto-GPT 與 BabyAGI。未來,團隊還將圍繞大模型工具學習有更多發布,敬請大家期待!
本文章轉載微信公眾號@PaperWeekly