OpenResponses Gateway 計畫
OpenResponses Gateway 整合計畫
Section titled “OpenResponses Gateway 整合計畫”OpenClaw Gateway 目前在
/v1/chat/completions 公開了一個最小化的 OpenAI 相容 Chat Completions 端點(請參閱 OpenAI Chat Completions)。
Open Responses 是一個基於 OpenAI Responses API 的開放推理標準。它是為 agentic 工作流程設計的,並使用基於項目的輸入與語意串流事件。OpenResponses 規範定義了 /v1/responses,而非 /v1/chat/completions。
- 新增一個遵循 OpenResponses 語意的
/v1/responses端點。 - 將 Chat Completions 保留為一個易於停用且最終可移除的相容層。
- 使用獨立、可重複使用的架構來標準化驗證與解析。
- 在第一階段達到完整的 OpenResponses 功能同等性(圖片、檔案、託管工具)。
- 取代內部的 agent 執行邏輯或工具編排。
- 在第一階段變更現有的
/v1/chat/completions行為。
來源:OpenResponses OpenAPI、OpenResponses 規格網站以及 Hugging Face 部落格文章。
擷取重點:
POST /v1/responses接受CreateResponseBody欄位,例如model、input(字串或ItemParam[])、instructions、tools、tool_choice、stream、max_output_tokens以及max_tool_calls。ItemParam是一個可區分的聯集,包含:- 角色為
system、developer、user、assistant的message項目 function_call和function_call_outputreasoningitem_reference
- 角色為
- 成功的回應會傳回一個包含
object: "response"、status和output項目的ResponseResource。 - 串流使用語意事件,例如:
response.created、response.in_progress、response.completed、response.failedresponse.output_item.added、response.output_item.doneresponse.content_part.added、response.content_part.doneresponse.output_text.delta、response.output_text.done
- 規格要求:
Content-Type: text/event-streamevent:必須符合 JSONtype欄位- 終端事件必須是字面值
[DONE]
- 推理項目可能會公開
content、encrypted_content和summary。 - HF 範例包含請求中的
OpenResponses-Version: latest(選用標頭)。
- 新增
src/gateway/open-responses.schema.ts,其中僅包含 Zod schemas(不匯入 gateway)。 - 為
/v1/responses新增src/gateway/openresponses-http.ts(或open-responses-http.ts)。 - 保持
src/gateway/openai-http.ts完整,作為舊版相容性介面卡。 - 新增組態
gateway.http.endpoints.responses.enabled(預設為false)。 - 保持
gateway.http.endpoints.chatCompletions.enabled獨立;允許兩個端點 分別切換。 - 當啟用 Chat Completions 時,發出啟動警告以標示其舊版狀態。
Chat Completions 的淘汰路徑
Section titled “Chat Completions 的淘汰路徑”- 維持嚴格的模組邊界:responses 與 chat completions 之間沒有共用的 schema 類型。
- 讓 Chat Completions 成為可選的組態選項,以便在無需變更程式碼的情況下將其停用。
- 一旦
/v1/responses穩定後,更新文件將 Chat Completions 標記為舊版。 - 可選的未來步驟:將 Chat Completions 請求對映至 Responses 處理程式,以便更簡單地移除。
第 1 階段支援子集
Section titled “第 1 階段支援子集”- 接受
input為字串或帶有訊息角色和function_call_output的ItemParam[]。 - 將系統和開發者訊息提取至
extraSystemPrompt中。 - 使用最新的
user或function_call_output作為代理執行的當前訊息。 - 使用
invalid_request_error拒絕不支援的內容部分(圖片/檔案)。 - 返回單一助理訊息,其中包含
output_text內容。 - 返回
usage,其值為零,直到接通 token 計算。
驗證策略(無 SDK)
Section titled “驗證策略(無 SDK)”- 為以下支援的子集實施 Zod 架構:
CreateResponseBodyItemParam+ 訊息內容部分聯集ResponseResource- 閘道使用的串流事件形狀
- 將架構保留在單一、隔離的模組中,以避免差異並允許未來的程式碼生成。
串流實作(第 1 階段)
Section titled “串流實作(第 1 階段)”- 同時包含
event:和data:的 SSE 行。 - 所需序列(最小可行性):
response.createdresponse.output_item.addedresponse.content_part.addedresponse.output_text.delta(視需要重複)response.output_text.doneresponse.content_part.doneresponse.completed[DONE]
測試與驗證計畫
Section titled “測試與驗證計畫”- 為
/v1/responses新增端到端覆蓋率:- 需要驗證
- 非串流回應形狀
- 串流事件排序和
[DONE] - 使用標頭和
user進行會話路由
- 保持
src/gateway/openai-http.test.ts不變。 - 手動:使用
stream: truecurl 至/v1/responses,並驗證事件排序和終端[DONE]。
文件更新(後續追蹤)
Section titled “文件更新(後續追蹤)”- 新增
/v1/responses用法和範例的新文件頁面。 - 使用舊版說明和指向
/v1/responses的指標更新/gateway/openai-http-api。