ツールコーリングとは
Tool Calling / ツール呼び出し
LLMが外部の関数・API・ツールを呼び出し、その実行結果を応答に反映する仕組み
ひとことで言うと
AIが外部のプログラムやサービスを呼び出して、その結果を答えに使う仕組み。
概要
Tool Calling(ツールコーリング)とは、LLMが自然言語での応答生成だけでなく、あらかじめ定義された外部の関数・API・ツールの呼び出しが必要と判断した場合、その呼び出し内容(関数名や引数)を構造化形式で出力し実行結果を会話へ反映できるようにする仕組み。 LLM自体はツールを直接実行できないため実際の呼び出しはアプリケーション側が担い、その結果を再びLLMへ渡して応答を生成させる形で連携する。 検索・計算・データベース照会・コード実行など、LLM単体では正確にこなせない処理を外部委譲する手段として、AIエージェントの中核的な構成要素になっている。 ツール呼び出しが必要かどうかの判断・どの引数で呼ぶかの選択自体をLLMが行うため、ツールの説明文(スキーマ)の書き方次第で呼び出し精度が大きく変わる点には注意が必要。
背景
LLMは学習時点の知識をもとにテキストを生成するため、最新情報の取得や正確な計算、外部システムの操作といったタスクを苦手とする。 Tool Callingは、こうした処理を専用のツールへ委譲しその結果をLLMに統合させることで、この弱点を補うために整備された。
歴史
2022年: ReAct論文がLLMに「思考」と「行動(ツール呼び出し)」を交互に出力させる枠組みを提案。 2023年6月: OpenAIがFunction Callingとして構造化されたツール呼び出しのAPIを公開し、業界標準的な実装パターンとして普及。 以降、Anthropic等他のLLMプロバイダも同様のツール呼び出し機能を提供し、より一般的な名称としてTool Callingという呼び方が広まる。
アーキテクチャ
開発者は、呼び出し可能なツールの名前・説明・パラメータのスキーマをLLMへ事前に提示する。 LLMは、ユーザーの入力に対しツールの利用が必要と判断すると、テキストの代わりにツール名と引数を含む構造化データを出力する。 アプリケーション側がこの出力を解釈して実際にツールを実行し、その結果をLLMへ再度入力することで、実行結果を踏まえた最終的な応答を生成させる。
ワークフロー
開発者がツールの名前・説明・引数スキーマを定義しLLMへ提示 → ユーザーの入力をLLMへ送信 → LLMがツール呼び出しの必要性を判断し構造化データを出力 → アプリケーション側が実際にツールを実行 → 実行結果をLLMへ入力し最終的な応答を生成。
コード例
OpenAI APIでツールを定義し呼び出す
from openai import OpenAI
client = OpenAI()
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "指定した都市の現在の天気を取得する",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}
]
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "東京の天気を教えてください。"}],
tools=tools,
)
print(response.choices[0].message.tool_calls)利点
- LLM単体では困難な、正確な計算・最新情報の取得・外部システムの操作が可能になる
- ツールの入出力を構造化データとして扱えるため、アプリケーションへの統合がしやすい
- 主要なLLMプロバイダで共通のパターンとして提供されており、実装の再利用がしやすい
欠点
- ツールの説明や引数スキーマの設計が不十分だと、LLMが誤ったツールを呼び出すことがある
- 呼び出せるツールの数が増えるほど、必要なツールの選択を誤りやすくなる
- 外部データを扱うツールを経由した間接プロンプトインジェクションのリスクがある
比較
- ファンクションコーリング — Function Callingは、多くの場合Tool Callingと同義に使われる、OpenAIが最初に導入した名称
- AIエージェント — AIエージェントは、Tool Callingを繰り返し活用しながらタスクを遂行するシステム
- MCP — MCPは、Tool Callingで使うツールの提供方法を標準化するプロトコル
関連用語
よくある質問
Tool CallingとFunction Callingは同じ?
ほぼ同義で使われる。 Function CallingはOpenAIが最初に使い始めた名称で、より一般的・業界横断的な呼び方としてTool Callingが定着している。
LLMはツールを直接実行できる?
いいえ。 LLMが行うのはツール名と引数を含む構造化データの出力までで、実際のツール実行はアプリケーション側のコードが担う。
参考文献
- DocumentationOpenAI: Function calling
- DocumentationAnthropic: Tool use with Claude