Anthropic Advanced Tool Use on the Claude Developer Platform: Tool Search Tool、Programmatic Tool Calling、およびTool Use Examples

Anthropicは、Claude Developer Platformで3つのベータ機能 — Tool Search Tool、Programmatic Tool Calling、およびTool Use Examples — をリリースしました。これらは、Claudeがコンテキストウィンドウを使い果たすことなく、非常に大規模なツールライブラリを扱えるように設計されています。同社によると、これらの機能により、従来のツール使用パターンでは不可能だった内部ビルドが可能になり、その中にはProgrammatic Tool Callingを使用して数千行のスプレッドシートを読み取りおよび修正するClaude for Excelも含まれます。

Anthropicが解決しようとしている問題

Anthropicは、数百から数千のツールをシームレスに操作するエージェントを目標としています。例えば、git操作、ファイル操作、パッケージマネージャー、テストフレームワーク、デプロイパイプラインを統合するIDEアシスタント、またはSlack、GitHub、Google Drive、Jira、社内データベース、および多数のMCPサーバーを同時に接続する運用コーディネーターなどです。

現在、これを妨げる3つの制約があります:

  • ツール定義によるコンテキストの肥大化。 ツールの結果と定義は、エージェントがリクエストを読む前に50,000トークン以上を消費する可能性があります。エージェントは、現在のタスクに関連するものだけを保持し、ツールをオンデマンドで発見してロードする必要があります。
  • 自然言語によるツール呼び出しによる推論オーバーヘッド。 各呼び出しには完全な推論パスが必要であり、中間結果は有用かどうかに関係なくコンテキストに蓄積されます。コードは、ループ、条件分岐、データ変換などのオーケストレーションロジックに自然に適合します。
  • 使用法の知識に関するスキーマの制限。 JSONスキーマは構造的に有効なものを定義しますが、オプションパラメータをいつ含めるか、どの組み合わせが意味をなすか、APIが期待する規約を表現することはできません。

Tool Search Tool: オンデマンドのツール発見

Tool Search Toolを使用すると、Claudeは検索ツールを使用して、コンテキストウィンドウを消費せずに数千のツールにアクセスできます。すべてのツール定義を事前にロードする代わりに、Claudeは現在のタスクに実際に必要なツールのみを表示します。

すべてのツールを事前にロードすることのトークンコスト

Anthropicは、5サーバーのMCPセットアップで問題を説明しています:

サーバー ツール おおよそのトークン数
GitHub 35 ~26K
Slack 11 ~21K
Sentry 5 ~3K
Grafana 5 ~3K
Splunk 2 ~2K

これは、会話が始まる前に約55Kトークンを消費する58のツールです。Jira(単独で約17Kトークンを使用)などのサーバーを追加すると、オーバーヘッドは100K+トークンに押し上げられます。Anthropicは、最適化前にツール定義が134Kトークンを消費するのを確認したと報告しています。

トークンコストだけが問題ではありません。Anthropicは、最も一般的な失敗はツールの選択ミスと誤ったパラメータであり、特にnotification-send-userとnotification-send-channelのような類似した名前のツールで発生すると述べています。

Tool Search Toolが保存するコンテキストの量

Anthropicは、Tool Search Toolが従来のアプローチの122,800トークンと比較して、191,300トークンのコンテキストを保存すると報告しています。

従来のアプローチ:

  • すべてのツール定義が事前にロードされる(50以上のMCPツールで約72Kトークン)
  • 会話履歴とシステムプロンプトが残りのスペースを競合する
  • 作業開始前の総コンテキスト消費量:約77Kトークン

Tool Search Toolを使用する場合:

  • Tool Search Toolのみが事前にロードされる(約500トークン)
  • ツールはオンデマンドで発見される(関連する3〜5個のツールで約3Kトークン)
  • 総コンテキスト消費量:約8.7Kトークンで、コンテキストウィンドウの**95%**を保存

Anthropicはこれを、ツールライブラリ全体へのアクセスを維持しながら、トークン使用量の85%削減と説明しています。

MCP評価における精度の向上

Anthropicは、大規模なツールライブラリを使用する場合のMCP評価における大幅な精度向上を報告しています:

  • Opus 4:**49%から74%**に改善
  • Opus 4.5:**79.5%から88.1%**に改善

