AI・機械学習
中級

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

LLMが外部関数・APIを構造化パラメータで呼び出す仕組み。OpenAIが2023年6月に導入し、ツール連携の標準技術となった。

0 回閲覧
0 いいね
2026/6/7 更新
関連タグ
function-calling
tool-use
llm
openai
structured-output

Function Calling(LLM)

概要

Function Calling(関数呼び出し)は、Large Language Model(LLM)が会話の中で外部関数やAPIを呼び出すための標準的な仕組みです。OpenAIが2023年6月にGPT-3.5-turboとGPT-4に導入したことで普及し、現在はClaude・Gemini・Llama・Mistralなど主要LLMの多くが対応しています。

仕組み

Function Callingの動作フローは以下のとおりです:

  1. 関数定義の提供: 開発者がAPIに呼び出し可能な関数のスキーマ(名前・パラメータ・説明)を渡す
  2. LLMの判断: モデルはユーザーの質問を解析し、関数呼び出しが必要かを判断
  3. 引数の生成: 必要と判断した場合、JSON形式で関数名と引数を生成
  4. 実行委譲: 実際の関数実行はアプリケーション側が担当
  5. 結果の組み込み: 関数の戻り値をコンテキストに追加し、最終回答を生成
import openai

client = openai.OpenAI()

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

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "東京の天気は?"}],
    tools=tools,
    tool_choice="auto"
)

# モデルが関数呼び出しを判断した場合
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.function.name)       # "get_weather"
print(tool_call.function.arguments)  # {"location": "Tokyo", "unit": "celsius"}

tool_choiceオプション

値動作
"auto"モデルが関数呼び出し要否を判断(デフォルト)
"none"関数呼び出し禁止、通常テキスト生成のみ
{"type": "function", "function": {"name": "xxx"}}特定関数を強制呼び出し

主なユースケース

  • RAG(Retrieval-Augmented Generation): search_documents(query) でベクトルDB検索
  • リアルタイムデータ取得: 天気・株価・ニュースAPIへのアクセス
  • アクション実行: メール送信・カレンダー登録・Slackメッセージ
  • 構造化データ抽出: 非構造化テキストからJSONスキーマへの変換
  • マルチステップワークフロー: 複数関数を順次・並列に呼び出すエージェント構築

他モデルでの実装

モデルAPI名称特記
ClaudeTool Usetoolsパラメータ + tool_useコンテンツブロック
GeminiFunction CallingOpenAI互換形式
Llama 3.1+Tool Calling<tool_call>タグ形式
MistralFunction CallingOpenAI互換形式

制約と注意点

  • セキュリティ: LLMが生成した引数を必ずバリデーションしてから実行する
  • 副作用: 削除・送信など不可逆操作は人間の確認ステップを挟む
  • コスト: 関数スキーマはトークンを消費するため、関数数を最小化する
  • ハルシネーション: 存在しない関数名や不正な引数を生成する場合がある

関連概念

Function CallingはLLMエージェントフレームワーク(LangChain・AutoGen・LlamaIndex)の中核技術です。Anthropic社はFunction Callingと同等の概念を「Tool Use」と呼び、OpenAI APIとは異なる独自形式を採用しています。

この記事について
カテゴリーAI・機械学習
難易度中級
作成日2026/6/7