GPT-6 Astra ミッドターンステアリングの解説:エージェントの動作中に更新する方法
GPT-6 Astra の WebSocket 経由のミッドターンステアリングについて:受け入れ、保留中、失敗、ステアリングされたイベント、ツール待機、コミットポイント、リカバリ、UXデザインを理解する。

長時間のエージェント実行はUX上の問題を引き起こします。ユーザーが誤った前提に気づいても、完了を待ってから修正しなければなりません。GPT-6 Astraのミッドターンステアリングにより、クライアントは応答がアクティブな間に新しいユーザー入力を送信できます。サーバーは現在の応答から、更新を組み込んだ後続の応答に移行します。
これは通常のチャット継続でも、新しいリクエストによるキャンセルでもありません。確認応答、コミットポイント、リカバリルールを備えたWebSocketプロトコルです。
要件と制限
OpenAIは、Responses APIのWebSocketモードにおけるステアリングに関するドキュメントを作成しています。クライアントは、以下を含むresponse.steerイベントを送信します。
type: "response.steer";previous_response_id、アクティブなレスポンスを識別するもの。input、ユーザーロールのメッセージを含みます。
入力にはテキスト、画像、またはファイルの内容が含まれる場合があります。未定義の stream_id を追加しないでください。ステアリングは現在、サポートされている標準のシングルエージェントモードに適用されます。会話に紐づく応答や自動圧縮はこれをサポートしていないため、アーキテクチャ設計時にこれらの機能のどちらかを選択し、本番環境で競合を発見しないようにしてください。
{
"headers": {
"row1": "列1",
"row2": "列2",
"row3": "列3"
},
"rows": [
{
"row1": "データ1",
"row2": "データ2",
"row3": "データ3"
}
],
"videourl": "https://example.com/video.mp4"
}
{ "type": "response.steer", "previous_response_id": "resp_active", "input": [{ "role": "ユーザー", "content": "EUポリシーバージョンを使用し、USバージョンは使用しないでください。" }] }
## ライフサイクルを理解する
.steer.acceptedは、サーバーがステアリング入力の責任を受け入れたことを意味します。まだ最終的なコミットポイントではありません。後続のresponse.createdイベントがコミットです。そのレスポンスIDを保持し、ステアリング入力をその後続に関連付けてください。
アクティブレスポンスは、`incomplete_details.reason: "steered"` で不完全に終了する場合があります。これは期待される制御フローであり、アプリケーションの障害ではありません。後続の処理が更新を続行します。
他のイベントも重要です:
- `response.steer.pending`: 現在の応答がクライアント所有の作業を待機しているため、更新がキューに入れられています。
.steer.failed: サーバーが更新を適用できませんでした。
- 切断前の確認なし:結果は不明です。
これらの通知を無関係なものとして扱うのではなく、小さなステートマシンを構築してください。
## ツール動作中のステアリング
応答がクライアントツールの出力や承認を待っている場合、ステアは保留状態のままにできます。サーバーは不足している結果を安全に生成することはできません。適切なスタブと保存された結果を使用して必要なプロトコルを完了し、ステアリングが発生したからといってツールを再実行しないでください。
例:承認プロンプトが開いている間に、ユーザーが「メールを送信しない」と指示する。承認を拒否し、その指示の更新を反映させる。メールツールが既に実行され、確認応答が失われた場合は、まずメールシステムを調整する。指示は副作用を取り消すことはできない。
## クライアント状態マシン
堅牢なクライアントが追跡するもの:
1. アクティブレスポンスID;
2. ステアリングメッセージIDとローカルステータス;
3. `accepted` が到着したかどうか。
4. 後継の `response.created` がそれを実行したかどうか。
5. 保留中のツール呼び出しと承認;
6. 元の応答の終了ステータス;
7. 最後の永続イベントカーソル、またはアプリケーションチェックポイント。
UI上で重複送信を無効にしつつ、ユーザーがキューに入った更新を編集または上書きできるように、独自のルールに従って設定します。最初の応答が即座に停止したかのように見せかけるのではなく、「更新を適用中」と表示します。
## 切断からの復旧
3つのケースは異なる処理を必要とします:
- **イベント未受諾:** 結果は不確定です。再接続し、利用可能な応答状態を確認し、二重に適用される可能性のあるコマンドを盲目的に再送信しないでください。
- **受理済み、後続は確認されていません:** サーバーは入力を所有していますが、クライアントにコミットイベントがありません。再送信する前にレスポンスチェーンを復元してください。
- **後継者作成:** そのIDを保持し、そこから続行します。
データベース内のクライアント生成IDにステアリング入力を与えてください。たとえワイヤースキーマがそれらをプロトコルフィールドとして使用していなくてもです。これにより、UIアクションの重複排除と、ユーザーが変更した内容の監査に役立ちます。
## 良いユースケースと悪いユースケース
ステアリングは、調査が進行中にスコープの変更、ソースの修正、検索の絞り込み、不足している制約の追加、または希望する出力の変更に最適です。
承認、トランザクションのロールバック、権限チェック、または決定的なキャンセルの代わりにはなりません。ステアリングを使用して支払いを承認したり、すでに実行中の外部アクションが停止したと見なしたりしないでください。
## ぎこちないトランジションをテストする
テキスト生成中、ホストツール実行中、クライアントツール待機中、承認待機中、完了直前、およびネットワーク損失中のステアリングをシミュレートします。ツールが重複していないこと、受け入れられた入力が黙って失われないこと、UIが出力を正しい応答に割り当てていることを確認します。
ステアリングの受理レイテンシ、保留期間、後続作成レイテンシ、オリジナル応答ステータス、重複したツールアクション、ユーザー離脱を追跡する。これらの指標は、ステアリングが実際に体験を向上させるかどうかを明らかにする。
## 所有権を中心にユーザー体験を設計する
インターフェースは3つの瞬間を区別すべきです。「更新送信中」はクライアントが送信したが確認応答がない状態を意味します。「更新受諾」はサーバーがそれを保持している状態を意味します。「更新継続中」は後続の応答が作成された状態を意味します。これらのラベルにより、プロトコル用語を露出させることなく、稀なネットワークの曖昧さを理解可能にします。
元の応答がすでに生成した表示出力は保持しつつ、その修正が出力を無効化する場合は、置き換えられたものとしてマークしてください。表示された内容に基づいて行動したユーザーを混乱させる可能性があるため、削除は避けるべきです。最終版として提示するのはさらに悪い結果を招きかねません。監査が重要な作業では、両方の系統を保持し、どの後継版が正式版となったかを示してください。
高速な編集を慎重にデバウンスしてください。2つのステアメッセージ—「フランスを使用」とすぐに「ドイツを使用」—が順番に両方受け入れられる場合があります。製品が最新の指示のみを必要とする場合は、クライアントポリシーを実装してそれを通知してください。プロトコルが更新を黙って統合するとは想定しないでください。
アクセシビリティのため、生成された回答全体を繰り返し読み上げることなく状態の変化を通知します。生成が続いている間もキーボードユーザーがステアリング入力にアクセスできるようにし、明確な停止制御を維持します。優れたステアリングは、トランスポートのハンドリングと同様にインタラクションデザインの一部です。
## よくある質問
### ステアリングは別のメッセージを送信するのと同じですか?
いいえ。アクティブなWebSocketレスポンスを更新し、後続のフローを作成します。
### `accepted` はアップデートが完全に適用されたことを意味しますか?
いいえ。後続の `response.created` をコミットポイントとして扱ってください。
### ステアリングで外部ツールのアクションをキャンセルできますか?
確実ではありません。ツールのキャンセルと副作用の調整は、別々のアプリケーションの責任です。
### ステアリングで自動圧縮を使用できますか?
公式のステアリングガイドでは、ステアリングされた応答に対して自動圧縮はサポートされていないとされています。明示的なコンテキスト戦略を設計してください。
## 結論
ターン途中のステアリングにより、長いGPT-6 Astraの処理が応答性良く感じられますが、それはクライアントがそのプロトコルを尊重する場合に限ります。受理済み、保留中、失敗、不完全、後続のイベントを追跡し、ツールの結果を保持し、不確かな副作用を調整し、誠実なUI状態を公開します。ステアリングはエージェントの方向性を変えるものであり、分散システムの現実を消し去るものではありません。






























































































