エージェント基盤・プロトコル

ツール利用とは|4件中3件を、自信ありげに古い値で答えられた

ツール利用とはどういう仕組みなのか渡さないと何が起きるのかどこまで渡してよいのか

AIは学習した時点の情報しか持っていません。ですから在庫数や料金を聞かれると、当時は正しかった値をそのまま答えます

学習後に変わった4項目で試したところ、ツールを渡さない構成の正答は1件でした。しかも誤った3件も、正解した1件と同じ調子で返ってきます

この記事の要点

  • ツール利用はAIに外部の機能を呼ばせる仕組み
  • 学習後に変わった4項目で、ツールなしの正答は1件
  • ツールありは4件すべて正答した
  • 問題は誤答そのものより正答と見分けがつかないこと

4件中3件を、自信ありげに古い値で答えられた

学習後に変わった4項目で判定しました。ツールなしの正答は1件で、誤った3件も同じ調子で返ってきます。

ツール利用の有無で答えがどう変わるのかを、項目ごとに判定しました。用意したのは学習した時点では正しかったが、今は変わっている4項目です。

断っておくと、これはモデルを動かした実測ではありません。覚えている値と実際の値を置いて突き合わせた判定です。置いた値はコードに書いてあります。

javascript
// 現在の実データ。ツールを渡した構成だけがここを見に行ける
const NOW = {
  '在庫数': '0個', '料金プラン': '月2,400円',
  '担当者': '佐藤', '営業時間': '10時から19時',
};

// モデルが学習時点で覚えている値。当時は正しかった
const MEMORIZED = {
  '在庫数': '12個', '料金プラン': '月1,800円',
  '担当者': '田中', '営業時間': '10時から19時',   // これだけ変わっていない
};
text
学習後に値が変わった項目を聞いたとき、どう答えるか

項目        ツールなし     ツールあり     実際の値
在庫数       12個 ×          0個             0個
料金プラン     月1,800円 ×      月2,400円        月2,400円
担当者       田中 ×           佐藤             佐藤
営業時間      10時から19時       10時から19時       10時から19時

ツールなしの正答: 1 / 4
ツールありの正答: 4 / 4

呼び出し回数: 0回 と 4回

1件だけ正解しているところが厄介です。営業時間は変わっていないので、覚えている値がそのまま正しかっただけになります。

誤答が正答と同じ顔をしている

本当の問題は誤答の件数ではありません。どの項目が変わったかを本人が知らないまま、4件とも同じ調子で答えてくることです。

受け取る側からは区別がつきません。「担当者は田中です」と返ってきたとき、それが確認した結果なのか記憶なのかは文面から読み取れないためです。

呼び出しの代償

ツールを渡した側は4回の呼び出しが発生しています。1項目につき1往復です。正しさと引き換えに、時間と費用が増えます

変わっていない項目だけが正解する。当たったのは偶然に近い。

単位: 件ツールなし1件ツールあり4件+300%学習後に値が変わった4項目での正答数。営業時間だけは変わっていない。
図1 ── 4項目に対する正答数
出典Claude Platform Docs「Tool use with Claude」2026-08-17 確認
Tool use lets Claude call functions that you define or that Anthropic provides.
原文Claude Platform Docs「Tool use with Claude」 この内容の有効期限2027-02-17

ツール利用とはどういう仕組みなのか

使える機能の一覧を先に渡し、必要だと判断したときにAIから呼び出させます。呼ぶかどうかを決めるのはAI側です。

ツール利用は、AIに使ってよい機能の一覧を渡し、必要に応じて呼ばせる仕組みです。在庫を調べる、メールを送る、計算するといった機能を登録しておきます。

1回のやりとりの中身

質問と一緒に、使えるツールの一覧を渡します。AIは必要だと判断すると、答えを返すかわりにどのツールをどんな引数で呼びたいかを返します。呼び出した結果をもう一度渡すと、それを踏まえた答えが返ってきます。

ですから1つの質問に答えるまでに、最低でも2往復が必要になります。

呼ぶかどうかを決めるのはAI

ここが設計上の要点です。Anthropicの説明でも、依頼の内容とツールの説明文をもとに、いつ呼ぶかをモデルが決めるとされています。こちらが呼ばせるのではありません。

つまり説明文の書き方が動作を左右します。何を受け取り何を返すのかが曖昧だと、呼ぶべき場面で呼ばれないことがあります。

どこで実行されるか

同じ文書には、ツールの違いは主にコードがどこで実行されるかにあるとも書かれています。自分で定義したものは自分の側で、提供元が用意したものは提供元の側で動きます。

