返回首頁

代理工具

OpenAI Python SDK 3.6.0 改用 HTTPX2,企業 TLS、測試攔截與自訂傳輸層需遷移

OpenAI Python SDK 已將同步與非同步預設客戶端從 HTTPX 換成 HTTPX2,並停止把舊版 `httpx` 與 `certifi` 當作傳遞相依套件。一般 API 呼叫大致不變,但企業代理、客製 transport、RESPX 測試及憑證信任設定可能在升級後失效。

European Commission - Photographer: Aurore Martignoni · CC BY 4.0 · Image source
zh-Hant

OpenAI 於 8 月 28 日發布 Python SDK 3.6.0,最重要的底層變更不是新增模型介面,而是把同步與非同步 HTTP 客戶端全面遷移至 Pydantic 接手維護的 HTTPX2。直接建立 OpenAI() 或 AsyncOpenAI() 的應用仍可沿用既有串流、重試、數值 timeout 與解析後的回應模型;真正需要檢查的是曾接觸 SDK 傳輸層的程式。

新版不再隨 openai 安裝舊 httpx 或 certifi。HTTPX2 預設透過 truststore 使用作業系統信任庫,因此缺少 CA 套件的精簡容器、依賴修改版 certifi 的部署,以及使用 TLS inspection 的企業代理,可能在升級後出現憑證驗證錯誤。工程團隊應先確認映像內的系統 CA,或以 SSL_CERT_FILE、SSL_CERT_DIR 或明確的 ssl.SSLContext 指定信任來源。

自訂客戶端也須把 httpx.Client、Timeout、URL、transport、認證處理器與事件 hook 換成 HTTPX2 對應物件。原始回應、串流包裝器及底層例外現在同樣屬於 httpx2 類型;只攔截舊 HTTPX 的 RESPX 或 tracing 外掛可能無法看見請求。官方保留注入舊 HTTPX client 的暫時逃生路徑,但公開型別已以 HTTPX2 為準,使用者需要 cast 或忽略靜態型別錯誤,而且相容路徑日後可能移除。

這次遷移顯示模型 SDK 的網路堆疊本身已是生產風險邊界。升級前應針對代理、mTLS、串流中斷、連線池、mock transport 與最小化容器做整合測試,而不能只以單次 Responses API 成功回應作為驗證。

來源

  1. Migrating to HTTPX2
  2. OpenAI Python API library 3.6.0
  3. HTTPX2 documentation