AI・機械学習
中級

LLM Function Calling(エルエルエム ファンクション コーリング)

LLMが外部ツール・APIを呼び出せるようにする機能。モデルはユーザーの意図に応じてJSON形式の関数呼び出し命令を生成し、アプリ側がその結果を受け取って実行する。OpenAI GPT-4・Claude・Geminiが対応する。

0 回閲覧
0 いいね
2026/6/1 更新
関連タグ
LLM
Function Calling
Tool Use
API連携
AI

概要

LLM Function Calling(関数呼び出し)は、大規模言語モデルが事前に定義された外部ツールや関数を呼び出す命令をJSON形式で生成する機能である。2023年6月にOpenAIがGPT-4/GPT-3.5-turboに導入し、以降Anthropic(Claude Tool Use)・Google(Gemini Function Calling)・Mistral・Llamaファミリーへと普及した。

従来のLLMはテキスト生成に特化していたが、Function Callingにより外部API・データベース・コードインタープリタ・Webブラウザなどのツールを呼び出せるようになり、「AIエージェント」の実装が現実的になった。2025年現在、主要なLLM APIすべてが何らかの形でFunction Calling/Tool Useをサポートする。

動作の仕組み

  1. 関数定義: 開発者がJSONスキーマ形式で使用可能な関数一覧をモデルに渡す
  2. 意図判定: モデルがユーザー入力を解析し、必要な関数とパラメータを特定
  3. 呼び出し命令生成: モデルが{"name": "get_weather", "arguments": {"city": "Tokyo"}}形式のJSONを出力
  4. アプリ側実行: アプリが実際の関数を実行してAPIを叩く
  5. 結果フィードバック: 実行結果をモデルに返し、最終回答を生成

主要プロバイダの実装比較表

プロバイダ名称並列呼び出しストリーミング最大関数数
OpenAIFunction Calling○(Parallel)○128
AnthropicTool Use○○64
GoogleFunction Calling○○64
MistralTool Calling○○制限なし
Ollama(Llama 3.1)Tool Use△△モデル依存

実装例(OpenAI Python SDK)

import openai

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "指定した都市の現在の天気を取得",
        "parameters": {
            "type": "object",
            "properties": {
                "city": {"type": "string", "description": "都市名"}
            },
            "required": ["city"]
        }
    }
}]

response = openai.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "東京の天気は?"}],
    tools=tools
)
# response.choices[0].message.tool_calls でJSON呼び出し命令を取得

Parallel Function Calling

GPT-4o・Claude 3.5・Gemini 1.5は複数の関数を同時並列で呼び出す命令を1回のレスポンスで生成できる。例えば「東京と大阪と名古屋の天気を比較して」という質問に対し3つの天気API呼び出しを同時に生成し、レイテンシを1/3に短縮できる。

ユースケース

  • RAGの強化: VectorDB検索関数を渡してリアルタイム知識取得
  • CRMツール: Salesforce/HubSpotのAPIを関数として定義し、自然言語でCRM操作
  • コードアシスタント: コード実行環境をツールとして渡してデバッグ自動化
  • マルチエージェント: 複数のAIエージェントが関数として互いを呼び出すシステム構築

よくある質問(FAQ)

Q1: Function CallingとTool Useの違いは何ですか? A: 実質的に同じ概念で、OpenAIが「Function Calling」、AnthropicとGoogleが「Tool Use」と呼んでいます。仕様の細部が異なりますが、外部関数を呼び出す命令をJSONで生成する機能として同等です。

Q2: ローカルLLM(Ollama等)でも使えますか? A: Llama 3.1/3.2・Mistral・Qwen2.5等のOSSモデルはFunction Calling対応ですが、GPT-4oやClaude 3.5に比べ精度が低い傾向があります。llama.cpp/Ollamaでもtool_callsパラメータで利用可能です。

Q3: 悪意ある関数を定義されるリスクはありますか? A: Prompt Injectionでモデルを騙して意図しない関数を呼び出させる攻撃が存在します。ツール定義の検証・実行前の確認ステップ・サンドボックス実行環境の整備が重要です。

まとめ

  • LLM Function Callingは外部API・ツールをJSONで呼び出す命令をモデルが生成する機能
  • OpenAI/Anthropic/Google/Mistralの主要LLM全てが2025年時点でサポート
  • Parallel Function Callingで複数ツールを同時呼び出ししレイテンシを削減
  • AIエージェント・RAG強化・CRMツール統合の中核技術として急速に普及
この記事について
カテゴリーAI・機械学習
難易度中級
作成日2026/6/1