Engineering · アーキテクチャ

プログラマティック・ツール呼び出し — ラウンドトリップを脱してエージェントパイプラインを軽くする

プログラマティック・ツール呼び出しとは、モデルがPythonスクリプトを生成してツールを束ね、中間結果をコンテキスト外で処理してから最終結果だけを返す設計。多ツールのパイプラインで入力トークンを大幅に削減します。

要点

  • ラウンドトリップ型は、ツールを1つ呼び出すたびに結果がモデルのコンテキストに積み上がる。ツールが多いほどコストが増える構造的な問題。
  • プログラマティック型は、モデルがPythonスクリプトを生成してコンテキスト外のコンテナで複数ツールを処理し、最終結果だけをコンテキストに戻す(Anthropic Engineering Blog、2025年11月)。
  • 75ツール構成のプロジェクト管理エージェントで入力トークン約38%削減・タスク精度変化なし(Anthropic公式ドキュメント記載の計測値)。
  • 1〜2回の逐次呼び出しには向かない(コスト約8%増)。分岐・集計・並列処理が複数あるパイプラインで最も効果が出る(Anthropic公式ドキュメント計測値)。
  • Tool Search(オンデマンド発見)と組み合わせると、定義の事前ロードと実行コストの両方を削減できる。

ラウンドトリップの構造問題 — なぜコストが積み上がるのか

エージェントが複数のツールを使う処理は、従来「ラウンドトリップ型」で実現されています。モデルがツールA呼び出しを指示し、結果がコンテキストに戻り、次にツールBを呼び出し、その結果もコンテキストに追加され……という往復を繰り返す形です。

この設計の問題は、ツールが増えるほどコンテキストが肥大することです。各ターンで取得した結果がそのままコンテキストウィンドウに残るため、7ツールや15ツールを組み合わせるパイプラインでは、最終応答が得られる前にコンテキストの大部分がツール結果で埋まっています。コストと遅延はツール数に比例して増える構造です。

(B)一般論として、多段階のツール呼び出しをもつエージェントアーキテクチャはこの問題に共通して直面します。シングルターン・RAGのようにコンテキストが1回で完結する処理では表面化しませんが、計画→調査→集計→報告という流れが連鎖するワークフローほど、ラウンドトリップのコストが顕在化します。

中間処理をコンテキスト外に逃すと、モデルへの入力が格段に減る

ラウンドトリップ型Claude モデル① ツール呼び出し→ 結果 ctx へ② ツール呼び出し→ 結果 ctx へ③ ツール呼び出し→ 結果 ctx へコンテキスト(肥大)全結果が積み上がる往復 3回 → コスト増プログラマティック型Claude モデルスクリプト生成実行コンテナ(コンテキスト外)ツールAツールBツールC集約・フィルタ(コンテキスト外)最終結果コンテキスト最終結果のみトークン大幅削減
左(ラウンドトリップ型): ツールを呼ぶたびに結果がコンテキストに蓄積され、往復3回で入力トークンが積み上がる。右(プログラマティック型): Claudeが生成したスクリプトがコンテキスト外のコンテナでツールを処理し、最終結果だけをモデルへ戻す。Anthropicの75ツール構成ベンチマークで入力トークン約38%削減・タスク精度変化なし(Anthropic公式ドキュメント、2025年11月ブログ発表)。

プログラマティック型の仕組み

Anthropicエンジニアリングブログ(2025年11月)と公式ドキュメントが示す「プログラマティック・ツール呼び出し」は、この問題を設計の変更で解消します。

仕組みの核心は「スクリプトが仲介する」点にあります。モデルが各ツールを直接呼び出す代わりに、まずPythonのオーケストレーションスクリプトを生成します。そのスクリプトがコード実行コンテナの中で動き、複数のツールを呼び出し、中間結果を絞り込み・集計してから最終結果だけをモデルのコンテキストに戻します。

ポイントは、中間のツール結果がモデルのコンテキストウィンドウに入らない点です。スクリプトが途中の処理をコンテキスト外で完結させるため、モデルが受け取るのは「何を取得したか・何をしたか」の中間ログではなく、必要な最終値だけです。これが入力トークンを削減する理由です。

効くケース・逆効果なケース

