メインコンテンツへスキップ
実行または続行にイベントハンドラーを渡すと、実行の開始時、各モデルターンの開始時と終了時、各ツールの実行時、実行の一時停止時、実行の終了時にイベントを受け取れます。インターフェースの更新、監査記録の書き込み、既存のテレメトリーへの送信に使ってください。

ハンドラーの置き場所と受け取るもの

ランタイムが出力するイベント

以下では詳細のキーを snake_case で示します。TypeScript では camelCase の形を使います。 Rust 0.2 は一部のイベントに独自の名前を使います。 停止条件で終わった実行は、TypeScript では run.stopped を送りますが、Python、Go、C#、PHP、Ruby、Java では終了イベントを送りません。代わりに実行のステータスを読んでください。TypeScript では、step.completed はステップがチェックポイントに記録された後に送られるため、永続化やテレメトリーのコンシューマーはこれを安定した区切りとして扱えます。

ストリームのイベント

ストリーミングでは、同じライフサイクルイベントがモデルの response.* イベントと並んで届きます。TypeScript、Python、Go、C#、Java ではハンドラーがそれらを受け取ります。PHP と Ruby では、fullStream() / full_stream にも現れます。Rust にはストリーミングがありません。ストリームのコンシューマーについてはストリーミングを参照してください。

ハンドラーを速く保つ

ランタイムはハンドラーを待ってから続行するため、すぐに戻り、時間のかかるストレージやネットワークの処理はキューに移してください。イベントがプロセスの外に出る前に、機密性の高いツールの入力と出力は伏せてください。

製品のインターフェースに使うイベントを選ぶ

ライブの回答テキストには response.output_text.delta を、ツール呼び出しのカードと進捗の表示にはツールのイベントを、承認や入力のコントロールの表示には run.waiting_for_human(Rust では run.paused)を、読み込み状態の終了には実行の終了イベントを使います。開発中に実行全体をローカルに記録するには、DevTools を使ってください。
最終更新日 2026年11月5日