Function Callingとは何か
Function CallingはLLMが外部ツールを使う必要性を判断し、呼び出し命令を出力する機能です。
テキスト生成から行動へ
通常のLLMは「テキストを入力して、テキストを出力する」機械です。「今日の東京の天気は?」と聞いても、学習済みの知識内で答えるか、知らなければ「わかりません」と答えるだけです。Function Calling(ツール使用)を使うと、LLMは「この質問には天気APIを呼び出すべき」と判断し、そのリクエストをJSON形式で出力します。バックエンドがAPIを実行してデータを返すと、LLMはそれを使って回答を完成させます。
OpenAIのTool Use仕様
現在は主要なLLMプロバイダー(OpenAI・Anthropic・Googleなど)がそれぞれFunction Callingに対応しており、呼び名や細かい仕様に若干の違いがあります。LangChainなどのフレームワークはこれらの差異を吸収して統一的なインターフェースを提供しています。
ツール定義の構造
Function Callingを使うには、事前にツールの「名前・説明・パラメータのスキーマ」をJSON形式でLLMに渡します。例えば天気取得ツールなら「名前:get_weather、説明:指定した都市の現在の天気を返す、パラメータ:city(文字列、必須)」のように定義します。LLMはこの定義を読んでどのツールをいつ使うべきかを学習なしに理解します。
Function Callingの動作フロー
4ステップのループがFunction Callingの基本的な処理の流れです。
LLMによるツール選択と引数生成
ユーザーの質問とツール定義リストをLLMに渡すと、LLMは「このツールを使うべきか、直接回答すべきか」を判断します。ツールを使う場合は「ツール名」と「引数(JSONオブジェクト)」を出力します。例えば「東京の明日の天気は?」という質問に対し、LLMは「ツール名:get_weather、引数:city=Tokyo, date=tomorrow」という形式でJSON出力し、バックエンドがそれを実行します。
ツール実行と結果の返却
バックエンドはLLMの出力JSONを受け取り、対応する関数・API・ツールを実際に実行します。実行結果(例:「明日の東京は晴れ、最高気温18度」)を次のLLM呼び出しの入力に含めて送信します。LLMはその結果を文脈として使い、ユーザーへの自然な回答を生成します。この一連の流れで「LLMが実際の行動を取る」ことが実現します。
並列ツール呼び出し
現在広く使われているLLMでは、複数のツールを同時に呼び出す並列ツール実行が可能です。「A社の売上とB社の売上を取得してください」という質問に対し、2つのDB検索を並列で実行することで応答時間を短縮できます。
Function Callingの活用例
計算・検索・DB操作・スケジュール管理など幅広い業務に適用できます。
計算と構造化データの取得
- 正確な計算:Pythonインタープリタを呼び出して複雑な計算・統計処理を正確に実行
- データベース問い合わせ:自然言語からSQLを生成して社内DBに問い合わせ
- スプレッドシート操作:Excelの数値を読み込んで分析・集計を実行
外部サービスとの連携
- カレンダー操作:「来週月曜10時に会議を設定して」をそのまま実行
- CRM更新:商談のメモを自動的にCRMの顧客レコードに記録
- 在庫確認:「この製品の在庫は?」に対し在庫システムAPIをリアルタイムで照会
ツール設計の重要性
ツールの「説明文」の品質が精度に直結します。LLMは説明文だけを頼りにどのツールをいつ使うかを判断するため、「何ができるか・何ができないか・どんな場合に使うか」を明確に記述することが重要です。また、ツールを呼び出しすぎる「ツール依存」や、必要なのに呼び出さない「ツール回避」を防ぐプロンプト設計も重要な設計ポイントです。
安全性と設計上の注意点
ツールは実際にシステムを変更できるため、安全設計が不可欠です。
読み取りと書き込みの分離
ツールには「データを読むだけ(検索・照会)」と「データを変更する(書き込み・削除・送信)」の2種類があります。書き込み系ツールは取り消しが難しいため、「実行前に確認する」「特定のユーザーのみ許可」「変更内容のログを記録する」などの安全機構を設計段階から組み込む必要があります。
エラーハンドリングと無限ループ対策
ツール実行がエラーになったとき(API障害・認証エラーなど)、LLMが同じツール呼び出しを繰り返す無限ループに陥る場合があります。最大ツール呼び出し回数の上限設定と、エラー時の適切なフォールバック(代替回答・エラーメッセージ)の実装が必要です。
まとめ
この記事では、Function CallingによってLLMが外部ツールを使って行動する仕組みを解説しました。
- Function CallingはLLMがツールの使用が必要か判断し、ツール名と引数をJSON出力する機能
- バックエンドがツールを実行して結果をLLMに返し、LLMが最終回答を生成する4ステップのループで動作
- 計算・DB照会・カレンダー操作・CRM更新など、LLMが直接実行できない業務処理を可能にする
- 書き込み系ツールは安全設計(確認フロー・上限設定・ログ記録)が不可欠
これらを理解することで、LLMを使ったビジネスプロセス自動化の設計を評価し、どの業務をAIエージェントに任せられるかを判断できるようになります。


コメント