Skip to main content
1回のエージェントターンで複数の独立したローカルツールを安全に呼び出せる場合に、このレシピを使います。結果の順序を保ちながらランタイムで並行実行できます。

使用する場面

次の場合はtoolExecution.toolConcurrencyを使います。
  • 1回のターンでモデルが複数のローカルツール呼び出しを出力できる
  • 各ツールが互いの出力に依存しない
  • 直列実行ではワーカーの時間が無駄になる
  • 保存されるツール結果メッセージを元の呼び出し順に保ちたい
共有状態を変更するツールがある場合や、後続ツールが先行ツールの結果に依存する場合は、同時実行数を増やさないでください。

例

同梱の実装は次を参照してください。 packages/sdk/agent-sdk-ts/examples/parallel-tool-agent.ts.

ランタイムが保証すること

  • ローカルツールは設定されたtoolConcurrencyの上限まで並行実行できる
  • 各ツールについてtool.startedとtool.completedイベントが引き続き出力される
  • 保存されるツール結果メッセージは元の呼び出し順を保つ
  • ツール処理の完了後にチェックポイントが保存される
  • timeoutMsによるタイムアウトが各ツールに適用される

運用上のガイダンス

  • 2や3などの小さい値から始める
  • ローカルツールは冪等にし、副作用を抑える
  • 依存先が停止しても全ワーカーを占有しないようtimeoutMsを設定する
  • 実行の再開やリモート調整が本当に必要な場合にのみstoreを追加する

検証

この方法を有効にした後:
  • 複数ツールを使うターンを対象としたエージェントループのテストを実行する
  • ツール結果のメッセージが引き続き正しい順序で生成されることを確認する
  • 運用ログに想定どおりtool.startedおよびtool.completedイベントが記録されることを確認する
最終更新日 2026年10月2日