ハンドラーの置き場所と受け取るもの
ランタイムが出力するイベント
以下では詳細のキーを 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 を使ってください。