Anthropic公式ドキュメントが示す計測値は、どんな処理で効果が出てどんな処理で逆効果かを明確にしています(いずれもAnthropicが公開したベンチマーク結果であり、agens の実績値ではありません)。

  • 効くケース(複数ツール・集計・並列): 75ツール構成のプロジェクト管理エージェントで入力トークン約38%削減・タスク精度変化なし。本番APIトラフィック(10〜49ツール定義)での代表的な削減幅は20〜40%。BrowseCompおよびDeepSearchQAでベンチマーク性能+11%・入力トークン24%削減。
  • 逆効果なケース(逐次・1〜2呼び出し): τ²-bench(航空・小売・通信の逐次1〜2呼び出し)ではスコア変化なし、コストが約8%増加。スクリプト生成のオーバーヘッドがシンプルな処理では帳消しになるため、1〜2回の単純な呼び出しチェーンには向かない。

判断基準は「ツール呼び出しの深さと中間処理の量」です。複数ツールを組み合わせる・中間データを絞り込む・並列で走らせるパイプラインほど恩恵が大きくなります。

agens での位置づけ

(B)一般設計の原理として、プログラマティック型はラウンドトリップ型より多ツール処理に向いています。agens は Anthropic モデルプラットフォーム上で動作するため、このアーキテクチャを活用できる環境にあります。(A)スキル・ワークフロー機能では複数ツールの組み合わせをノーコードで構成でき、パイプライン設計の際にこの設計原理が実地に活きます。詳細は /agens/skills-workflows をご覧ください。

Tool Search との組み合わせ — 発見と実行の両方を効率化する

プログラマティック型の「実行の効率化」は、ツール発見の課題(tool-scaling)と補完関係にあります。

(B)ツール発見の問題: 多数のツール定義を事前にコンテキストへ全ロードすると、何かを実行する前から数万トークンを消費します。Anthropicの例では典型的なマルチサーバー構成(GitHub・Slack・Sentry・Grafana・Splunk)で約5万5,000トークン。Tool Searchによるオンデマンド発見はこれを85%以上削減します(Anthropic公式ドキュメント)。

そしてプログラマティック型は「実行フェーズ」のコストを削減します。必要なツールを見つけた後、それをどう動かすかが次の問いです。

2つを組み合わせると、「定義のロード前」と「実行中」の両フェーズでトークンを大幅に削減できます。複雑なエージェントパイプラインの設計では、この2つをセットで考えることが効率の面で重要です。

よくある質問

ラウンドトリップ型とプログラマティック型はどう使い分けますか?
使い分けの基準は『ツール呼び出しの深さと中間処理の量』です。複数ツールを組み合わせる・中間データを絞り込む・並列処理が必要なパイプラインにはプログラマティック型が向きます。逆に、1〜2回の単純な逐次呼び出しには向かず、コストが約8%増加します(Anthropic公式ドキュメント記載のτ²-bench計測値)。
並列ツール実行はどう実現しますか?
プログラマティック型では、Claudeが生成するPythonスクリプトの中で複数のツール呼び出しを並べることで並列化できます。スクリプトがコンテキスト外のコンテナ内で動くため、中間結果を収集・集計してから最終値だけをモデルに渡せます。ラウンドトリップ型で並列化するには別途オーケストレーション層が必要ですが、プログラマティック型はスクリプト自体がその役割を担います。
Tool Search とプログラマティック・ツール呼び出しは別の機能ですか?
はい、別機能です。Tool Search は『使うツールをどう見つけるか』(定義のオンデマンドロード)を解決し、プログラマティック・ツール呼び出しは『見つけたツールをどう効率よく実行するか』(中間処理のコンテキスト外完結)を解決します。問題の性質が異なるため、両方を組み合わせると発見フェーズと実行フェーズの両方を効率化できます。
38%のトークン削減は保証されますか?
保証ではなく、Anthropicが公式ドキュメントで示した特定条件下の計測値です。75ツール構成のプロジェクト管理エージェントベンチマークでの結果(約38%削減・タスク精度変化なし)であり、実際の削減幅は処理の複雑さ・ツール数・中間データの量によって異なります。本番APIトラフィックでの代表的な削減幅は20〜40%とされています(同ドキュメント記載)。

最終更新: 2026-07