ツール検索(tool search)とは、すべてのツール定義を最初からコンテキストに置くことなく、大規模なツールのエコシステムをモデルに利用させる方法である。一部またはすべてのツールは遅延(deferred)させておき、モデルはタスクに関連するツールを検索してコンテキストに読み込み、その後は他のツールと同じように使う。OpenAI と Anthropic の両社がこれをプラットフォームの機能として提供している。OpenAI は関数呼び出し(function calling)のガイドにある tool_search ツールとして、Anthropic は Claude Developer Platform の Tool Search Tool として提供しており、どちらにおいても、アプリケーションが多数のツールや大きなスキーマを持つ場合の解決策として示されている。

用法

両ベンダーが挙げる動機はコストと精度である。ツール定義はモデルのコンテキストに置かれるため、コンテキストの上限を消費し、OpenAI のガイドによれば入力トークンとして課金される。また両社とも、利用可能なツールが多いことを精度の低下と結びつけている。ツール群のうち大きな部分やあまり使われない部分を遅延させることで、その両方に対処できる。2 つの実装は細部で異なる。

OpenAI の関数呼び出しのガイドは、精度を高めるためにターンの開始時に利用可能な関数を少なく保つことを推奨しており、大きなツール群を公開しつつそれを実現する方法としてツール検索を提示している。ツール検索を使用している場合、モデルの出力には関数呼び出しの前にツール検索の呼び出し項目と出力項目が含まれることがある。関数がいったん読み込まれると、それは他の呼び出しと同じように扱われ、tool_choice はそのターンで現在呼び出し可能なツールだけを制約する。

ツール検索は、ツールの記述の仕方とも関わる。遅延させたツールを名前空間にまとめる場合(ツールの名前空間化 を参照)、同ガイドは、名前空間の説明は簡潔にし、詳細な指示は各関数の説明に書くよう助言している。名前空間はモデルが何を読み込むかを決める助けとなり、関数の説明は読み込んだツールを正しく使う助けとなる。OpenAI は、tool_search に対応しているのは gpt-5.4 以降のモデルのみであるとしている。

Anthropic の Tool Search Tool

Claude Developer Platform における高度なツール利用の紹介 で導入された Anthropic の版では、ツールに defer_loading: true を指定する。Claude が最初に目にするのは検索ツールと、遅延させていないツールだけである。Claude が検索すると、一致したツールが参照として返され、コンテキスト内で完全な定義に展開される。MCP サーバーは全体をまとめて遅延させつつ、使用頻度の高い特定のツールだけを読み込んだままにしておくこともできる。プラットフォームは正規表現ベースと BM25 ベースの検索ツールを提供しており、開発者は埋め込みなどを使って独自の検索ツールを実装することもできる。Anthropic は、遅延させたツールは初期プロンプトに含まれないため、これによってプロンプトキャッシュが損なわれることはないとしている。

Anthropic はその動機として、MCP のツール定義が消費するコンテキスト(例として挙げた 5 サーバー構成で約 55K トークン)と、最も多い失敗としての誤ったツール選択および不正なパラメータを挙げている。同社は、この例でトークン使用量が 85% 削減されたこと、また大規模なツールライブラリを用いた社内の MCP 評価において、精度が Opus 4 で 49% から 74% に、Opus 4.5 で 79.5% から 88.1% に向上したことを報告している。

適用される場面

トレードオフは、ツールを呼び出せるようになる前に検索のステップが 1 つ加わることである。Anthropic は、ツール定義が約 10K トークンを超える場合、ツール選択の精度が問題になっている場合、複数のサーバーを持つ MCP ベースのシステム、あるいは 10 個を超えるツールが利用可能な場合にツール検索を推奨しており、小規模なツールライブラリ、毎セッションで使われるツール、簡潔な定義に対しては効果が小さいと考えている。検索はツールの名前と説明に対して照合されるため、明確で説明的な定義を書くこと、そして最もよく使われる 3〜5 個のツールは常に読み込んでおくことを助言している。Anthropic の性能値は同社自身の社内テストによるものである。

関連用語