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の動作フローは以下のとおりです:
- 関数定義の提供: 開発者がAPIに呼び出し可能な関数のスキーマ(名前・パラメータ・説明)を渡す
- LLMの判断: モデルはユーザーの質問を解析し、関数呼び出しが必要かを判断
- 引数の生成: 必要と判断した場合、JSON形式で関数名と引数を生成
- 実行委譲: 実際の関数実行はアプリケーション側が担当
- 結果の組み込み: 関数の戻り値をコンテキストに追加し、最終回答を生成
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名称 | 特記 |
|---|---|---|
| Claude | Tool Use | toolsパラメータ + tool_useコンテンツブロック |
| Gemini | Function Calling | OpenAI互換形式 |
| Llama 3.1+ | Tool Calling | <tool_call>タグ形式 |
| Mistral | Function Calling | OpenAI互換形式 |
制約と注意点
- セキュリティ: LLMが生成した引数を必ずバリデーションしてから実行する
- 副作用: 削除・送信など不可逆操作は人間の確認ステップを挟む
- コスト: 関数スキーマはトークンを消費するため、関数数を最小化する
- ハルシネーション: 存在しない関数名や不正な引数を生成する場合がある
関連概念
Function CallingはLLMエージェントフレームワーク(LangChain・AutoGen・LlamaIndex)の中核技術です。Anthropic社はFunction Callingと同等の概念を「Tool Use」と呼び、OpenAI APIとは異なる独自形式を採用しています。