GPT-6 Astra 中途引導機制說明:在代理運作中即時更新
了解 GPT-6 Astra 在 WebSocket 上的中途轉向:已接受、待處理、失敗與已轉向事件、工具等待、提交點、復原機制及使用者體驗設計。
| Source: Elser AI

長時間的代理執行會造成使用者體驗問題:使用者發現錯誤假設,卻必須等待執行完成才能修正。GPT-6 Astra 的中途轉向功能讓客戶端能在回應進行中發送新的使用者輸入。伺服器會從當前回應轉換到一個納入更新內容的後續回應。
這不是普通的聊天延續,也不是透過新請求來取消。這是一個具備確認機制、提交點與復原規則的 WebSocket 協定。
需求與限制
OpenAI 文件說明 Responses API WebSocket 模式的引導功能。用戶端會傳送一個 response.steer 事件,其中包含:
type: "response.steer";previous_response_id,用於識別目前作用中的回應;input,包含使用者角色的訊息。
輸入可能包含文字、圖片或檔案內容。請勿新增未記載的 stream_id。導向(Steering)目前僅適用於受支援的標準單一代理模式。綁定對話的回應與自動壓縮不支援此功能,因此在架構設計期間請在這些能力之間做出選擇,而非在生產環境中才發現衝突。
{
"headers": {
"rows": "列數",
"videourl": "影片網址"
}
}
{ "type": "response.steer", "previous_response_id": "resp_active", "input": [{ "role": "使用者", "content": "使用歐盟政策版本,而非美國版本。" }] }
## 了解生命週期
.steer.accepted 表示伺服器已接受轉向輸入的責任。但這並非最終的提交點。後續的 response.created 事件才是提交點:請持續保存其回應 ID,並將轉向輸入與該後續事件相關聯。
主動回應隨後可能以不完整狀態結束,並帶有 `incomplete_details.reason: "steered"`。這是預期的控制流程,而非應用程式失敗。後續者會繼續處理更新。
其他活動也很重要:
.steer.pending:更新已排入佇列,因為目前回應正在等待客戶端擁有的工作;
.steer.failed`: 伺服器無法套用更新;
- 斷線前無確認:結果未知。
建立一個小型狀態機,而不是將這些視為不相關的通知來處理。
## 工具運行時進行轉向
若回應正在等待客戶端工具輸出或核准,則導向可保持待處理狀態。伺服器無法安全地憑空產生缺失的結果。請使用適當的存根與保留的結果完成所需協定,且切勿僅因發生導向而重新執行工具。
範例:當核准提示開啟時,使用者導向「不要寄送電子郵件」。拒絕核准並將導向更新向前傳遞。如果郵件工具已執行且確認遺失,請先調節郵件系統。導向無法撤銷副作用。
## 客戶端狀態機
一個強大的客戶端會追蹤:
1. 主動回應 ID;
2. 轉向訊息 ID 與本地狀態;
3. 是否 `accepted` 已送達;
4. 後續的 `response.created` 是否執行了它;
5. 待處理的工具呼叫與核准;
6. 原始回應的終端狀態;
7. 最後的持久事件游標或應用程式檢查點。
在使用者介面中停用重複提交,同時仍允許使用者根據您自己的規則編輯或取代佇列中的更新。顯示「正在套用您的更新」,而不是假裝第一個回應立即停止。
## 斷線恢復
三種情況需要不同的處理方式:
- **未接受的事件:** 結果不確定。請重新連線,檢查可用的回應狀態,並避免盲目重新發送可能導致重複執行的指令。
- **已接受,未觀察到後續事件:** 伺服器擁有輸入,但用戶端缺少提交事件。在再次提交前,請先恢復回應鏈。
- **已建立後續者:** 保留該 ID 並從其繼續。
即使線路架構未將客戶端生成的ID用作協定欄位,仍應在資料庫中為其提供轉向輸入。這有助於去重複UI操作並稽核使用者所做的變更。
## 好與壞的使用案例
在研究中,調整方向非常適合用來改變範圍、修正來源、縮小搜尋範圍、加入遺漏的限制條件,或是在研究仍在進行時變更期望的輸出。
它不能替代核准、交易回滾、權限檢查或確定性取消。請勿使用引導來授權付款,或假設已正在進行的外部動作已停止。
## 測試尷尬的轉場
在文字生成過程中模擬轉向、託管工具執行、客戶端工具等待、審核等待、完成前立即處理,以及網路中斷期間。驗證工具未重複、接受的輸入未無聲遺失,且使用者介面將輸出分配至正確的回應。
追蹤轉向接受延遲、待處理持續時間、後續建立延遲、原始回應狀態、重複工具動作及使用者放棄情況。這些指標能揭示轉向是否確實改善了體驗。
## 以擁有權為核心設計用戶體驗
介面應區分三個時刻。「正在傳送更新」表示客戶端已傳送但尚未收到確認。「更新已接受」表示伺服器已接收。「繼續進行更新」表示已產生後續回應。這些標籤能讓罕見的網路模糊情況易於理解,無需暴露協定術語。
保留原始回應已產生的可見輸出,但若更正使其無效,則將其標記為已被取代。刪除它可能會讓根據所見內容採取行動的使用者感到困惑;而將其呈現為最終版本則可能更糟。對於需要稽核的工作,請保留兩條分支,並顯示哪一個後續版本成為權威來源。
對快速編輯進行深思熟慮的去抖動。兩條操控訊息——先「使用法國」接著「使用德國」——可能都會依序被接受。如果你的產品只想要最新的指令,請實作用戶端政策並加以溝通;不要假設協定會默默合併更新。
為提升無障礙體驗,請在狀態變更時進行提示,避免重複朗讀完整生成的答案。讓鍵盤使用者在生成過程中仍能操作引導輸入,並保留清晰的停止控制。良好的引導不僅是交通操作,更是互動設計的一環。
## 常見問題
### 轉向與發送另一條訊息相同嗎?
不。它會更新一個活躍的 WebSocket 回應,並建立一個後續流程。
### `accepted` 是否表示更新已完全套用?
否。請將後續的 `response.created` 視為提交點。
### 轉向能否取消外部工具動作?
並非完全可靠。工具取消與副作用協調是各自獨立的應用程式責任。
### 我可以使用自動壓縮搭配轉向嗎?
官方轉向指南指出,轉向回應不支援自動壓縮。請設計一套明確的情境策略。
## 結論
中途轉向讓長篇 GPT-6 Astra 工作流程反應靈敏,但前提是客戶端必須遵守其協定。追蹤已接受、待處理、失敗、未完成及後續事件;保留工具結果;調和不確定的副作用;並呈現真實的 UI 狀態。轉向改變代理的方向——但不會抹除分散式系統的現實。






























































































