ファンクションコーリング vs ツールコーリング
Function CallingはOpenAIが最初に導入した、LLMに外部関数の呼び出し内容を構造化データとして出力させる仕組みの名称。Tool Callingは、対象を関数に限らずAPI・検索・コード実行等のツール全般に広げた、より一般的・業界横断的な呼び方。実装としての仕組みはほぼ同一で、名称の由来と適用範囲の広さが異なる。
3行で違いを説明
- Function Callingは2023年6月にOpenAIが導入した、関数の名前・引数を構造化データとして出力させる仕組みの名称。
- Tool Callingは、関数に限らずAPI・検索・コード実行等を含む、より広い対象を指す業界横断的な呼び方。
- 実装上の違いはほぼなく、呼び出しの要否判断・引数生成・実行はアプリケーション側が担う点は共通。
- OpenAIの文脈ではFunction Calling、複数プロバイダやMCP等を含む一般的な文脈ではTool Callingが使われやすい。
Comparison Table
| Item | ファンクションコーリング | ツールコーリング |
|---|---|---|
| Purpose | LLMに関数呼び出しの内容を構造化データとして出力させる | LLMに外部の関数・API・ツール全般の呼び出しを判断・出力させる、より広い概念 |
| Originator | OpenAI | OpenAIのFunction Callingが起点、業界横断で使用 |
| Release | 2023年6月 | 2023年6月以降、業界標準的な呼称として定着 |
| Scope | 「関数(function)」呼び出しに限定した名称 | 関数に限らずAPI・検索・コード実行等ツール全般を含む名称 |
| Provider Adoption | 主にOpenAI系ドキュメントで使用 | OpenAI・Anthropic等複数プロバイダで共通に使用 |
Architecture
ファンクションコーリング
呼び出し可能な関数の名前・説明・JSON Schemaをリクエストに含め、LLMが該当する関数名と引数をJSON形式で出力する。実行はアプリケーション側が担う。
ツールコーリング
対象を関数に限らずツール一般に拡張した同型の仕組み。LLMがツール名と引数を構造化データで出力し、アプリケーションが実行結果を返す点はFunction Callingと同じ。
Feature Comparison
| Feature | ファンクションコーリング | ツールコーリング |
|---|---|---|
| 構造化データ(JSON)での出力 | ○ | ○ |
| 関数以外のツール(検索・コード実行等)も対象 | 名称上は関数中心 | ○ |
| 1レスポンス内での複数呼び出し指定 | ○ | ○ |
| 業界横断的な呼称としての普及 | — | ○ |
| MCP等のプロトコルとの併用 | ○ | ○ |
Advantages
ファンクションコーリング
- OpenAIの公式ドキュメント・実装例が豊富
- 「関数」という具体的な単位に対応づけて説明しやすい
ツールコーリング
- 関数に限らずAPI・検索・コード実行等を包含する名称でエージェント全般に適用しやすい
- OpenAI以外のプロバイダ(Anthropic等)を含めた説明で使いやすい
Disadvantages
ファンクションコーリング
- 名称が「関数」に限定され、検索やコード実行等より広いツール概念を説明する際に狭く感じられる
- OpenAI発の名称であるため他プロバイダの文脈では読み替えが必要になることがある
ツールコーリング
- Function Callingより名称が新しく、初出の文脈(OpenAI)を知らないと経緯が伝わりにくい
- 「ツール」の範囲が曖昧で、指す対象がAPIなのかMCPサーバーなのか文脈依存になりやすい
Best Use Cases
ファンクションコーリング
OpenAIのAPIドキュメントに沿って実装する場合や、特定の関数呼び出しを明確に説明したい場合。
ツールコーリング
複数のLLMプロバイダを横断して説明する場合や、API呼び出し以外(検索・コード実行等)も含めてツール連携全般を語りたい場合。
Migration
実装としては同一の仕組みであるため、コードの移行は基本的に不要。OpenAI APIでもパラメータ名としてtools/tool_callsが使われており、名称としてもTool Callingへの統一が進んでいる。複数プロバイダに対応するアプリケーションを説明する際は、より一般的なTool Callingという呼称に統一するとよい。
FAQ
Function CallingとTool Callingはどちらを使うべき?
実装上の違いはほとんどないため、OpenAI APIの話をする場合はFunction Calling、複数プロバイダやMCP等を含む一般的な文脈ではTool Callingと使い分けるとよい。
OpenAIのAPIでも今はtoolsという名称?
OpenAIのChat Completions API/Responses APIでは、パラメータ名としてtools・tool_callsが使われており、呼称としてもTool Callingへの統一が進んでいる。
参考文献
- DocumentationOpenAI: Function calling
- DocumentationAnthropic: Tool use with Claude
関連する比較
MCP vs ファンクションコーリング
MCPはLLMアプリケーションと外部ツール・データソースの接続方法を標準化するオープンプロトコル、Function CallingはLLMが構造化された関数呼び出しを出力する仕組み。抽象化のレイヤーが異なり、両者は代替関係ではなく組み合わせて使われる。
MCP vs ツールコーリング
MCP(Model Context Protocol)はLLMアプリケーションと外部ツール・データソースの接続方法を標準化するオープンプロトコル、Tool CallingはLLMが個々のツール呼び出しの要否と引数を判断し構造化データとして出力する仕組み。MCPはツールの提供・発見・接続という上位レイヤーを標準化し、Tool Callingはその標準化されたツールを実際に呼び出す下位レイヤーの動作にあたる。両者は代替関係ではなく組み合わせて使われる。