忘記Tool檢索,擁抱全新Agent ToolGen!
傳統大模型工具調用的方法依賴于將工具描述作為上下文輸入,這受到上下文長度的限制,并需要單獨的、通常效率低下的檢索機制。
之前基于檢索的方法與ToolGen之間的比較。以前的方法使用檢索器根據相似性匹配檢索相關工具,這些工具進一步被放入提示中供LLMs選擇。ToolGen可以通過直接生成工具標記來檢索工具。ToolGen也可以在不依賴任何外部檢索器的情況下完成任務。
為此,微軟等提出ToolGen,這是一種將工具知識直接整合到LLM參數中的范式轉變,將每個工具表示為大型語言模型(LLM)詞匯表中的一個獨特虛擬標記(token),將工具檢索和執行集成到LLM的生成過程中。
ToolGen框架的說明。在工具虛擬化中,工具被映射到虛擬標記中。在接下來的三階段訓練中,ToolGen首先通過基于文檔預測工具標記來記憶工具。然后它學習通過從查詢中預測工具標記來檢索工具。最后,使用流水線數據,即軌跡,來微調最后階段的檢索器模型,從而產生ToolGen代理模型。
ToolGen的三個訓練階段:
- 工具記憶(Tool Memorization):在這個階段,模型通過將工具描述作為輸入,相應的工具標記作為輸出,進行微調,從而讓模型關聯每個虛擬工具標記與其文檔。
- 檢索訓練(Retrieval Training):在檢索訓練階段,模型學習基于用戶查詢生成相關的工具標記。這使得模型能夠根據用戶的查詢預測正確的工具標記。
- 端到端代理調優(End-to-End Agent-Tuning):在最后階段,模型使用代理完成任務的軌跡數據進行微調。ToolGen遵循迭代過程,首先生成一個計劃,然后是相應的動作標記。這個標記用于獲取工具文檔,模型使用這些文檔來生成完成任務所需的參數。這個過程會迭代進行,直到模型生成一個“完成”標記或達到最大輪數。
ToolGen的推理方法:
在推理過程中,ToolGen可能會生成預定義工具標記集之外的動作標記。為了防止這種情況,設計了一個受限的束搜索(beam search)生成策略,將輸出標記限制在工具標記集內。這在工具檢索和端到端代理系統中都得到了應用,顯著減少了動作生成步驟中的幻覺(hallucination)。
ToolGen框架允許LLM無需額外的檢索步驟即可訪問和利用大量工具,顯著提高了性能和可擴展性。在超過47,000個工具的實驗結果表明,ToolGen不僅在工具檢索和自主任務完成方面取得了優越的結果,而且為能夠適應不同領域工具的AI代理的新時代鋪平了道路。
在兩種設置中進行工具檢索評估:(1) 同域(In-Domain),在這種設置中,模型在同一領域內進行訓練和評估;以及 (2) 跨域(Multi-Domain),在這種設置中,模型在所有領域上進行訓練,并使用所有領域的全套工具進行評估。BM25、EmbSim和Re-Invoke是未經訓練的無監督基線模型。IterFeedback是一個具有多個模型和反饋機制的檢索系統。ToolRetriever是使用對比學習訓練的,而ToolGen是使用下一個標記預測進行訓練的。帶*號的結果不是我們實現的,而是從它們原來的論文中復制過來的,因此只在同域設置中有。對于同域設置中的ToolGen,我們允許生成空間包含所有標記,這與其他模型相比是一個更具挑戰性的場景。每個類別中最好的結果都加粗顯示。
在兩種設置下對未見過的指令進行端到端評估性能。在R設置中,GPT3.5和ToolLlama使用ToolRetriever,而ToolGen不使用外部檢索器。對于所有結果,SoPR和SoWR都評估了三次,并報告平均值。
工具記憶和檢索訓練的數據集示例。使用用戶角色來代表輸入,助手角色來代表輸出。
端到端Agent調優的示例
ToolGen的推理示例。首先給出一個沒有相關工具的系統提示。然后用戶提出任務查詢。ToolGen生成思考(Thought),然后使用用戶角色來提示模型生成動作(action)。生成動作后,再次使用用戶角色來提供工具文檔。模型將根據這份文檔生成工具輸入。
https://github.com/Reason-Wang/ToolGen
TOOLGEN: UNIFIED TOOL RETRIEVAL AND CALLING VIA GENERATION
https://arxiv.org/pdf/2410.03439
本文轉載自??PaperAgent??
