| 実行可能な並行ツール | 組み込み。結果の順序は一定で、ツールごとにタイムアウトを設定できます |
| ランタイム検証 | parse、safeParse、またはバリデーター関数で入力、出力、イベント、エージェント最終結果のスキーマを検証 |
| 人による承認 | ツール単位または呼び出し単位で承認し、再開時には正確な呼び出しIDで承認または拒否 |
| 人が介在するツール | onToolCalledで一時停止し、onResponseReceivedで変換 |
| 手動ツール | execute: falseを指定し、toolOutputsを外部から渡す |
| 進捗を通知するツール | 非同期ジェネレーターツールとtool.preliminary_resultイベント |
| ツールエラーからの復旧 | 実行を失敗させるか、構造化されたツールエラーをモデルに返す |
| ストリーミング | モデル差分に加え、テキスト、推論、アイテム、ツール、全イベントを再生できるコンシューマー |
| 停止制御 | ステップ数、時間、トークン数、コスト、ツール呼び出し、終了理由、カスタム述語 |
| 動的ターン | モデル、指示、サンプリング値、ツールセット、コンテキストの変更、nextTurnParamsを動的に指定 |
| 永続的な継続 | シリアライズ可能な実行結果、またはアプリ側で状態を読み書きするstateアクセサー |
| 可観測性 | 正規化された使用量とコスト、警告、終了理由、ステップ結果、ライフサイクルイベント、ローカル開発ツール |