Agent遇上4萬個工具?一個Token搞定!
ToolGen: Unified Tool Retrieval and Calling via Generation
隨著大型語言模型(LLMs)的發展,它們無法與外部工具直接交互以自主執行任務,這仍然是一個關鍵的限制。傳統方法依賴于將工具描述作為上下文進行輸入,這受到上下文長度的限制,并且需要單獨的、通常效率不高的檢索機制。我們引入了 ToolGen,這是一種范式轉變,通過將每個工具表示為唯一的token,直接將工具知識集成到LLM的參數中。這使得LLM能夠生成工具調用和參數作為其下一次token預測能力的一部分,無縫結合工具調用和語言生成。我們的框架允許LLM訪問和利用大量的工具,而無需進行額外的檢索步驟,從而大大提高了性能和可擴展性。對超過 47,000 個工具進行的實驗結果表明,ToolGen 不僅在工具檢索和自主任務完成方面取得了優越的結果,而且為能夠適應不同領域工具的新時代 AI 代理奠定了基礎。ToolGen 通過從根本上將工具檢索轉變為生成過程,為更通用、高效和自主的 AI 系統鋪平了道路。ToolGen 能夠實現端到端的工具學習,并與其他先進技術(如思維鏈和強化學習)集成,從而擴展了LLMs 的實際能力。代碼開源:??https://github.com/Reason-Wang/ToolGen??
現實場景中,工具可能會很多,無法全部放進模型的上下文中。因此在給定一個用戶問題之后,一般會存在一個工具召回模塊,它的目標是從一個工具集中找到與用戶問題相關的工具來解決這個問題。
經典的ToolBench,有16000個工具集,總共有47000個API。從中撈出來與問題相關的工具,還是很困難的一個問題。
這個過程對應了下圖的上半部分。圖片上左為工具召回模塊,一般借助相似度方法獲取數量有限的工具。圖片上右就是常見的Agent引擎做出相應的Action。
而本文介紹的ToolGen,整個流程分為2大步
- 工具映射到詞表id,這樣模型做決策的時候,就只需要預測出對應的token id即可
- 微調新添加進去的id,分為3小步
- 輸入工具描述,輸出對應的工具token id,學習新增id的具體含義
- 輸入query,輸出對應的工具token id,學會根據用戶問題召回對應的工具
- 端到端的Agent訓練,引導模型輸出完整的plan,action,params
總的來說,ToolGen是將工具檢索和執行統一為一個生成任務,簡化了檢索過程,并且可以與其他LLM功能(如鏈式推理和強化學習)集成。訓練還算容易,最后結果也很亮眼。
本文轉載自?? 探索AGI??,作者: 獼猴桃
