掘金 人工智能 21小时前
【LLM Tool Learning】论文分享: Chain-of-Tools
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

该研究提出了Chain-of-Tools方法,旨在提升冻结大语言模型(LLM)的工具使用泛化能力。通过构建新的知识问答数据集SimpleToolQuestions,CoTools在数值推理和知识问答基准测试中均优于现有方法,尤其在处理大规模工具和未见工具时表现出色。该方法包括思维链推理、工具选择和工具调用三个主要环节,并开源了相关代码和数据。

🧠 CoTools的核心在于其创新的三阶段流程:思维链推理、工具选择和工具调用。该流程使模型能够智能地判断是否需要工具,并从大量工具中选择最合适的,最后调用工具完成任务。

🔍 工具选择环节采用了查询编码器和工具编码器,将问题和工具描述转换为向量,通过计算向量相似度来检索最匹配的工具。这种基于向量相似度的检索方法提高了工具选择的准确性。

⚙️ 工具调用环节利用上下文学习(ICL)提示生成工具参数,并结合正则表达式提取参数,确保工具能够正确接收输入。工具执行结果随后被整合到答案中,实现完整的推理链。

📊 实验结果表明,CoTools在数值推理和基于知识的问答任务中均优于基线方法。尤其是在大规模工具和未见工具场景下,CoTools展现出更强的泛化能力和更优异的性能。

💡 CoTools的优势在于其在冻结大语言模型参数的前提下,通过后训练方式优化工具选择和调用能力,降低了训练成本,提高了效率。

论文名称:Chain-of-Tools: Utilizing Massive Unseen Tools in the CoT Reasoning of Frozen Language Models

论文链接:arxiv.org/abs/2503.16…

机构:苏州大学

Github代码链接:github.com/fairyshine/…

简介

本文主要是提出了一种可以提升LLM工具使用的泛化能力的方法,叫Chain-of-Tools,并且构建了一个新的知识问答数据集叫SimpleToolQuestions。方法在两个数理基准(GSM8K-XL、FuncQA)以及 两个知识问答基准(KAMEL、Chain-of-Tools)的效果均优于Baseline,相关代码和数据也做了开源,值得一看。

Motivation

对于LLM的工具学习方法,主要有两种:

表1就展示了上述方法的优劣点,作者肯定是吹了一波自己的方法了,不赘述。各列名的含义如下:

框架概述

图2展示了Chain-of-Tools(CoTools)的工作流程,主要包括思维链推理(CoT Reasoning)、工具选择(Tool Selection )和工具调用(Tool Calling)三大部分。

思维链推理(CoT Reasoning)

在这一部分(图中左侧粉色区域),首先有一个任务提示(Task Prompt),包含问题(Query)和答案(Answer)相关部分。基础模型(Foundation Model)会基于此进行处理。这里有个工具判断模块(Tool Judge) ,它会判断是否需要调用工具。如果判断结果为不需要(NO),基础模型的语言模型头部(LM Head)就继续生成下一个标记(Generate Next Token) ;如果判断结果为需要(YES),则进入工具选择环节。

工具选择(Tool Selection )

这部分(图中上方右侧区域)又细分为工具检索(Tool Retriever )相关步骤:

工具调用(Tool Calling)

选好工具后进入这一环节(图中下方粉色区域) 。调用提示(Calling Prompt)包含工具相关信息(Tool 、Doc、Demo )、问题(Query)和答案片段(Answer Fragment)。基础模型基于此进行处理,接着执行工具(Tool Execution),将工具执行结果添加到答案中(Add in Answer ) 。

一句话总结

其实从上面的流程中可以看到,整个流程践行的思路就是:先看需不需要用工具,要用的话就从一堆工具里找最匹配问题的,找到后用这个工具处理问题并把结果加到答案里

接下来的部分,会挨个介绍一下整个方法的细节。

整体思路(Hidden State Based)

输入文本经过分词之后得到token序列,基础模型按照自回归的方式生成最后一个 token 的隐藏状态(hidden state):

这个隐藏状态不仅能用于生成下一个token:

还可以作为工具调用决策的核心依据。

所以整个过程就能在冻结基础模型参数的前提下,只对tool judge、query encoder和tool encoder进行后训练。

Tool Judge: Whether Calling Tools

这一步核心是通过基础模型的隐藏状态判断是否需要调用工具。

Step-1:工具使用判断

首先会定义一个工具使用判断函数:

为了方便博客撰写,直接贴上我处理好的带公式的图片了,下同:

Step-2:工具调用决策阈值

其次定义调用工具的决策阈值:

策略如下:

Step-3:目标函数:二元交叉熵损失

本质上是个二分类任务,所以通过二元交叉熵损失函数进行训练:

其中:

具体例子讲解

光看公式可能不知所以然哈,举个例子帮助理解。

假设用户提问:“计算 345 × 23 + sin (π/4) 的值”

Tool Retriever: Find Needed Tools

这一步的核心是通过查询编码器和工具编码器将问题与工具映射为向量,基于向量相似度实现工具检索。

Step-1:查询向量(Query Vector)生成

主要看下面的公式:

继续附上处理好的图片文字:

对查询编码之后,生成查询向量:

其中:

Step-2:工具向量(Tool Vector)生成

整个过程与查询向量生成差不多:

其中:

Step-3:相似度计算与工具选择

