GPT-6 Astra プログラムによるツール呼び出し:いつ、なぜ使用するか
GPT-6 Astraが生成プログラム内でツールを呼び出すタイミング、allowed_callersとoutput_schemaの動作、およびコスト、安全性、承認を制御する方法について学びます。
| Source: Elser AI

従来の関数呼び出しでは、モデルを一時停止し、ツールリクエストをアプリケーションに返し、結果を待ってから再開します。このループは明確で制御可能ですが、多数の依存呼び出しやローカルフィルタリング、集計を必要とするタスクでは非効率になります。GPT-6 Astraのプログラム的ツール呼び出し(PTC)により、モデルは1つの実行フロー内で適格なツールを呼び出すプログラムを作成できます。
変更内容
ホストされている programmatic_tool_calling ツールを有効にし、該当するツールに allowed_callers をマークします。
const tools = [ { type: "programmatic_tool_calling" }, { type: "function", name: "get_sales", description: "1つの地域と月の売上記録を返します。" allowed_callers: ["プログラムによる"], strict: true, parameters: { type: "object", properties: { region: { type: "string" }, month: { type: "string" } }, 必須: ["地域", "月"], additionalProperties: false } } ];
`allowed_callers` が省略されるか、`["直接"]、このツールは直接呼び出し可能です。["プログラムによる"]` は生成コードに制限しますが、`["直接", "プログラムによる"]「両方を許可します。これは実行ポリシーの制御であるため、プロンプトの文言ではなく権限のようにレビューしてください。」
PTCは、関数やカスタムツール、MCP、パッチ適用、ローカルまたはホスト型シェル、コードインタプリタを含む文書化されたツールクラスをサポートしています。サポートは、すべてのツールを公開すべきという意味ではありません。
## PTCがより適したパターンである場合
モデルが以下のことを行う必要がある場合に使用します:
- 多数の独立したレコードを取得し、それらを集約する。
- 以前の結果に基づいて1つのツールを呼び出す。
- 大きな結果をフィルタリングしてから推論コンテキストに返す;
- 複数のソース間で構造化された出力を比較する。
- 制限付きデータ処理ループを実行する。
例えば、四半期分析では、12回の地域月別呼び出しの後に合計と異常検出が必要になる場合があります。プログラムが呼び出しを実行し、12回のモデル往復を強制する代わりに、コンパクトなサマリーを返すことができます。
1~2つの簡単な操作、リスクの高い書き込み、各ステップの間に明示的なアプリケーションの判断が必要なワークフロー、またはグラフが決定論的でなければならないタスクには、直接関数呼び出しを優先してください。PTCは自動的に安くなるわけではありません。適切に制限されていないプログラムは、呼び出しが多くなりすぎる可能性があります。
## 構造化出力がプログラムを改善する
予測可能な関数には、`output_schema` を定義してください。実際の `function_call_output.output` は JSON 文字列のままですが、スキーマによって生成されたコードに信頼性のある形状が与えられます。安定した型により、防御的なパースや偶発的な仮定が減少します。
ID、型付きメトリクス、明示的なエラーオブジェクトなどのコンパクトなデータを返します。コードが数値を必要とする箇所では散文を避けてください。ページネーション、最大行数、切り捨てを結果に可視化し、プログラムが部分的なデータセットを全体の母集団と誤認しないようにします。
## ツール検索と遅延ローディング
ツール検索は最上位の機能として残ります。公式ガイドは、実行中のプログラムはツール検索を呼び出せないため、遅延ツールはプログラム開始前に読み込む必要があると警告しています。計画の発見を先に、実行を後に行います。カタログが動的な場合は、モデルに必要な小さなサブセットを読み込ませてから、PTCを開始します。
## 安全コントロール
すべてのプログラムを、ウォールタイム、呼び出し回数、出力バイト数、ネットワーク宛先、およびコストで制限します。ツールを最小権限に制限し、生成されたコードではなく実行環境にシークレットを保持します。
MCPの承認はプログラムを一時停止できます。意味のある承認プレビューを表示しながら、プログラムの状態を保持します。書き込みには、冪等性キーとサーバー側の認証を使用します。生成されたコードは、信頼できる指示からモデルが作成した場合でも、信頼されません。
プログラムのハッシュまたは編集済みソース、ツールシーケンス、サニタイズされた引数、承認、結果、トークン使用量、および期間を記録します。認証情報や生の機密データを保存しないでください。
## プロダクション意思決定フレームワーク
4つの質問をしてください:
1. 組み込みプログラムを正当化するのに十分な呼び出しや依存関係はありますか?
2. すべてのツールを安全に制限し、型付けすることは可能ですか?
3. アプリケーションは中間制御を委任することに抵抗がないですか?
4. 承認後や部分的な失敗後にワークフローを再開できますか?
1つでも「いいえ」がある場合は、オーケストレーションをアプリケーションコードに保持してください。固定パイプラインでは、自分が管理する決定論的なコードが適切な選択となることがよくあります。
## コストと正確性の実験
従来のループと同一タスクを用いてPTCをベンチマークする。小さな1回呼び出しケース、依存関係のある5回呼び出しケース、大規模集約ケースを含める。総トークン数、ツール呼び出し回数、実経過時間、失敗率、計算結果の正確性を測定する。ページ分割されたレコードを黙って落とす高速な回答は改善とはみなさない。
部分的な障害を強制する:1つのリージョンがタイムアウトし、1つの結果が出力スキーマに違反し、1つのMCP操作が承認を要求し、1つのデータセットが空である。生成されたプログラムは、どの入力が成功したかを保持し、不在をゼロとして扱わず、モデルが制限を説明するのに十分な詳細を返す必要がある。
インフラの制限値より低いハードリミットを設定し、プログラムが予測可能な形で失敗するようにします。明確な `CALL_BUDGET_EXCEEDED` 結果は、コンテナが強制終了されるよりも復旧が容易です。分析ワークロードでは、決定論的なコードで出力のサンプルを独立して再計算してください。金融やコンプライアンスに関わる結果については、生成された集計を盲目的に信頼するのではなく、検証済みの計算を優先してください。
この実験では、読み取り重視の探索にはPTC、最終的な書き込みや規制された計算にはアプリケーション所有のコードという、混合設計がよく見られます。ハイブリッドオーケストレーションは、最新機能をどこでも使わないことの失敗ではなく、強みです。
## よくある質問
### PTCはマルチエージェントと同じですか?
いいえ。PTCはツール呼び出しプログラムを実行します。マルチエージェントは、それぞれ独自のコンテキストを持つサブエージェントに制限された作業を委任します。
### PTCは承認が必要なMCPツールを呼び出せますか?
はい。承認によってプログラムを一時停止できます。アプリケーションは状態を保持し、安全に継続する必要があります。
### PTCは関数スキーマを削除しますか?
いいえ。生成されたコードがそれらを消費するため、強力な入出力契約はさらに重要になります。
### すべてのツールは両方の発信者モードを許可すべきでしょうか?
いいえ。ワークフローに必要なモードのみを許可してください。特に機密性の高いツールについては。
## 結論
プログラムによるツール呼び出しは、ツールのオーケストレーション自体がボトルネックとなる場合に有用です。すなわち、多数の呼び出し、依存関係、フィルタリング、集約が必要なケースです。これを選択的に使用し、実行前に遅延読み込みされたツールをロードし、構造化された出力を定義し、厳格なリソースと権限の制限を適用してください。短いワークフローやリスクの高いワークフローでは、従来のアプリケーション制御ループの方が監査が容易です。






























































































