LLMのTool Use(関数呼び出し)とは|仕組みと精度を上げるツール設計

LLMは文章を作るのは得意ですが、それだけでは今日の天気も、社内データベースの値も知りません。ここを埋めるのがTool Use(ツール使用)です。関数呼び出しやfunction callingとも呼ばれ、AIエージェントの土台になる仕組みです。この記事では、Tool Useが実際にどう動くのか、そして呼び出しの精度を上げるためにツールをどう定義すべきかを、実務目線で整理します。
Tool Useとは
Tool Useは、LLMにあらかじめ「使える道具の一覧」を渡しておき、ユーザーの要求に応じてモデルがその道具を呼び出せるようにする仕組みです。天気を調べる、社内APIを叩く、計算を実行する、といった、モデル単体ではできない処理を外部に委ねられます。
重要なのは、モデル自身が関数を実行するわけではない点です。モデルは「この関数を、この引数で呼びたい」という構造化された指示を返すだけで、実際の処理はあなたのアプリケーション(またはツールを提供する側)が行います。
基本の流れ
やり取りは、次のような往復で進みます。
- 1
ツールを定義して渡す
名前・説明・入力スキーマ(引数の形)を持つツールの一覧を、リクエストに含めて送ります。 - 2
モデルがツール呼び出しを返す
要求に対してツールが必要だと判断すると、モデルは実行を止め、どのツールをどんな引数で呼ぶかを示すブロック(tool_use)を返します。 - 3
アプリ側が実行する
返された指示に従って、あなたのコードが実際の関数やAPIを呼び出し、結果を得ます。 - 4
結果を返して続きを生成させる
実行結果(tool_result)をモデルに返すと、モデルはそれを踏まえて回答の続きを生成します。必要ならこの往復を繰り返します。
この「呼び出し -> 実行 -> 結果を戻す」の繰り返しが、AIエージェントが動く基本のループです。
あわせて読みたい
AIエージェントとは何か|従来の自動化との違いと任せてよい仕事
クライアントツールとサーバーツール
ツールは、コードがどこで実行されるかで大きく2種類に分かれます。
| 種類 | 実行される場所 | 例 |
|---|---|---|
| クライアントツール | あなたのアプリ側 | 自分で定義した関数、社内API呼び出し、ファイル操作など |
| サーバーツール | モデル提供者のインフラ側 | Web検索やコード実行など、提供者が実行まで担うもの |
クライアントツールでは、モデルが呼び出しを返し、あなたのコードが実行して結果を戻します。サーバーツールでは実行まで提供者側が行い、結果が直接返ってきます。自作の業務ロジックはクライアントツール、汎用的な検索などはサーバーツール、という住み分けになります。
いつツールを呼ぶか
多くのAPIでは、既定でモデルが「ツールを呼ぶか、そのまま答えるか」を毎回判断します。要求がツールの説明する能力に合致し、答えがまだ手元にない場合に呼び、安定した知識や雑談には直接答える、という切り分けです。
この挙動はシステムプロンプトで調整できます。ツールを呼んでほしいのに呼ばないなら「回答の前にツールで調べること」と促し、逆に呼びすぎるなら判断を控えめにする指示を添えます。特定の場面で必ず呼ばせたいときは、ツール呼び出しを強制する設定も使えます。相談役の上位モデルを呼ぶadvisorのようなツールも、この枠組みの上に成り立っています。
あわせて読みたい
Claudeのadvisorツールとは|速い実行役に賢い相談役を組み合わせる
精度を上げるツール定義
Tool Useでつまずく原因の多くは、モデルの賢さより、ツール定義の曖昧さにあります。次の点を押さえると、呼び出しの精度が安定します。
- 1
説明を具体的に書く
ツールの説明は、モデルにとっての取扱説明書です。何をするツールで、いつ使い、引数に何を入れるべきかを、曖昧さなく書きます。ここが最も効きます。 - 2
入力スキーマを厳密に
引数は型を明示し、選択肢が決まっているものはenum(取りうる値の列挙)で縛ります。自由記述の文字列より、値を限定するほうが誤りが減ります。 - 3
名前で役割を分ける
search一つに種別引数を持たせるより、search_productsとsearch_ordersのように役割ごとに分けたほうが、モデルは選びやすくなります。 - 4
ツールを増やしすぎない
数が多いほど選択を誤りやすくなります。関連するものをまとめる、あるいは必要なツールだけを段階的に渡す設計で、選択肢を絞ります。
ヒント
つまずきやすい点
引数が足りないとき、モデルはユーザーに聞き返すこともあれば、それらしい値を勝手に推測して埋めることもあります(モデルや曖昧さの程度によります)。必須の引数が本当に埋まっているかは、実行前にアプリ側で検証するのが安全です。また、ツールの実行が失敗したときにモデルへどうエラーを返すか(エラー内容を伝えて再試行させるか、打ち切るか)も、あらかじめ設計しておきます。
よくある質問
Tool Useと関数呼び出し(function calling)は違うものですか
モデルがツールを実行してくれるのですか
ツールはいくつまで登録できますか
呼び出しが安定しないときはどうすればよいですか
まとめ
Tool Use設計のチェックリスト
- 各ツールの説明に、何をする・いつ使う・引数に何を入れるかを明記した
- 入力スキーマで型を明示し、選択肢はenumで限定した
- ツールの名前が役割ごとに明確に分かれている
- ツール数を絞り、必要なものだけ渡す設計にした
- 引数の検証と、ツール実行失敗時のエラー処理を用意した
Tool Useは、LLMを「賢い文章生成器」から「実際に動くエージェント」へ引き上げる土台です。仕組みそのものはシンプルな往復ですが、品質を左右するのはツール定義の質です。モデル選びに悩む前に、まず手元のツールの説明とスキーマを丁寧に書くことから始めてみてください。そのうえで、渡すコンテキスト全体を設計する視点を重ねると、エージェントの安定度はさらに上がります。
出典・参考
関連する記事
AIエージェントとは何か|従来の自動化との違いと任せてよい仕事
生成AIの活用で注目されるAIエージェントを冷静に解説します。チャットボットやRPAとの違い、自律性がもたらす利点とリスク、実務でエージェントに任せてよい仕事と任せるべきでない仕事の線引きをまとめます。
Claudeのadvisorツールとは|速い実行役に賢い相談役を組み合わせる
Claude APIのadvisorツール(ベータ)を実務目線で整理します。安価で速いexecutorモデルが、生成の途中で高性能なadvisorモデルに設計方針を相談する仕組み、向く用途・向かない用途、コストの見え方、出力量の制御やキャッシュといった運用上の勘所をまとめます。
マルチエージェント構成をいつ選ぶか|単一エージェントで足りる線引きと、分割するときの設計判断
エージェントを複数に分けるべきかを実務の判断基準として整理します。既定は「分けない」であること、分けてよい条件と分けてはいけない条件、コンテキストの受け渡しと出力契約、コストの見積り、段階的な移行順序までを一次情報で裏取りしてまとめます。


