ChatGPTに「今日の東京の天気は?」と聞いても、リアルタイムの天気は答えられません。なぜなら、LLMの知識は学習時点で止まっているからです。
しかし、Function Calling(関数呼び出し)を使えば、AIは天気APIを呼び出して最新情報を取得できます。
この記事では、LLMと外部世界をつなぐ重要技術「Function Calling」について解説します。
Function Callingとは?
一言で言うと
Function Callingは、LLMが外部の関数やAPIを「呼び出すべきかどうか」を判断し、必要な引数をJSON形式で出力する機能です。
「Tool Use(ツール使用)」とも呼ばれます。
AIが直接APIを呼び出すんですか?
いいえ、ここが重要なポイントです。LLMは「この関数を呼んでほしい」と指示を出すだけで、実際の実行はプログラム側が行います。LLMは判断と引数の生成を担当します。
何ができるようになるのか
Function Callingにより、LLMは以下のことが可能になります。
- 最新情報の取得:天気、株価、ニュースなど
- データベース操作:顧客情報の検索、予約の登録
- 外部サービス連携:メール送信、カレンダー登録
- 計算処理:複雑な数学計算、データ分析
- ファイル操作:ドキュメント作成、画像処理
Function Callingの仕組み
処理の流れ
- ユーザーの質問:「今日の東京の天気は?」
- LLMが判断:「天気を知るには get_weather 関数が必要だな」
- LLMが引数を生成(JSON):
{
"function": "get_weather",
"arguments": {
"location": "東京",
"date": "2025-12-10"
}
}
- プログラムが関数を実行:天気API呼び出し → 「晴れ、最高気温12度」
- 結果をLLMに渡す
- LLMが回答を生成:「今日の東京の天気は晴れで、最高気温は12度です」
重要なポイント
Function Callingという名前から誤解しやすいですが、LLMが関数を直接実行するわけではありません。LLMは「どの関数を呼ぶべきか」「引数は何か」を判断するだけで、実際の実行はアプリケーション側が行います。
関数の定義方法
開発者は、LLMに利用可能な関数を教える必要があります。
{
"name": "get_weather",
"description": "指定した場所の天気情報を取得します",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "天気を調べたい場所(例:東京、大阪)"
},
"date": {
"type": "string",
"description": "日付(YYYY-MM-DD形式)"
}
},
"required": ["location"]
}
}
LLMはこの定義を読んで、ユーザーの質問に適した関数を選択します。
Function Callingの種類
1. 単一関数呼び出し
1回のリクエストで1つの関数を呼び出します。
ユーザー:「東京の天気は?」
→ get_weather(location="東京")
2. 並列関数呼び出し(Parallel Function Calling)
複数の関数を同時に呼び出します。効率的な処理が可能。
ユーザー:「東京と大阪の天気を教えて」
→ get_weather(location="東京")
→ get_weather(location="大阪")
(同時に実行)
3. 連鎖的関数呼び出し
1つの関数の結果を使って、次の関数を呼び出します。
ユーザー:「私の予定がある日の天気を教えて」
→ get_calendar() → 「12月15日に予定あり」
→ get_weather(date="2025-12-15")
tool_choiceオプション
関数呼び出しの挙動を制御できます。
| オプション | 動作 |
|---|---|
| auto | AIが必要に応じて関数を呼び出す(デフォルト) |
| required | 必ずいずれかの関数を呼び出す |
| none | 関数呼び出しを無効化 |
| {"name": "関数名"} | 特定の関数を強制的に呼び出す |
主要LLMのFunction Calling対応
OpenAI(GPT-4、GPT-3.5)
2023年6月にFunction Calling機能を発表。2023年12月のアップデートで、パラメータ名が変更されました。
| 旧パラメータ | 新パラメータ |
|---|---|
| functions | tools |
| function_call | tool_choice |
Anthropic(Claude)
「Tool Use」という名称でFunction Callingをサポート。JSON形式で関数を定義し、Claude API経由で利用可能。
Google(Gemini)
Gemini 1.5 Pro/FlashでFunction Callingをサポート。Vertex AIと統合され、エージェントオーケストレーションにも対応。
オープンソースモデル
Llama、Mistral、Qwenなども、ファインチューニングによりFunction Callingに対応。
Function Callingの活用事例
1. AIアシスタント・チャットボット
ユーザー:「明日の14時に田中さんとミーティングを設定して」
→ create_meeting(date="2025-12-11", time="14:00", attendee="田中")
→ 「ミーティングを設定しました」
チャットボットに実際の「行動」能力を与えられます。
2. データ検索・分析
ユーザー:「先月の売上上位5商品を教えて」
→ query_database(query="SELECT * FROM sales WHERE month='2025-11' ORDER BY amount DESC LIMIT 5")
→ 「1位:商品A(100万円)、2位:商品B(80万円)...」
3. 自然言語からの構造化データ抽出
ユーザー:「山田太郎、35歳、東京都在住、電話番号03-1234-5678」
→ extract_contact({name: "山田太郎", age: 35, address: "東京都", phone: "03-1234-5678"})
4. 複合タスクの自動化
ユーザー:「新規顧客リストをExcelにまとめてメールで送って」
→ get_new_customers()
→ create_excel(data=顧客リスト)
→ send_email(to="担当者", attachment="顧客リスト.xlsx")
Function CallingとMCPの関係
MCP(Model Context Protocol)とは
2024年にAnthropicが発表したMCPは、LLMと外部ツールを接続するための標準プロトコルです。
| 項目 | Function Calling | MCP |
|---|---|---|
| 提供元 | 各LLMベンダー | Anthropic(オープン標準) |
| 対象 | 特定のAPIとの連携 | 汎用的なツール接続 |
| 標準化 | ベンダーごとに異なる | 統一プロトコル |
| 拡張性 | API単位で定義 | サーバー単位で機能追加 |
どう使い分けるんですか?
Function Callingは「特定のAPIを呼び出す」機能、MCPは「様々なツールを統一的に接続する」標準規格です。MCPを使えば、一度設定したツール群を異なるLLMで再利用できるメリットがあります。
Function Callingの実装のコツ
1. 関数の説明を明確に
// 悪い例
"description": "天気を取得"
// 良い例
"description": "指定した都市の現在の天気情報(気温、湿度、天候)を取得します。日本国内の都市に対応しています。"
LLMは説明文を読んで関数を選択するため、詳細な説明が精度向上につながります。
2. パラメータの型と制約を明示
"parameters": {
"temperature_unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "温度の単位"
}
}
3. 必須パラメータを適切に設定
"required": ["location"] // 必須パラメータ
// dateは任意(省略時は今日)
4. エラーハンドリングを実装
関数の実行が失敗した場合の処理も重要です。
関数実行エラー発生
→ エラー情報をLLMに返す
→ LLMが別のアプローチを提案
2025年の最新動向
効率化の進展
最新の研究では、利用可能な関数を動的に制限する「Less-is-More」アプローチが注目されています。
- 実行時間:最大70%削減
- 消費電力:約40%削減
関数の選択肢が少ないほど、LLMの判断が速く正確になります。
AIエージェントの基盤技術
Function Callingは、AIエージェント(自律的にタスクを実行するAI)の核心技術となっています。
【AIエージェントの動作】
目標設定 → 計画立案 → Function Calling → 結果確認 → 次のアクション
↑
外部世界との接点
Function Callingにより、LLMは「考える」だけでなく「行動する」ことが可能になりました。これはAIの実用性を大きく広げる技術革新です。
まとめ:AIと外部世界をつなぐ架け橋
Function Callingは、LLMが外部システムと連携するための重要な技術です。
Function Callingの重要ポイント:
- LLMが「どの関数を呼ぶか」を判断し、引数を生成
- 実際の関数実行はアプリケーション側が担当
- 天気取得、DB操作、外部API連携など幅広い活用
- OpenAI、Claude、Geminiなど主要LLMが対応
- 並列呼び出し、連鎖呼び出しも可能
- AIエージェントの核心技術として発展中
Function Callingにより、AIは「知識を持つ」だけでなく「行動できる」存在へと進化しています。