紹介
近年、大規模言語モデル(Large Language Models: LLM)は人工知能の分野で目覚ましい進歩を遂げ、その強力な言語理解・生成能力により、様々な領域で幅広い応用が行われている。しかし、外部ツールの起動を必要とする複雑なタスクを扱う場合、LLMは依然として多くの課題に直面している。例えば、ユーザーが "明日の目的地の天気は?"と質問した場合、LLMは、"明日の目的地の天気は?"と答えることができる必要がある。LLMは正確な情報を得るために天気APIを呼び出せる必要がある。
この問題に対処するため、研究者たちは、LLMが外部ツールをより効果的に活用できるようにすることを目的とした、さまざまなツール学習法を提案してきた。しかし、既存の方法は、しばしば以下のような制限に悩まされている:
- 微調整に基づくアプローチモデルを微調整して、トレーニングデータで見たことのあるツールだけを使用できるようにする必要がある。このアプローチは、ツールコールの精度を向上させる一方で、未見のツールに対するモデルの汎化能力を制限する可能性がある。
- コンテクスト・ベースド・ラーニング(ICL)アプローチモデルを微調整する必要はなく、ツールはプロンプトにツールデモを追加することで呼び出すことができる。しかし、多数のツールに直面すると、このアプローチの推論効率は著しく低下する。
CoTools:ツール学習のより効率的なフレームワーク
このような課題を克服するため、スーチョー大学の研究チームは、次のような新技術を開発した。 CoTools 新しいツール学習フレームワークのこのフレームワークの主な目標は、モデルの汎化能力を犠牲にすることなく、多数の未知のツールの効率的な呼び出しを達成することである。
CoToolsの仕組み
CoToolsの核となるアイデアは、推論プロセス中にツールを呼び出す必要があるかどうかを動的に判断し、最も適切なツールを選択するために、凍結された言語モデルの強力な意味表現能力を利用することです。その主なプロセスは以下の通りである:
- ツール判定::
- 輸入ユーザーの質問と、モデルによって生成された現在の回答スニペット。
- 成り行きCoToolsは、現在のアンサーフラグメントの意味情報を分析し、情報を補足するためにツールの呼び出しが必要かどうかを判断します。例えば、ユーザーが天気について質問すると、モデルは天気APIへの呼び出しが必要であることを認識する。
- 輸出ツールコールを発動するかどうかの判定結果。
- ツール検索::
- 輸入ユーザーの質問と判定結果
- 成り行きツールを呼び出す必要がある場合、CoToolsは問題の記述に基づいてツールプールから最も適切なツールを検索します。CoToolsは、ツールの説明情報を分析することで、問題との関連性を評価します。
- 輸出厳選されたツール
- ツールコール::
- 輸入特定のツールとユーザーに関する問題
- 成り行きCoToolsは、文脈学習プロンプトを使用して、ツールのパラメータを生成し、ツールを実行し、結果を取得します。
- 輸出ツールによって返された結果は、回答に追加されます。
図1:CoToolsメソッドのフローチャート。
CoToolsの利点
- 目に見えない道具の効率的な使用CoToolsはツールの事前学習に頼らず、ツールの説明を分析して動的にツールを選択する。このため、多数の未知のツールを呼び出す柔軟性がある。
- モデル本来の能力を維持する言語モデルは凍結されているので、CoToolsはモデルの汎化能力や推論能力に影響を与えない。
- モデルの解釈可能性を高めるCoToolsは、モデル出力の主要な次元を分析することで、研究者がツール選択のプロセスをよりよく理解するのに役立ちます。
結果
CoToolsの有効性を検証するため、研究チームは以下のようないくつかの実験を行った:
- 数的推理課題GSM8K-XLとFuncQAデータセットを使用した場合、CoToolsはシングルホップ、マルチホップ両方の問題で優れた性能を発揮しました。
- クイズKAMELとSimpleToolQuestions(STQuestions)データセットを使用すると、CoToolsは多くのツールシナリオで優れた性能を発揮し、未知のツールに対しても良好な汎化を示す。
以下は、KAMELとSTQuestionsのデータセットでCoToolsを他の手法と比較した結果である:
方法論 | KAMEL SUP | KAMEL SYN | STクエスチョン | ST質問 未公開 |
---|---|---|---|---|
ツールケンGPT LLaMA | 93.4 | 20.6 | 23.8 | 0.0 |
CoTools(私たちの) LLaMA | 93.8 | 43.6 | 35.1 | 10.4 |
評決を下す
CoToolsは、モデルの汎化能力を犠牲にすることなく、多数の未知のツールを効率的に呼び出すことを可能にする、より効率的で柔軟なツール学習フレームワークを提供する。このアプローチは、より複雑な実世界シナリオにおける大規模言語モデルの適用に新たな可能性を開く。
将来展望
CoToolsの有望な結果にもかかわらず、研究者たちは、LLMツールの学習に関する現在の研究はまだ初期段階にあるとも指摘している。今後、CoToolsチームは次のことを計画している:
- 複数の戻り値を含むツールの扱い方を発見する。
- より大きく、より複雑な実世界のツールセットでCoToolsのパフォーマンスをテストする。
プロンプトの例
CoToolsの核となる考え方は、推論プロセス中にツールを呼び出す必要があるかどうかを動的に判断し、タスクを実行するために最も適切なツールを選択するために、凍結された言語モデルの強力な意味理解を活用することです。以下では、CoToolsのワークフローを詳細に紹介し、読者が各ステップの入力と出力をよりよく理解できるように、詳細なプロンプトの例を提供する。
#### 1. 初始输入与预处理
- **输入**:
- **用户问题**:例如,“明天我目的地的天气如何?”
- **上下文信息**(如果有):例如,之前对话的上下文或用户的位置信息。
- **处理**:
- **问题解析**:将用户问题进行预处理,包括分词、去除停用词等。
- **上下文整合**:将上下文信息与用户问题整合,形成完整的输入序列。
- **输出**:
- **预处理后的输入序列**:例如,“[CLS] 明天 我 目的地 的 天气 如何? [SEP] 北京”
#### 2. 工具判断
- **输入**:
- **预处理后的输入序列**。
- **处理**:
- **语义分析**:CoTools 使用冻结语言模型生成输入序列的隐藏状态,并利用工具判断器(Tool Judge)分析这些隐藏状态,以确定是否需要调用工具。
- **工具判断器**:
- **计算公式**(简化版):
```
Score_I = 工具判断器(隐藏状态)
```
- **决策逻辑**:
- 如果 $Score_I$ 超过预设阈值(通常为 0.5),则触发工具调用。
- 否则,继续生成答案文本。
- **输出**:
- **判断结果**:
- **调用工具**:例如,“需要调用天气 API”。
- **无需调用工具**:继续生成答案。
#### 3. 工具检索
- **输入**:
- **判断结果**:例如,“需要调用天气 API”。
- **用户问题**:例如,“明天我目的地的天气如何?”
- **处理**:
- **工具池检索**:CoTools 使用工具检索器(Tool Retriever)从工具池中检索最合适的工具。
- **工具检索器**:
- **查询向量计算**:将用户问题转换为向量表示。
- **工具向量计算**:将工具池中的每个工具描述转换为向量表示。
- **相似度计算**:计算查询向量与每个工具向量的相似度得分,得分最高的工具即为最合适的工具。
- **工具池示例**:
```
1. 天气 API:提供指定地点的天气信息。
2. 地图 API:提供指定地点的地图信息。
3. 翻译工具:提供文本翻译服务。
```
- **输出**:
- **选定的工具**:例如,“天气 API”。
#### 4. 工具调用
- **输入**:
- **选定的工具**:例如,“天气 API”。
- **用户问题**:例如,“明天我目的地的天气如何?”
- **处理**:
- **参数生成**:使用上下文学习提示(ICL Prompt)生成工具调用所需的参数。
- **示例提示**:
```
[用户问题]
[当前答案片段(如果有)]
请调用以下工具并生成调用参数:
工具名称:天气 API
工具描述:提供指定地点的天气信息。
```
- **工具执行**:将生成的参数传递给工具,执行工具并获取返回结果。
- **输出**:
- **工具返回结果**:例如,“北京的天气情况:晴天,气温 25°C”。
#### 5. 答案生成
- **输入**:
- **工具返回结果**:例如,“北京的天气情况:晴天,气温 25°C”。
- **用户问题**:例如,“明天我目的地的天气如何?”
- **处理**:
- **答案整合**:将工具返回结果整合到答案中,生成最终回答。
- **输出**:
- **最终回答**:
```
明天北京的天气情况是晴天,气温 25°C。
```
### 详细的 Prompt 示例
以下是一个更详细的 Prompt 示例,展示了 CoTools 在每个流程节点的具体操作:
用户问题:明天我目的地的天气如何?
初始输入序列:
[CLS] 明天 我 目的地 的 天气 如何? [SEP] 北京
工具判断:
输入:预处理后的输入序列
处理:
语义分析:生成隐藏状态并计算 Score_I
决策:Score_I > 0.5,触发工具调用
输出:需要调用天气 API
工具检索:
输入:用户问题和判断结果
处理:
查询向量计算:生成用户问题的向量表示
工具向量计算:生成工具池中每个工具的向量表示
相似度计算:计算相似度得分
输出:选定天气 API
工具调用:
输入:选定的工具和用户问题
处理:
参数生成:
[用户问题]
[当前答案片段(如果有)]
请调用以下工具并生成调用参数:
工具名称:天气 API
工具描述:提供指定地点的天气信息。
工具执行:调用天气 API 并获取返回结果
输出:北京的天气情况:晴天,气温 25°C
答案生成:
输入:工具返回结果和用户问题
处理:整合结果生成最终回答
输出:明天北京的天气情况是晴天,气温 25°C。
### 总结
CoTools 通过精细化的流程设计和强大的语义理解能力,实现了在复杂任务中对外部工具的高效调用。该框架不仅能够处理常见工具,还能灵活应对未见过的工具,为大型语言模型在现实场景中的应用提供了新的可能性。
このようなプロンプトにより、CoToolsは、ユーザーの質問と現在の回答スニペットに基づいて、ツールを起動する必要があるかどうかを動的に判断し、必要な情報を取得するために最も適切なツールを選択することができます。
オリジナル:https://arxiv.org/pdf/2503.16779