Tool Search Toolの仕組み

すべてのツール定義をAPIに提供しますが、ツールにdefer_loading: trueをマークして、オンデマンドで発見可能にします。遅延ロードされたツールは、最初はClaudeのコンテキストにロードされません。Claudeは、Tool Search Tool自体と、defer_loading: falseとマークされたツール(最も重要で頻繁に使用されるツール)のみを表示します。

Claudeが特定の機能を必要とする場合、関連するツールを検索します。Tool Search Toolは一致するツールへの参照を返し、それらはClaudeのコンテキストで完全な定義に展開されます。たとえば、ClaudeがGitHubとやり取りする必要がある場合、「github」を検索し、github.createPullRequestとgithub.listIssuesのみがロードされます — Slack、Jira、Google Driveの他の50以上のツールはロードされません。

MCPサーバーの場合、サーバー全体を遅延ロードしながら、特定の高使用ツールをロードしたままにすることができます。

Claude Developer Platformは、正規表現ベースおよびBM25ベースの検索ツールを標準で提供しており、埋め込みやその他の戦略を使用してカスタム検索ツールを実装することもできます。

プロンプトキャッシングに関する注意: Tool Search Toolは、遅延ロードされたツールが初期プロンプトから完全に除外されるため、プロンプトキャッシングを壊しません。ツールはClaudeが検索した後にのみコンテキストに追加されるため、システムプロンプトとコアツール定義はキャッシュ可能なままです。

Tool Search Toolが効果を発揮する場合

Anthropicは、この機能がツール呼び出しの前に検索ステップを追加するため、コンテキストの節約と精度の向上が追加のレイテンシーを上回る場合に最も効果的であると述べています。

使用する場合:

  • ツール定義が10Kトークン以上を消費する場合
  • ツール選択の精度に問題がある場合
  • 複数のサーバーを備えたMCPベースのシステムを構築している場合
  • 10以上のツールが利用可能な場合

あまり効果的でない場合:

  • ツールライブラリが小さい場合(10ツール未満)
  • すべてのツールがすべてのセッションで頻繁に使用される場合
  • ツール定義がコンパクトな場合

Programmatic Tool Calling: コードからのツールオーケストレーション

Programmatic Tool Callingを使用すると、Claudeはコード実行環境でツールを呼び出すことができ、モデルのコンテキストウィンドウへの影響を軽減できます。各結果をコンテキストに返して一度に1つずつツールを要求する代わりに、Claudeは複数のツールを呼び出し、その出力を処理し、実際にコンテキストウィンドウに入る情報を制御するコードを作成します。

従来のツール呼び出しの2つの問題

Anthropicは、ワークフローが複雑になるにつれて、2つの根本的な問題を特定しています:

  • 中間結果によるコンテキストの汚染。 Claudeが10MBのログファイルをエラーパターンについて分析する場合、エラー頻度の要約だけが必要な場合でも、ファイル全体がコンテキストウィンドウに入ります。複数のテーブルから顧客データを取得する場合、関連性に関係なくすべてのレコードがコンテキストに蓄積されます。
  • 推論オーバーヘッドと手動統合。 各ツール呼び出しには完全なモデル推論パスが必要です。結果を受け取った後、Claudeはデータを「目視」して関連情報を抽出し、要素がどのように適合するかを推論し、次に何をするかを決定する必要があります — これらすべてを自然言語処理で行います。5つのツールワークフローは、5回の推論パスに加えて、Claudeが各結果を解析し、値を比較し、結論を統合することを意味します。

ワークド例:第3四半期の旅行予算コンプライアンス

Anthropicは、「どのチームメンバーが第3四半期の旅行予算を超えたか?」というタスクを3つのツールで使用しています:

  • get_team_members(department) — IDとレベルを持つチームメンバーリストを返す
  • get_expenses(user_id, quarter) — ユーザーの経費明細項目を返す
  • get_budget_by_level(level) — 従業員レベルの予算限度を返す

従来のアプローチ: チームメンバーを取得(20人);各人について第3四半期の経費を取得(20回のツール呼び出し、それぞれがフライト、ホテル、食事、領収書をカバーする50〜100の明細項目を返す);従業員レベルごとの予算限度を取得。これらすべてがClaudeのコンテキストに入ります — 2,000以上の経費明細項目(50KB以上) — そしてClaudeは各人の経費を手動で合計し、予算を調べ、経費を予算限度と比較する必要があり、モデルへの往復がさらに増えます。

