メインコンテンツへスキップ
エージェントがアプリケーションのデータを読み取る、内部サービスを呼び出す、または何らかの操作を行う必要がある場合は、ツールを定義します。モデルはツールを ID で呼び出します。SDK は引数を確認し、コードをアプリケーションのプロセス内で実行して、結果を次のターンでモデルに返します。

ツールを定義する

ツールのフィールド

スキーマには、各言語のネイティブなバリデーターを使えます。TypeScript では関数、または parse() か safeParse() を持つオブジェクト、Python では callable、Pydantic モデル、または parse か safe_parse を持つオブジェクト、その他の言語では値を返すか例外を投げる関数または callable です。

タイムアウト時の動作

現在のツールリストにないツール ID を呼び出すと、実行が失敗します(Go では unknown tool、C#、PHP、Ruby、Java では Unknown tool '<name>'、Rust では AgentError としての Unknown tool: <name>)。TypeScript で return-to-model を設定している場合は、不明なツールや読み取れない引数にも、ツールエラーと同じ方法で応答します。

承認を必須にする

ツールの承認フラグを true にするか、呼び出しごとに判断する関数を渡します。エージェント単位の承認関数がある言語では、それがすべてのツールに適用され、両方より優先されます。承認が必要な呼び出しは、ステータス waiting_for_human で実行を一時停止します。状態と承認の方法で、呼び出し ID を指定して承認または拒否してください。

呼び出しを人や別のシステムに渡す

手動ツールには実行関数がありません。処理はアプリケーション、キュー、または別のサービスが行います。対話型ツールは、人の判断を待って一時停止できるフックを実行します。どちらも、その呼び出し ID のツール出力を渡して続行するまで実行を一時停止します。状態と承認を参照してください。 対話型フックが値を返した場合は、それがすぐにツールの結果になります。続行した後、onResponseReceived(またはその言語の同等のもの)で、出力バリデーターが確認する前に、渡された出力を検証または変換できます。 Rust の外部ツールは実行関数を受け取りません。
1回のモデルターンに自動ツールと保留ツールが混在している場合、ランタイムは一時停止を返す前に自動ツールを実行します。

進捗を報告してコンテキストを更新する

ツールは、処理中に途中の結果を公開したり、後のターンで使うアプリケーションのコンテキストを置き換えたりできます。進捗は tool.preliminary_result イベントとして表示され(ストリーミングを参照)、イベントバリデーターを設定している場合はそれで確認されます。

ツールエラーから回復する

デフォルトでは、ツールのエラーは実行を失敗させ、再スローされます。ツールのエラー時の方針を return-to-model にすると、エラーをツールの結果({"error": "..."})としてモデルに返し、モデルが別の方法を試せるようにします。安全でない失敗や回復できない失敗には、デフォルトのままにしてください。 TypeScript では、toolExecution.maxOutputChars でモデルに見せるツール出力の量に上限を設けます。これより長い出力は、先頭と末尾を残し、その間に通知が入ります。

ツールを並行実行する

1回のモデルターンで独立した複数のツールが呼び出される場合は、同時実行数の上限を設定して同時に実行します。Go、C#、Ruby、Java は、これを設定するまでツールを1つずつ実行します。結果は、完了した順序に関係なく、モデルが呼び出した順序で追加されます。Go と C# では、並行実行した複数のツールがコンテキストを設定した場合、呼び出し順で最後のものが優先されます。
最終更新日 2026年11月5日