Function Calling(Tool Use)とは、LLMが外部関数やAPIを呼び出すための構造化されたリクエストを生成する機能で、OpenAI Functions・Claude Tool Use・Gemini Function Callingなど各社が実装し、LLMエージェント開発の基盤技術となっている。
Function Calling(ファンクションコーリング)は、LLMが事前に定義された関数(ツール)の中から適切なものを選択し、引数を構造化データとして生成する機能である。モデルは関数を実際に実行するのではなく、「どの関数を、どのような引数で呼び出すべきか」を JSON 形式で出力する。アプリケーション側がその出力に基づいて関数を実行し、結果をモデルに返すことで、LLMと外部システムの連携が実現する。AnthropicではこれをTool Use(ツールユース)と呼称している。
OpenAIは2023年6月にFunction Callingを導入し、2024年にTools APIへ進化させた。
tools配列に関数定義(名前・説明・パラメータスキーマ)を記述"auto"(モデル判断)、"required"(必ず呼び出し)、{type: "function", function: {name: "..."}}(特定関数指定)から選択parallel_tool_calls: true(デフォルト有効)strict: trueで引数がJSON Schemaに100%準拠することを保証Anthropicは2024年4月にTool Use(旧Function Calling)をClaude 3で導入した。
tools配列にツール定義(name・description・input_schema)を記述。input_schemaはJSON Schema形式{type: "auto"}(モデル判断)、{type: "any"}(いずれかのツールを必ず呼び出し)、(特定ツール指定){type: "tool", name: "..."}tool_useコンテンツブロックが含まれるcontent_block_start/content_block_deltaイベントでツール呼び出しの部分データをリアルタイム受信可能GeminiはfunctionDeclarationsでツール定義を行う。
tools配列内のfunctionDeclarationsに関数名・説明・パラメータ(OpenAPI 3.0形式)を記述function_calling_configでmodeを指定(AUTO/ANY/NONE)。allowed_function_namesで呼び出し可能な関数を制限可能code_executionツールも提供| 機能 | OpenAI | Anthropic | Gemini | Mistral |
|---|---|---|---|---|
| 基本FC | ○ tools API | ○ Tool Use | ○ functionDeclarations | ○ |
| 並列呼び出し | ○ (GPT-4o+) | ○ (Claude 3.5+) | ○ (Gemini 2.0+) | ○ |
| Strict Mode | ○ strict: true | ○ input_schema | ○ responseSchema | × |
| ストリーミング | ○ | ○ content_block | ○ | ○ |
| ツール結果キャッシュ | ○ | ○ (Claude 4) | △ | × |
| 最大ツール数 | 128 | 64 | 128 | 64 |
1つのタスクを完遂するために複数のツールを順次呼び出すパターン。
Function Callingは LLM エージェントの「手」として機能する。
tool_choiceの適切な設定とスキーマバリデーションで軽減Q1: Function CallingとTool Useの違いは何ですか? A: 技術的には同じ概念で、プロバイダによる呼称の違いである。OpenAIは「Function Calling」から「Tools API」に移行し、Anthropicは一貫して「Tool Use」と呼んでいる。GoogleのGeminiは「Function Calling」を使用。いずれもLLMが構造化されたツール呼び出しリクエストを生成する機能を指す。
Q2: 並列Function Callingのメリットは何ですか? A: 独立した複数のデータ取得を1回のAPIコールで同時に実行できるため、レイテンシとAPIコール数を削減できる。例えば天気情報と株価情報を同時に取得する場合、逐次呼び出しでは2ラウンドトリップかかるが、並列呼び出しでは1ラウンドトリップで完了する。
Q3: Function Callingで定義できるツール数の上限はありますか? A: OpenAIは最大128ツール、Anthropicは最大64ツールが実用上の上限。ただし、ツール数が増えるとモデルの選択精度が低下する傾向がある。実用的には20〜30ツール以内に抑え、必要に応じてツールのルーティング層を設ける設計が推奨される。