3秒でわかる
Tool Callingとは、LLMが利用可能な外部機能から必要なツールと引数を選び、アプリや提供基盤へ実行を依頼して、その結果を回答へ使う仕組みです。
30秒図解
もう一歩わかる図解
ツール定義と呼び出しの関係
戻しにくい操作の実行制御
Tool Callingをたとえると?
受付係が依頼を読み、担当部署と申請内容を決め、担当部署が作業した結果を受け取って依頼者へ伝える流れに似ています。
実際にはこう使います
もう少し詳しく
モデルがツール名と構造化した引数を返し、アプリケーションまたは提供基盤が処理を実行して、その結果をモデルへ戻す複数段階のやり取りです。
何が起きるのか
LLMは学習済みの知識だけでは、いまの天気を取得したり、社内データを検索したり、カレンダーへ予定を書き込んだりできません。そこでアプリは、使えるツールの名前、説明、受け取る引数の形をモデルへ伝えます。
モデルはユーザーの依頼を読み、必要ならツール名と引数を構造化して返します。重要なのは、モデルが外部処理を直接実行したとは限らない点です。ユーザー定義のツールでは、アプリが呼び出しを検証して実行し、結果をモデルへ戻します。提供元が動かすサーバーツールでは、同じ往復の一部を提供基盤が担当します。
5段階の流れ
説明用に「東京の天気は?」へ答える流れを考えます。
1. アプリが get_weather と引数 location の定義をモデルへ渡す
2. モデルが get_weather と {"location":"東京"} を返す
3. アプリがツール名、引数、権限を検証して天気APIを実行する
4. 説明用の結果 24℃ を、対応する呼び出し結果としてモデルへ戻す
5. モデルが「東京は24℃です」のような最終回答を作る
ツール結果を戻した後、モデルが別のツールを追加で求めることもあります。一度の呼び出しで終わるとは限りません。
ツール定義と引数スキーマ
ユーザー定義ツールでは、名前、用途の説明、引数のスキーマを渡します。OpenAIのfunction toolやAnthropicのclient toolでは、JSON Schemaを使って引数の型や必須項目を表せます。
{
"name": "get_weather",
"description": "指定した地域の現在の天気を取得する",
"parameters": {
"type": "object",
"properties": {
"location": { "type": "string" }
},
"required": ["location"],
"additionalProperties": false
}
}スキーマは引数の形をそろえる助けになりますが、値の意味、利用者の権限、操作の安全性まで保証しません。location が文字列でも、対象範囲や許可条件は実行側で検証します。
Function Callingとの関係
OpenAIの公式資料では、Function CallingはTool Callingとも呼ばれます。Function Callingは、JSON Schemaで定義した関数をモデルが選ぶ仕組みを指すことが多く、Tool Callingは関数に加えて、検索、コード実行、MCPなどを含む広い呼び方として使われることがあります。
ただし製品やAPIによって用語の範囲は異なります。ゆめさくでは検索意図の重複を避けるため、Function Callingを別概念のURLにはせず、このTool Callingページでまとめて説明します。
構造化出力との違い
構造化出力は、モデルの回答を指定したJSONなどの形にそろえる仕組みです。Tool Callingは、外部機能を選び、その結果を会話へ戻す仕組みです。どちらもJSON Schemaを使うことがありますが、回答の形式を整えるのか、外部処理につなぐのかが違います。
MCPとの違い
Tool Callingは、モデルがどのツールをどの引数で使うかを示すやり取りです。MCPは、AIアプリとツールやデータの提供側を共通の方法で接続するプロトコルです。MCPで見つけたツールをTool Callingで選ぶ構成はありますが、両者は同じ役割ではありません。
AIエージェントとの関係
一回だけ天気ツールを呼んで回答する実装もTool Callingです。ツールの結果を観察し、次の操作を選び、完了まで何度も繰り返すと、AIエージェントの実行ループへ近づきます。Agent Harnessは、その反復、状態、承認、停止条件を支える周辺基盤です。
安全に実行する
モデルから届くツール名と引数は、信頼済みの命令として扱いません。許可リストにあるツールか、引数がスキーマと業務ルールを満たすか、現在の利用者に権限があるかを実行前に確認します。
たとえば「明日10時に会議を作って」という予定の追加は、候補日時と参加者を表示してから承認を求めます。削除、送信、公開、決済のような戻しにくい操作ほど、人の確認、最小権限、監査ログ、回数上限が重要です。
失敗したとき
ツールがタイムアウトした、引数が不足した、権限がない、といった失敗はモデルへ明示して返します。成功したように見せず、再試行してよい失敗、ユーザーへ確認する失敗、直ちに停止する失敗を分けます。
覚え方
LLMが「どの道具を、どの引数で使うか」を選び、アプリや提供基盤が実行し、その結果をLLMが回答へ使う仕組みです。
メリット・注意点
メリット
- ・自然言語の依頼を既存API、検索、計算、業務操作へ接続できる
- ・名前、説明、JSON Schemaによって使える機能と引数の形をモデルへ伝えられる
- ・ツール結果を回答根拠として使い、学習時点にない情報や外部状態を扱える
注意点
- ・モデルが誤ったツールや意味の不正な引数を提案する可能性がある
- ・タイムアウト、並列呼び出し、再試行、部分失敗の制御が必要になる
- ・権限や承認を誤ると、削除、送信、公開などの副作用が発生する
10秒理解度チェック
ユーザー定義ツールを使うとき、外部処理を実行する主体は?
よくある質問
Tool CallingとFunction Callingは違いますか?
同じ意味で使われることがあります。Function CallingはJSON Schemaで定義した関数を呼ぶ意味が中心で、Tool Callingは検索やコード実行なども含む広い呼び方として使われる場合があります。この辞典では同じcanonicalページに統合します。
LLMがツールを直接実行しますか?
ユーザー定義のツールでは通常、LLMはツール名と引数を返し、アプリが検証・実行します。提供元が実行するサーバーツールもあるため、どこで処理されるかはAPI仕様を確認します。
JSON Schemaがあれば安全ですか?
十分ではありません。型や必須項目は制約できますが、値の意味、利用者の権限、操作の副作用は実行側で検証し、必要なら人の承認を求めます。
Tool Callingと構造化出力の違いは何ですか?
構造化出力は回答の形をそろえます。Tool Callingは外部機能を選び、処理結果をモデルへ戻します。どちらもJSON Schemaを使うことがありますが目的が異なります。
Tool CallingとMCPの違いは何ですか?
Tool Callingはモデルが使うツールと引数を示すやり取りです。MCPはAIアプリとツールやデータ提供側を接続するプロトコルです。MCPツールをTool Callingで選ぶ構成があります。
一度に複数のツールを呼べますか?
APIとモデルが対応していれば複数の呼び出し候補を返せます。独立しているか、順序が必要か、副作用が競合しないかをアプリ側で判断します。
Tool CallingだけでAIエージェントになりますか?
一回のTool Callingだけでは必ずしもAIエージェントとは呼びません。結果を観察し、次の行動を選び、完了まで繰り返す実行ループや状態管理を組み合わせるとエージェントに近づきます。
一次情報・内容確認
内容確認:2026/08/18 / ゆめさく編集部