「計算します」と返事が来た。でも、計算の答えはまだ届いていない。AIが道具を使う場面では、この途中経過を分けて見ると、何が起きたかを追いやすくなります。
ツール呼び出しとは、AIが外部機能へ処理を依頼すること
ツール呼び出しは、AIモデルが使いたい機能と入力値を指定して、実行を依頼する仕組みです。 検索や計算、資料の読み取りなどが対象になります。Function Calling(ファンクション・コーリング)とも呼ばれます。
モデルが「計算します」と文章を作るだけでは、計算ツールは動きません。実行側が受け取れる形で依頼を出し、処理した結果が返ってくる必要があります。この記事では、アプリ側が用意した計算機能を呼ぶ例で、その一往復を見ます。サービス提供側で実行されるツールもありますが、依頼を作る役と実行する役を区別する点は同じです。
では、モデルはどの道具を、どんな形で頼めばよいと分かるのでしょうか。
ツール名と引数には何が入る?入場料を計算する例
最初に、アプリが使える機能の説明をモデルへ渡します。「何をする道具か」「呼ぶときの名前」「必要な入力項目」を含む、この道具の説明がツール定義です。
ラボの教材で、架空の展示会の入場料を計算してみます。料金は大人800円、子ども400円で固定。割引はありません。実在する施設の料金ではありません。
| 定義に含めるもの | この教材の例 |
|---|---|
| 名前 | calculate_admission(入場料を計算する) |
| 説明 | 大人と子どもの人数から合計料金を返す |
| 必要な入力 | 大人の人数 adults、子どもの人数 children |
| 入力の条件 | どちらも0以上の整数。両方の項目が必要 |
「大人2人と子ども1人なら?」と聞かれたとき、モデルはこの名前と、人数を指定した依頼を作れます。引数(ひきすう)は、機能へ渡す入力値のことです。ここでは2人と1人に当たります。
{
"name": "calculate_admission",
"arguments": { "adults": 2, "children": 1 }
}
これは説明用に簡略化した呼び出しデータです。実際の項目名や包み方はサービスで異なります。モデルがどんなプログラムでも自由に呼べるわけではなく、アプリが用意して利用を許した機能が入口になります。
依頼票には人数が入りました。でも、この段階にはまだ合計金額がありません。
依頼をアプリが実行し、結果を回答へ戻す
この例では、アプリが呼び出しを受け取り、入力の条件を確かめてから計算します。大人2人分の1,600円と、子ども1人分の400円を足すと、合計は2,000円です。
モデル:計算を依頼する

calculate_admissionへ、大人2人・子ども1人という入力で実行を依頼する
アプリ側:入力を確かめ、計算する

項目と値、利用できる範囲を確かめ、800×2+400×1を計算する
実行処理からモデルへ:結果を返す

合計2,000円という結果を返す
モデル:結果をもとに答える

結果をもとに「合計は2,000円です」と利用者へ答える
ユイ
名前と人数が出た時点で、もう計算できたのかと思ってた
ピコ
そこは依頼ができたところ。2,000円の結果が返ってきたか、もう一つ先を見てね
機能によっては、外部サービスのAPIへ問い合わせます。今回のような計算をアプリ内で済ませることもあり、すべてのツール呼び出しがインターネットへの通信になるわけではありません。
ツールを使えば、モデルだけでは持っていない最新データや、計算プログラムの結果を回答に使えます。ただし、入力を間違えれば違う結果になり、モデルが結果を読み違える可能性も残ります。「ツールを使った」という表示だけで、回答全体の正しさは決まりません。
正しく往復した例を見たので、途中で止まった場合も、どこまで進んだかを分けてみましょう。
入力不足・実行失敗・応答なしは、どこで確かめる?
「大人2人と子ども」で子どもの人数が抜けていたら、この計算に必要な条件がそろいません。勝手に1人と決めて計算するより、人数を確かめる必要があります。
子どもの人数がない依頼を、そのまま計算したら?
この教材では両方の人数を必須にしています。実行側は入力不足として扱い、計算を進めません。子どもを0人として1,600円を返してしまうと、「人数が不明」と「子どもはいない」を取り違えます。足りない条件を確認してから、正しい入力で依頼を出し直します。
入力がそろっていても、別の理由で止まることがあります。
| 確認できた状態 | まだ分からないこと・次に見る場所 |
|---|---|
| 必須の引数がない | どの項目が不足しているか。利用者への確認などで補えるか |
| 操作が権限不足で拒否された | 任された範囲で使えるか。入力の言い換えだけで解決する問題ではない |
| 実行側からエラーが返った | 何が失敗したか。条件の修正や時間を置いた確認が必要か |
| 応答が返らない | 実行されなかったのか、実行後の返事が届かなかったのか |
最後の二つは同じではありません。とくに予約・送信・保存のように状態を変える操作は、応答なしを失敗と決めつけて繰り返すと重複するおそれがあります。結果を確認してから、再試行するかを判断する必要があります。
道具を選べることと、使ってよいことも別です。モデルへの説明に加え、実行側で利用範囲を制限します。仕事全体の権限や停止条件はAIエージェントの解説で扱います。
ツール呼び出し・API・AIエージェントの違い
三つは同じものの別名ではなく、見ている範囲が違います。
| 用語 | 担当する問い | 入場料の例で見る場所 |
|---|---|---|
| ツール呼び出し | モデルはどの機能へ何を頼み、結果をどう受け取る? | 計算を頼んで結果を返す一往復 |
| API | プログラム同士はどのような取り決めで機能やデータを利用する? | ツールの裏側で使われることがある接点 |
| AIエージェント | 目標へ向けて次の手をどう選び、いつ止まる? | 人数を確かめる、計算する、結果を確認する、といった行動の選択 |
ツールを一回使っただけで、必ずAIエージェントになるわけではありません。検索して一度回答する使い方にも、決められた処理の途中にも、ツール呼び出しは組み込めます。
「頼んだ」と「できた」の間を見る
次にAIが道具を使う場面を見たら、何を入力したか、誰が実行したか、どんな結果が返ったかを分けてみてください。入場料の例なら、人数の指定と2,000円の結果は別の段階にあります。
計算、ノート検索、予定表と道具が増えたら、接続方法は一つずつ作るのでしょうか。MCPの仕組みでは、異なる機能とのやり取りを共通の形式でつなぐ考え方を確かめられます。
この記事について
LAB WHITEBOARD
自分の言葉で説明してみよう
「ツールの依頼と実行を分け、入力不足・実行失敗・結果の受け取りを見分けられる。」を、いまの自分の言葉で一文にしてみてください。途中の説明でも大丈夫です。




