智慧體工作階段可以在其環境停止後繼續存在。self_hosted 環境使用的運算資源與檔案由你的應用程式管理。
啟動環境
應用程式可以在建立工作階段後啟動運算資源。請使用供應商的 SDK 或 API,接著使用工作階段的環境 ID 和環境金鑰讓執行器建立連線。
請參閱 OpenAI Cookbook 中的應用程式管理沙盒範例。

使用單一元件管理各工作階段的環境。儲存工作階段與供應商運算資源之間的對應關係。重複或並行的請求不得建立重複的環境。
透過 webhook 啟動運算資源
你也可以等到輸入需要環境連線時再啟動。API 會先發出帶有 required_action.type: "environment_connection" 的 agent.session.action_required 事件,再等待執行器連線。你的 webhook 處理常式會啟動環境或重新建立連線。
請參閱 OpenAI Cookbook 中的webhook 管理沙盒範例。

依照 webhook 設定說明,為 agent.session.action_required 和 agent.session.failed 註冊處理常式。將處理常式的簽章密鑰與工作階段讀取憑證,和執行器的環境金鑰分開保管。如果多個供應商的處理常式共用同一個專案,請將事件路由至負責該工作階段的處理常式。
處理常式與工作程序各有不同職責:
- 驗證並加入佇列。 驗證 webhook 簽章。僅在
data.required_action.type為environment_connection時,才將連線請求加入佇列。也要將工作階段失敗事件加入佇列。只有成功加入佇列後,才能傳回成功的 HTTP 回應。 - 檢查目前狀態。 工作程序會擷取工作階段。忽略已刪除的工作階段與已解決的動作。對於仍需要連線的自架工作階段,請使用
session.environment.id和session.environment.remote_url啟動其執行器或重新建立連線。對於仍處於失敗狀態的工作階段,請釋放其運算資源。
工作階段串流會以 agent.session.requires_action 回報相同的請求。function_call 類型的必要動作需要的是函式結果,而非啟動環境。等到回合建立事件和 agent.session.in_progress 事件傳來時,才啟動離線的執行器已經太遲。
部署處理常式後,建立自架工作階段並傳送輸入。請確保工作目錄和任何智慧體篩選條件,分別符合處理常式中的對應設定。如果執行器在期限前連線,原先提交的輸入就會繼續處理。
讓環境保持可用或停止環境
讓運算資源在回合之間持續執行,以便重複使用;或在回合結束後保留一段緩衝時間,再停止運算資源。協調關閉作業與新進工作。收到連線請求或開始執行時,請取消待執行的關閉作業。停止運算資源前,請再次檢查狀態。
不能單憑閒置事件就判斷可以安全關閉環境。連線請求解除時,閒置事件可能就會傳來,但等待中的輸入尚未開始其回合。如果應用程式無法協調關閉作業與新進工作,請讓環境持續執行。
斷線後重新連線
連線事件用於回報狀態。使用 agent.session.environment.connected 和 agent.session.environment.disconnected 觀察連線情況。設定過程也可能發出 agent.session.environment.pending 或 agent.session.environment.failed。這些事件不會請求運算資源。請使用 environment_connection 必要動作觸發啟動,並另外檢查供應商的健康狀態。
回合中途斷線可能導致工具失敗,即使該回合最終完成也是如此。請檢查工具結果與智慧體的最終回應。斷線不會自動透過 webhook 請求重新連線,也不會重新啟動遭終止的指令。後續輸入可以請求重新連線。
處理輸入時,API 最多會等待五分鐘讓環境連線。請依此等待時間設定用戶端與 Proxy 的逾時時間。若等待逾時,提交就會失敗。初始輸入可能以非同步方式失敗,使工作階段停留在 failed 狀態。
API 不保證能在程序當機後復原待處理的輸入。重試前,請先檢查請求或工作階段的結果。原始請求仍在等待時,請勿重新提交。逾時後才建立的連線不會重新執行已逾時的輸入。
重複使用環境 ID 並不會在替換後的運算資源中還原檔案。請使用供應商的儲存空間或快照保留檔案。
清理
停止接受新輸入。請協調清理作業與正在進行的啟動作業,避免遺留仍在執行的運算資源。
刪除工作階段,並另外停止供應商的運算資源。刪除工作階段既不會停止其環境,也不會發出刪除 webhook。