接下来就是公式9到10的逻辑了,其实就是通过向量点积计算问题与工具的语义相似度,选择得分最高的工具。

Step-4:目标函数:对比学习交叉熵损失

因为是要挑出最适合的工具,所以采用了对比学习损失:

其中:

具体例子讲解

假设用户提问:“查询 2024 年 7 月 23 日巴黎的天气情况”

Tool Calling: Use Retrieved Tools

这一步的核心是通过上下文学习(ICL)提示生成工具参数,并将工具执行结果融入回答。

Step-1:ICL 提示生成工具参数

Tool: WeatherQuery  Parameters:  - city: Shanghai  - date2024-05-20  

接下来模型就可以通过模仿示例格式,从问题中提取参数(如从 “巴黎 2024 年 7 月 23 日天气” 中解析出city=Parisdate=2024-07-23)。

Step-2:格式约束与参数提取

Please call the tool in the format:  [ToolName](parameter1=value1, parameter2=value2)  

Step-3:工具执行与结果融合

The weather in Paris on 2024-07-23 is sunny with a temperature of 25℃.

实验数据集

数值推理

使用ToolkenGPT创建的GSM8K-XL(含4种基础算术工具)和FuncQA(含13种算术工具,含单步/多步问题),评估侧重结果正确性,指标为Round Accuracy(单步)和Approx Accuracy(多步)。

基于知识的问答

采用KAMEL(234种工具,含人工标注集KAMEL(sup)和ChatGPT生成集KAMEL(syn))和新构建的STQuestions(1836种工具,999种训练集可见、837种测试集未见) ,重点评估工具选择准确性,尤其针对大规模工具和未见工具场景。

实验结果

主要结论

①【表2】在数值推理(GSM8K-XL、FuncQA)和基于知识的问答(KAMEL、STQuestions)场景的实验中,CoTools在工具选择上全面优于基线方法,尤其在大规模工具和未见工具场景表现出色且提升了模型可解释性。

②【表3】在数值推理任务中,CoTools在GSM8K-XL和FuncQA数据集上的表现优于0-shot Prompting、CoT Prompting等基线方法,且相比ToolkenGPT在部分场景更具优势,其性能依赖基础模型能力且能增强模型表现。

③【表4】在KBQA任务中,CoTools在KAMEL(含高质量和低质量训练数据)及STQuestions(含大量可见和未见工具)场景下的工具选择准确性均优于ToolkenGPT,尤其在低质量数据和未见工具场景优势显著。

Data Synthesis Analysis

④【图4】在使用高质量人工标注的KAMEL(sup)数据集微调基础模型时,CoTools和ToolkenGPT在工具选择准确性上表现均较好,且CoTools的前5选择准确性接近100%,在真实场景中表现稳定。

⑤【图5】在使用ChatGPT合成的低质量KAMEL(syn)数据集微调基础模型时,CoTools的工具选择准确性比ToolkenGPT高20%以上,显示出对比学习在数据有限场景下对工具区分能力的提升优势。

Tool Use Analysis

⑥【图6】在工具规模达千级的STQuestions基准测试中,CoTools的工具选择准确率显著高于ToolkenGPT,且随着工具数量增加,其凭借大语言模型的强语言理解能力在相似工具场景中优势更明显。

⑦【图7】在未见工具场景中,ToolkenGPT存在显著偏向调用已见工具的问题,而CoTools能更有效区分已见与未见工具,减少对已见工具的错误调用。

Hidden States Analysis

⑧【图8】学习率越大,工具检索模块共享参数W_dim的权重变化越显著,部分参数从初始值 1 大幅下降至接近 0。

⑨【图9】归一化后,不同学习率下的 W_dim权重呈现相似趋势,共享参数中数值较高的维度对工具选择起关键作用。

⑩【图10】随着学习率增加,工具检索的关键维度更集中,仅用部分高权重维度(如学习率 0.01 时的 1561 个维度)进行检索,准确率下降极少,表明 LLM 隐藏状态维度存在语义信息分工。

总结

本文方法属于后训练阶段的监督微调(SFT) 。主要是通过在 KAMEL 等数据集上微调冻结的基础模型(如 GPT-3.5),优化其工具选择和调用能力。所以说实际训练的时候,基本上就是主要做Tool Judge和Tool Retriever的训练,至于在Tool Calling之后产生的包含Tool调用的CoT数据怎么使用,就看具体需求了,也可以把论文的思路当作是构建Tool调用训练数据的一种方法。

但在实际落地的过程中,本文这个训练方法要想做到游泳,还需要注意的问题:

① 工具描述依赖性强:CoTools 依赖工具文档的准确性和完整性,若工具描述模糊或缺失,可能导致选择错误。

② 上下文依赖性:用户问题的表述方式可能影响工具选择准确性,所以PE工程设计要足够鲁棒,能够适用不同的用户问题。

③ 大规模工具效率瓶颈:当工具数量达到千级时,动态检索和匹配的计算成本显著增加,可能影响实时响应速度。

④ 未见工具泛化局限:尽管 CoTools 在实验中表现较好,但实际场景中工具功能可能就高度专业化,需更多标注数据才能覆盖长尾需求。实验中采取的两个场景还是偏“简单”了。

⑤ 学习率敏感问题:如论文图 8-10 所示,学习率调整对模型参数稳定性影响较大,需精细调优以避免性能波动。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Chain-of-Tools LLM 工具使用 大语言模型 工具学习
相关文章