ファンクションコーリング
ファンクションコーリング(ツール利用とも呼ばれます)は、LLMがユーザーのリクエストを分析し、構造化されたJSON形式で外部の関数やAPIを呼び出せるようにする機能です。OpenAIは2023年6月に公式サポートを導入しました。それ以降、Claude、Gemini、Llamaのいずれも標準機能として搭載しており、AIエージェント実装の最小単位となっています。
ファンクションコーリング(ツール利用とも呼ばれます)は、LLMがユーザーのリクエストを分析し、構造化されたJSON形式で外部の関数やAPIを呼び出せるようにする機能です。OpenAIは2023年6月に公式サポートを導入しました。それ以降、Claude、Gemini、Llamaのいずれも標準機能として搭載しており、AIエージェント実装の最小単位となっています。
なぜ重要なのか
LLMは本質的にテキスト生成器です。ファンクションコーリングがなければ、「今のソウルの天気は?」と尋ねても、学習時点の知識しか引き出せません。ファンクションコーリングを使うと、モデルはget_weather(location: "Seoul")をJSONとして出力し、ホストアプリが実際のAPIを実行し、その結果が最終的な回答のためにモデルへと戻されます。このシンプルな仕組みが、AIエージェント、AI検索、そしてMCPエコシステム全体の基盤となっています。
仕組み
- ツール定義: アプリがLLMに利用可能な関数のリスト、つまり名前、説明、パラメータスキーマを渡します。
- ユーザーのリクエスト: ユーザーが自然言語の質問を入力します。
- 呼び出しの判断: LLMがどの関数を呼び出すかを決定し、引数をJSONとして生成します。
- 実際の実行: ホストアプリがJSONを解析し、実際の関数を実行します。モデル自体はコードを実行しません。
- 結果の注入: 関数の出力がLLMのコンテキストに戻されます。
- 最終的な応答: LLMが結果に基づいた自然言語の回答を生成します。
例
ツール定義:
{
"name": "search_blog_posts",
"description": "Search blog posts by keyword",
"parameters": {
"type": "object",
"properties": {
"keyword": { "type": "string", "description": "search keyword" },
"limit": { "type": "integer", "default": 5 }
},
"required": ["keyword"]
}
}
ユーザー: 「GEOに関する投稿を3件見つけて」
モデルの応答:
{
"tool_call": "search_blog_posts",
"arguments": { "keyword": "GEO", "limit": 3 }
}
アプリがツールを実行した後: [{title: "...", url: "..."}, ...]
最終的な応答: 「GEOに関する投稿を3件見つけました...」
ファンクションコーリング vs MCP vs ReAct
| 観点 | ファンクションコーリング | MCP | ReAct |
|---|---|---|---|
| レベル | API呼び出しプロトコル | 標準化されたツール接続プロトコル | プロンプティングパターン |
| 役割 | モデルがツールを呼び出すためにJSONを出力する | 異なるホスト/サーバー間でツールを共有する | 段階的な推論とアクションのループ |
| 関係 | MCPの基盤 | アプリ間でファンクションコーリングを標準化する | ループ内でファンクションコーリングを利用する |
ファンクションコーリングは単一のツール呼び出しであり、MCPは多くのアプリが同じツールを共有する方法であり、ReActは推論を伴う呼び出しをループさせるためのパターンです。
制約と注意点
ハルシネーションのリスク: モデルが存在しない関数を作り出したり、不正な引数を生成したりすることがあります。厳格なスキーマ検証が必須です。
並列呼び出し: フロンティアモデル(GPT-4o、Claude Opus 4.6)は複数の関数を並列で呼び出せます。これによって依存関係の管理が必要になります。
コスト: 呼び出しのたびにコンテキストが拡張され、トークン消費が増えます。ツールの露出を絞り込むことで、パフォーマンスとコストの両方が改善します。
セキュリティ: プロンプトインジェクションと組み合わさると、ファンクションコーリングは被害を増幅させる可能性があります。決済や削除のようなリスクの高いアクションには、ユーザーの確認を要求してください。
GEOへの示唆
AI検索がブログから情報を抽出する際、内部ではfetch_web_content、search_knowledge、cite_sourceといった関数を呼び出します。クリーンなHTMLと構造化データを公開しているブログは、これらの呼び出しの品質を高め、引用される確率を上げます。言い換えれば、「関数が読み取りやすいブログ」こそがGEOに適したブログなのです。
Sources: