Function Calling:AIが外部ツールを操作する仕組み

AIを知りたい
先生、ChatGPTが天気を調べたり、フライトを検索したりできるようになりましたよね。AIってどうやって外部のサービスにアクセスしているんですか?

AIエンジニア
いい質問だ。それが「Function Calling(ファンクションコーリング)」、別名「Tool Use(ツールユース)」と呼ばれる仕組みだよ。AIが「この情報を取得するためにこの関数を呼び出す必要がある」と判断し、適切なパラメータを生成する技術なんだ。

AIを知りたい
AI自身がプログラムを実行するんですか?

AIエンジニア
正確には、AI自身が直接実行するわけではないよ。AIは「どの関数をどんなパラメータで呼ぶべきか」をJSON形式で出力するんだ。実際の関数の実行はアプリケーション側が行い、結果をAIに返してAIが最終的な回答を生成する。AIは「判断と指示」を担当し、「実行」はシステムが担当するイメージだね。

AIを知りたい
なるほど、AIが直接データベースにアクセスしているわけではないんですね。

AIエンジニア
そのとおり。これは安全性の面でも重要なポイントだよ。AIが直接外部システムにアクセスするのではなく、開発者が定義した関数だけを呼び出せるようにすることで、意図しない操作を防いでいるんだ。
Function Calling(ツールユース)とは。
Function Calling(ファンクションコーリング)は、大規模言語モデル(LLM)が外部の関数やAPIを呼び出すための仕組みです。2023年6月にOpenAIがGPT-3.5/4向けに正式導入し、その後AnthropicのClaude(Tool Use)、GoogleのGemini(Function Calling)など主要モデルが対応しました。開発者は呼び出し可能な関数のスキーマ(名前、説明、パラメータの型)をJSON形式で定義し、AIに渡します。AIはユーザーの質問を解析し、適切な関数とパラメータを選択してJSON形式で出力します。アプリケーション側がそのJSONに基づいて関数を実行し、結果をAIに返すと、AIが最終回答を生成します。2026年現在、Function Callingは「AIエージェント」の基盤技術として位置づけられ、MCP(Model Context Protocol)やA2Aプロトコルと組み合わせて、AIが多様な外部ツールやサービスと連携するマルチエージェントシステムの構築に活用されています。
Function Callingの仕組み
Function Callingは4つのステップで動作します。このシンプルな仕組みが、AIの能力を大幅に拡張しています。
ステップ1:開発者が利用可能な関数のスキーマをJSON形式で定義します。関数名、説明、パラメータの型と必須/任意を明記します。
ステップ2:ユーザーの質問とともに関数スキーマをAIに送信します。AIは質問を解析し、関数を呼ぶ必要があると判断した場合、関数名とパラメータをJSON形式で返します。
ステップ3:アプリケーション側がAIの指定した関数を実行し、結果を取得します。
ステップ4:関数の実行結果をAIに送り返すと、AIがそれを自然言語で要約してユーザーに回答します。
| ステップ | 実行者 | 処理内容 | データ形式 |
|---|---|---|---|
| 1. 関数定義 | 開発者 | 呼び出し可能な関数のスキーマを定義 | JSON Schema |
| 2. 関数選択 | AIモデル | ユーザーの質問を分析し、必要な関数とパラメータを決定 | JSON(function_call) |
| 3. 関数実行 | アプリケーション | AIが指定した関数を実行し、結果を取得 | APIレスポンス等 |
| 4. 回答生成 | AIモデル | 関数の結果を自然言語で要約し、ユーザーに回答 | テキスト |

AIを知りたい
OpenAIとAnthropicでは実装方法が違うんですか?

AIエンジニア
基本的な仕組みは同じだけど、APIのインターフェースが少し異なるよ。OpenAIでは「functions」パラメータで関数を定義し、Anthropicでは「tools」パラメータで定義する。どちらもJSON Schemaベースでパラメータを記述するので、概念は共通しているんだ。

AIを知りたい
具体的なコードの例を見てみたいです。

AIエンジニア
例えば天気情報を取得する例だと、{"name": "get_weather", "parameters": {"location": "Tokyo", "unit": "celsius"}} のようなJSONをAIが生成するよ。開発者はこのJSONを受け取って実際の天気APIを呼び出し、結果をAIに返す。AIは「東京の現在の気温は22度です」のように自然な回答を生成するんだ。
OpenAI・Anthropicの実装比較
2026年4月現在、主要なAIプロバイダーはすべてFunction Calling機能を提供しています。その実装方法の違いを比較します。
| 比較項目 | OpenAI | Anthropic(Claude) | Google(Gemini) |
|---|---|---|---|
| APIパラメータ名 | tools | tools | tools |
| 関数定義形式 | JSON Schema | JSON Schema | OpenAPI互換 |
| 並列呼び出し | 対応(parallel_tool_calls) | 対応(複数tool_use block) | 対応 |
| 強制呼び出し | tool_choice: required | tool_choice: any | tool_config: ANY |
| ストリーミング対応 | 対応 | 対応 | 対応 |
| 最大関数数 | 128個(推奨20以下) | 制限なし(推奨10〜20) | 制限なし |
| MCP連携 | サードパーティ連携 | ネイティブ対応 | サードパーティ連携 |

AIを知りたい
MCPとFunction Callingの関係はどうなっているんですか?

AIエンジニア
MCPは「Model Context Protocol」の略で、Function Callingをさらに標準化・拡張した仕組みだよ。Function Callingでは開発者が自分でAPIとの接続コードを書く必要があるけど、MCPではツールの接続仕様が標準化されていて、誰かが作ったMCPサーバー(ツール接続モジュール)を再利用できるんだ。

AIを知りたい
Function Callingの上位概念みたいなものですか?

AIエンジニア
そう考えると分かりやすいね。Function Callingは「AIがツールを呼び出す基本機能」で、MCPは「その機能を使って多様なツールに簡単に接続するためのプロトコル」。MCPの内部ではFunction Calling(Tool Use)の仕組みが動いているんだ。
Function Callingの活用パターンとエージェント
Function CallingはAIエージェントの中核技術として、さまざまなパターンで活用されています。
最もシンプルなのは「シングルターン」パターンで、ユーザーの1つの質問に対して1つの関数を呼び出して回答します。「今日の東京の天気は?」→天気API呼び出し→回答、というフローです。
より高度なのが「マルチターン」パターンで、AIが複数の関数を順番に呼び出して、複雑なタスクをステップバイステップで完了します。「来週の東京出張を計画して」→天気API→フライト検索API→ホテル検索API→まとめて回答、といった流れです。
2026年現在、最も注目されているのが「エージェントループ」パターンです。AIが自律的に判断してツールを繰り返し呼び出し、目標を達成するまで自動的に作業を続ける仕組みです。Claude CodeやDevinのようなAIコーディングアシスタントは、このパターンで動作しています。

AIを知りたい
Function CallingがあるからAIエージェントが実現できているんですね。

AIエンジニア
まさにそのとおり!Function CallingはAIに「手足」を与える技術とも言える。テキストの生成だけだったAIが、外部のツールやデータにアクセスして実際のアクションを起こせるようになった。2026年はFunction Calling、MCP、A2Aが組み合わさって、AIエージェントが本格的にビジネスで活躍し始めた年として記憶されるだろうね。

AIを知りたい
AIが考えるだけでなく行動もできる時代なんですね。とても面白いです。ありがとうございました!