Programmatic Tool Callingを使用する場合: Claudeはワークフロー全体をオーケストレーションするPythonスクリプトを作成します。スクリプトはCode Executionツール(サンドボックス環境)で実行され、ツールからの結果が必要なときに一時停止します。APIを介してツール結果を返すと、それらはモデルによって消費されるのではなく、スクリプトによって処理されます。スクリプトは実行を続け、Claudeは最終出力のみを表示します — 予算を超えた2〜3人です。Anthropicは、これにより消費量が200KBの生の経費データからわずか1KBの結果に削減されると報告しています。

測定された効率の向上

  • トークンの節約: 複雑なリサーチタスクで、平均使用量が43,588トークンから27,297トークンに減少し、37%の削減となりました。
  • レイテンシーの削減: 各APIラウンドトリップにはモデル推論(数百ミリ秒から数秒)が必要です。単一のコードブロックで20以上のツール呼び出しをオーケストレーションすると、19以上の推論パスが不要になります。APIがモデルに戻らずにツール実行を処理するためです。
  • 精度の向上: 内部知識検索が**25.6%から28.5%に改善;GIAベンチマークが46.5%から51.2%**に改善。

Programmatic Tool Callingの仕組み

  1. ツールをコードから呼び出し可能としてマークします。 ツールにcode_executionを追加し、allowed_callersを設定して、ツールをプログラム実行にオプトインします。APIはこれらのツール定義を、Claudeが呼び出せるPython関数に変換します。
  2. Claudeがオーケストレーションコードを作成します。 Claudeはツールを一度に1つずつ要求する代わりに、Pythonコードを生成します。
  3. ツールはClaudeのコンテキストに影響を与えずに実行されます。 コードがget_expenses()などのツールを呼び出すと、callerフィールドを持つツールリクエストを受け取ります。結果を提供すると、それはClaudeのコンテキストではなくCode Execution環境で処理されます。この要求応答サイクルは、コード内の各ツール呼び出しで繰り返されます。
  4. 最終出力のみがコンテキストに入ります。 コードの実行が終了すると、コードの結果のみがClaudeに返されます — 途中で処理された2,000以上の経費明細項目は返されません。

Programmatic Tool Callingが効果を発揮する場合

最も効果的な場合:

  • 集計または要約のみが必要な大規模データセットを処理する場合
  • 3つ以上の依存するツール呼び出しを伴うマルチステップワークフローを実行する場合
  • Claudeが表示する前にツール結果をフィルタリング、ソート、または変換する場合
  • 中間データがClaudeの推論に影響を与えるべきではないタスクを処理する場合
  • 多くの項目にわたって並列操作を実行する場合(たとえば、50のエンドポイントをチェックする場合)

あまり効果的でない場合:

  • 単純な単一ツールの呼び出しを行う場合
  • Claudeがすべての中間結果を表示して推論する必要があるタスクに取り組む場合
  • 小さな応答で迅速なルックアップを実行する場合

Tool Use Examples: スキーマが表現できない規約を教える

Tool Use Examplesは、特定のツールを効果的に使用する方法を示すための普遍的な標準を提供します。ツール定義にサンプルツール呼び出しを直接提供できるため、Claudeはスキーマだけに依存するのではなく、具体的な使用パターンを学習します。

JSONスキーマが残す曖昧さ

AnthropicはサポートチケットAPIを使用して説明しています。スキーマは有効なものを定義しますが、重要な質問には答えていません:

  • 形式の曖昧さ: due_dateは"2024-11-06"、"Nov 6, 2024"、または"2024-11-06T00:00:00Z"のどれを使用すべきですか?
  • IDの規約: reporter.idはUUID、"USR-12345"、または単に"12345"ですか?
  • ネスト構造の使用: Claudeはいつreporter.contactを入力すべきですか?
  • パラメータの相関: escalation.levelとescalation.sla_hoursは優先度とどのように関連していますか?

これらの曖昧さは、不正なツール呼び出しや一貫性のないパラメータ使用につながる可能性があります。

Claudeが例から学ぶこと

