AIが「天気を調べます」「在庫を確認します」と動くとき、モデル自身が勝手に会社のデータベースへ入っているわけではありません。Function callingは、使いたい道具と入力値をモデルが返し、それをアプリ側で扱うための仕組みです。小さな在庫検索を例に、どこで検査すれば事故を防ぎやすいのかまで見ていきます。
この記事の目次
AIの依頼と、プログラムの実行を分ける
Functionは関数、つまり決まった入力を受け取って処理するプログラムのまとまりです。Callingは呼び出しを指します。AIのFunction callingでは、利用できる関数の説明や入力形式を渡し、モデルが呼び出す候補を構造化された形で返します。Tool callingと呼ばれることもあります。
モデルがコードや文字列を返しただけでは、外部処理は完了していません。アプリ側がその要求を検査して実行し、結果を返す工程が必要です。ホスト側で実行が管理される道具もありますが、誰がどこを実行するのかを確認することが重要です。
在庫を読むだけの道具を、一つ用意する
架空の商品A001の在庫を調べる例です。利用者は「A001はあと何個ある?」と尋ねます。公開する道具はget_stockで、受け取るのはskuという商品コード一つだけ。注文確定や在庫更新は含めません。
呼び出しの候補は「get_stock、skuはA001」という内容になります。アプリは商品コードの形式と閲覧権限を確認し、在庫表から12個という結果を返します。その後、AIが「在庫は12個です」と文章にします。12という数値の根拠はモデルの知識ではなく、在庫表です。

受け取った値を、そのまま実行しない
引数とは、関数へ渡す具体的な値です。この例ならA001が該当します。AIが返した値でも、アプリで形式を検査します。存在しない商品コード、想定外の項目、権限のない商品への要求は、そのまま通さないようにします。
形式を正しくそろえる機能があっても、それだけで閲覧してよいデータとは決まりません。たとえば「skuが文字列」という検査を通っても、別の会社の商品データへアクセスしてよいとは限らないからです。認証している利用者と対象データの関係も確かめます。
| 場所 | 検査すること | 通さない例 |
|---|---|---|
| 形式 | 必要な項目・型・長さ | skuが空、余計な項目がある |
| 業務条件 | 対象コードが存在する | 存在しない商品 |
| 権限 | 利用者がその在庫を読める | 別組織の内部データ |
| 結果 | エラーと成功を区別する | 通信失敗を在庫0と表示 |
| 変更操作 | 承認と重複防止 | 同じ注文を二重確定 |
失敗を「0件」として処理しない
在庫サービスへ接続できなかった場合、0個を返してはいけません。「取得に失敗した」と「在庫が0個だった」は別の結果です。モデルへ戻す情報でも区別し、利用者へ再確認が必要と伝えます。
検索で見つからない場合も、商品がないのか、コードを間違えたのか、権限がないのかで扱いが変わります。不要な内部情報を外へ出さず、利用者が次に何を確認すればよいかを返すように設計します。
注文や送信を伴う処理では、タイムアウトしたからといって無条件に再実行すると重複する可能性があります。一意の処理番号で同じ依頼を識別し、外部の実行結果を確認できる仕組みが必要です。
小さな検査を通してから、実データへ
この記事のサンプルでは、架空の在庫表を使い、正常なA001、形式違い、存在しないコード、余計な項目を含む入力を検査します。ここで確認できるのは引数を受け取るプログラムの動作であり、モデルが毎回正しい関数を選べるという性能ではありません。
本番へつなぐ前に、読み取りだけの環境で、権限のないデータへアクセスできないか、失敗が記録されるか、モデルの返答と処理結果が一致するかを確かめてください。文章の自然さと、外部の状態を別々に見ることが大切です。
最初の一つは、読み取りだけで十分
在庫、予定、承認済み資料の検索など、外部を書き換えない道具から始めると、実行の流れを追いやすくなります。新しいサービスを契約する前に、何のデータが必要で、誰が閲覧できるのかを決めましょう。
道具を複数のAIアプリへ提供する場合はMCPとAPIの違いへ。実装全体の始め方はAI開発の最初の進め方で、作る範囲と確認順序を整理できます。
よくある疑問を、ここで。
使い始める前に、気になるところから。
AIが返した関数は自動で実行されますか?
利用する仕組みによります。一般的な自作アプリでは、返された要求をアプリ側が検査して実行します。誰が実行を管理するかを確認してください。
JSONで返せば安全ですか?
形式がそろうだけでは、権限や業務条件が正しいとは限りません。アプリ側で対象データと操作の許可も検査します。
Function callingとMCPは同じですか?
同じではありません。前者はモデルから道具の呼び出しを扱う仕組み、MCPはAIアプリと道具や情報の提供側をつなぐ共通方式です。併用できます。
出典と、この記事について
公式資料や、記事で参照した発表・報道をまとめています。仕様や料金は、利用する前に最新の案内をご確認ください。
製品の実測レビューや、導入効果の保証を示すものではありません。編集方針を読む



ぜひコメントください
試してわかったことも、導入前の疑問も。
具体的な場面を添えて、情報を交換しましょう。
コメントを読み込んでいます…
ほかの記事のやり取りを見る