ツール呼び出し
LLM が外部の関数を呼び出せるようにする仕組み。 function calling、tool use。
流れ#
1. 利用可能なツールの定義(名前・説明・引数スキーマ)を渡す
2. LLM が「このツールをこの引数で呼びたい」と構造化出力する
3. アプリケーション側が実際に実行する
4. 結果を LLM に返す
5. LLM が結果を踏まえて回答する実行するのは LLM ではなくアプリケーション側。 ここが安全性の要になる。
何ができるようになるか#
| 苦手なこと | ツールで解決 |
|---|---|
| 正確な計算 | 電卓、コード実行 |
| 最新の情報 | 検索 API |
| 事実の確認 | データベース照会 |
| 外部への作用 | メール送信、ファイル操作 |
LLM は確率的な予測器なので、 決定的で正確な処理は外に出すのが正しい設計。
スキーマの設計#
ツールの説明文とスキーマが、そのままモデルへの指示になる。
- 名前は用途が分かるものにする
- 説明にいつ使うか・使わないかを書く
- 引数は必須と省略可能を明示する
- 曖昧な引数(自由文字列)は誤用されやすい
曖昧なツールは呼ばれ方も曖昧になる。
失敗の扱い#
ツールは失敗する。 エラーメッセージをそのままモデルに返すと、 モデルが引数を直して再試行できることが多い。
ただし無限リトライにならないよう、 回数上限をシステム側で持つ必要がある。
参考文献#
- Anthropic. Tool use with Claude. https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/overview
- Timo Schick et al. Toolformer: Language Models Can Teach Themselves to Use Tools. NeurIPS, 2023. https://arxiv.org/abs/2302.04761