サポートチケットAPIの3つのサンプル呼び出しから、AnthropicはClaudeが以下を学習すると述べています:

  • 形式の規約: 日付はYYYY-MM-DDを使用し、ユーザーIDはUSR-XXXXXに従い、ラベルはkebab-caseを使用します
  • ネスト構造のパターン: ネストされたcontactオブジェクトを持つreporterオブジェクトの構築方法
  • オプションパラメータの相関: 重大なバグには完全な連絡先情報と緊急のSLAを備えたエスカレーションがあります;機能リクエストには連絡先やエスカレーションのないレポーターがあります;内部タスクにはタイトルのみがあります

Anthropicの内部テストでは、ツール使用例により、複雑なパラメータ処理の精度が**72%から90%**に向上しました。

Tool Use Examplesが効果を発揮する場合

Anthropicは、例がツール定義にトークンを追加するため、精度の向上が追加コストを上回る場合に最も価値があると述べています。

最も効果的な場合:

  • 有効なJSONが正しい使用法を意味しない複雑なネスト構造
  • 包含パターンが重要となる多くのオプションパラメータを持つツール
  • スキーマにキャプチャされていないドメイン固有の規約を持つAPI
  • 例がどちらを使用するかを明確にする類似ツール(例:create_ticketとcreate_incident)

あまり効果的でない場合:

  • 使用法が明らかな単純な単一パラメータツール
  • Claudeがすでに理解しているURLや電子メールなどの標準形式
  • JSONスキーマの制約でより適切に処理される検証の懸念事項

3つの機能を組み合わせるためのベストプラクティス

Anthropicは、3つの機能をすべて一度に採用するのではなく、最大のボトルネックから始めることを推奨しています:

  • ツール定義によるコンテキストの肥大化 → Tool Search Tool
  • コンテキストを汚染する大規模な中間結果 → Programmatic Tool Calling
  • パラメータエラーと不正な呼び出し → Tool Use Examples

これらの機能は補完的です:Tool Search Toolは正しいツールが確実に見つかるようにし、Programmatic Tool Callingは効率的な実行を確実にし、Tool Use Examplesは正しい呼び出しを確実にします。

より良い発見のためのTool Search Toolの設定

ツール検索は名前と説明に対して一致するため、明確で説明的な定義により発見精度が向上します。Anthropicは、Claudeが利用可能なものを認知できるようにシステムプロンプトガイダンスを追加し、最も使用頻度の高い3〜5つのツールを常にロードしたままにして、残りを遅延ロードすることを推奨しています — 一般的な操作のための即時アクセスと、その他すべてのオンデマンド発見のバランスを取ります。

正しい実行のためのProgrammatic Tool Callingの設定

Claudeはツール出力を解析するコードを作成するため、正しい解析ロジックを作成できるように、戻り値の形式を明確に文書化する必要があります。プログラム的なオーケストレーションから最も恩恵を受けるツールは、並列実行できるもの(独立した操作)と、再試行しても安全な操作(冪等)です。

パラメータ精度のためのTool Use Examplesの設定

Anthropicの例作成に関するガイダンス:

  • 現実的なデータを使用する(実際の都市名、もっともらしい価格、"string"や"value"ではない)
  • 最小、部分、完全な仕様パターンで多様性を示す
  • 簡潔に保つ:ツールごとに1〜5個の例
  • 曖昧さに焦点を当てる — スキーマから正しい使用法が明らかでない場合にのみ例を追加する

可用性と開始方法

3つの機能はベータ版で利用可能です。有効にするには、ベータヘッダーを追加し、必要なツールを含めます。Anthropicは各機能のドキュメントとクックブックノートブックを参照しています:

  • Tool Search Tool — 埋め込みを使用したツール検索に関するドキュメントとクックブックノートブック
  • Programmatic Tool Calling — PTCに関するドキュメントとクックブックノートブック
  • Tool Use Examples — ツール使用の実装に関するドキュメント

Anthropicはこれらの機能を、ツール使用を「単純な関数呼び出しからインテリジェントなオーケストレーションへ」移行するものとして位置付けており、エージェントが数十のツールと大規模なデータセットに及ぶより複雑なワークフローに取り組むにつれて、動的な発見、効率的な実行、および信頼性の高い呼び出しが基礎となると主張しています。

Sources