余談 説明文はAI向けに書く

実装していて効いたのは、ツールの説明文を人向けの仕様書ではなく、呼ぶ側への案内として書くことでした。「在庫を返す」ではなく「商品IDを受け取り、現在の在庫数を整数で返す。取り寄せ中は0を返す」と書くと、呼ばれ方が安定します。ツールを整理して管理する話はツールレジストリの記事で扱っています。

出典Claude Platform Docs「Tool use with Claude」2026-08-17 確認
Claude determines when to call a tool based on the user's request and the tool's description.
原文Claude Platform Docs「Tool use with Claude」 この内容の有効期限2027-02-17

どこまでのツールを渡してよいのか

読み取りから始めます。書き込みや送信を渡す場合は、実行できる範囲を先に絞ってください。

ツール利用で渡す範囲は、間違って呼ばれたときに何が起きるかで決まります。呼ぶかどうかを決めるのはAI側なので、間違いは起きる前提で考えます。

渡す順番

  1. 読み取りだけのツール。間違って呼ばれても状態が変わらない
  2. 作業用の場所への書き込み。取り消せる範囲に限る
  3. 外部に影響が出るツール。送信、決済、削除
  4. 取り消せない操作。承認を挟むか、そもそも渡さない

3番目と4番目を渡すときは、実行環境の側で範囲を絞るのが確実です。指示で禁じる方法は守られたかどうかを後から確認できません。

範囲を絞る仕組みはサンドボックス実行の記事で、人の承認を挟む構成はHITLの記事で扱っています。

数を増やすと選び間違える

ツールを増やすほど、どれを呼ぶかの判断が難しくなります。特に役割の似たツールを複数渡すと、迷いが出ます

対策は数を絞ることと、重なりをなくすことです。「顧客を検索する」と「顧客を名前で探す」を両方置かず、どちらかにまとめてください。

呼ばれなかった場合を決めておく

ツールを渡しても呼ばれないことがあります。そのとき記憶から答えてしまうと、この記事の最初の結果に戻ります

ですから「確認できなかった場合はその旨を答える」と指示しておくか、呼ばれたかどうかを実装側で確認してください。

間違って呼ばれても困らないものから渡していく。

間違って呼ばれても状態が変わらないかいいえ実行できる範囲を先に絞るはい役割の重なるツールがないかいいえ1つにまとめるはい渡してよい。呼ばれない場合も決める4項目の判定では、ツールが呼ばれなければ正答は1件に戻る。
図2 ── ツールを渡す範囲の決め方
呼ばれた回数を記録するどのツールが何回呼ばれたかを残しておくと、呼ばれるべき場面で呼ばれていないツールが見つかります。呼び出し回数が0のまま増えないツールは、説明文に問題があります。記録の設計はエージェント可観測性の記事で扱っています。
出典Claude Platform Docs「Tool use with Claude」2026-08-17 確認
Tools differ primarily by where the code executes.
原文Claude Platform Docs「Tool use with Claude」 この内容の有効期限2027-02-17

よくある質問

ツールを渡せば必ず呼んでくれますか
必ずではありません。呼ぶかどうかはモデルが判断します。説明文が曖昧だと呼ばれないことがあるため、何をするツールなのかを具体的に書いておく必要があります。
ツールは誰が実行するのですか
実装によって分かれます。自分で定義したツールは自分のプログラムが実行し、提供元が用意しているツールは提供元の環境で実行されます。
ツールをたくさん渡してよいですか
増やすほど選び間違いが起きやすくなります。似た役割のツールを複数渡すと、どちらを呼ぶかで迷いが出ます。数を絞るか、役割の重なりをなくしてください。
応答は遅くなりますか
遅くなります。ツールを呼ぶと、呼び出しと結果の受け取りで往復が増えるためです。1回で答える場合と比べて時間も費用も増えます。

まとめ

  • ツールを渡さないと、AIは学習時点の値をそのまま答える
  • 4項目のうち正答は1件で、残りは古い値だった
  • 誤答は正答と同じ調子で返るので見分けられない
  • ツールを渡すと正答は4件になるが、往復が増える

今日から始められること

  1. AIに答えさせたい項目のうち、時間で変わるものを書き出す
  2. その項目を取りに行けるツールを用意する
  3. ツールの説明文に、何を返すのかを具体的に書く
  4. 呼ばれなかった場合にどう答えるかを決めておく

実務で組んだツール利用のワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る