CRAFT: CUSTOMIZING LLMS BY CREATING AND RETRIEVING FROM SPECIALIZED TOOLSETS

Introduction

大语言模型通常通过结合tools来解决复杂的目标。通过生成代码片段并通过特定任务的应用程序接口( Application Programming Interface,API )执行,它们可以将某些功能卸载到专用的外部模块,例如图像编码和执行计算。

  • 当前问题

​ 当前大多使用工具来增强LLM的方法收到通用API的限制,缺乏将它们裁剪到特定任务的灵活性。将LLM适应于多种领域和不断发展的应用程序涉及到要为特定领域制定更专门的API。

image-20250724151716607

  • 本文方法

    先前的方法有的是只有一种类型的tool或者是工具根本不可靠。因此本文为给定的task创建正确,多样且可以重复使用的工具集,来解决多种问题。通过指导LLM生成具体的代码解决方案来解决task的训练问题(按我的理解就是不需要为给定的task进行训练了)

​ 在推理阶段从给定的大型工具集中检索到给定问题的相关工具是很难的。

Method

image-20250724154438906

Generation

提出一种迭代式的方法从源数据集中抽取问题-答案对。定义$Q$是被采集到的问题集合,$R_i$代表第$i$次迭代剩下的问题集合。初始时,$R_i$从原版数据集随机抽样$n$个,$R_i$就是剩余部分。

  • 迭代环节

    对于$R_i$中的每一个$q_r$,采用其和每一个$q_s \in Q$的相似度的最大值作为改问题与采样数据集的相似度。(就是计算其与$Q$中每一个问题的相似度,取最大的一个作为代表)

    之后为了保证多样性,每一次迭代加入k个问题到$Q$中。加入方式是取最小的前k个相似度问题,可以定义为如下公式:min-max sampling strategy
    $$
    Q \leftarrow Q \cup \arg\text{TopK}{\min} \left( \max{q_s \in Q} \text{sim}(q_r, q_s) \mid q_r \in R_i \right)
    $$
    k被设定为100,sim(.)代表余弦相似度,其中表征通过SimCSE计算。

对于每一个问题$q_r\in Q$,文章使用GPT-4来生成特定的可以在解释器中执行并得到正确结果的python解决方案。

Abstraction

这一步旨在将具体的代码转变为通用代码。做法:

  1. 通过指示GPT-4将所有特定变量名称替换为通用名称(例如,CAT→动物,桌子→对象)
  2. 将内部函数调用的文本输入作为工具的参数(例如,date = df[“ date”]→date→date = df [列名],其中列名称的值由工具用户传递给列的值),用更多的通用对应物代替它们,以适应类似的问题。
  3. 使用GPT-4将函数名称改成合适的一般函数名称并搭配相应的描述组成Docstring。

Validation

Deduplication

在对每一个问题生成代码时可以先plan一下,其次是代码生成失败考虑重新生成(这样可能导致死循环)