觀點 · 資訊分享
OpenAI Python SDK 升 3.0.0:HTTP 底層換成 HTTPX2,TLS 憑證改吃系統信任庫,容器與代理要先測
openai-python 在 8 月 12 日釋出 3.0.0:HTTPX2 成為預設 HTTP 用戶端、httpx 不再自動安裝。預設用法照常,但自訂 HTTP 設定、精簡容器與 TLS 檢查代理可能出問題。
- 發布
- 2026-08-12
- 篇幅
- 約 4 分鐘 · 1,875 字
- 結構
- 8 節 + 3 題常見問題
- 標籤

一句話看懂:OpenAI 的 Python 程式庫升到 3.0.0,底層的 HTTP 套件從 httpx 換成 HTTPX2;一般用法不用改,但如果你有自訂 HTTP 設定,或在精簡的容器、公司代理後面跑,升級前要先測。

先用白話講:這次換的是什麼?
想像 OpenAI 的 Python 程式庫是一位外送員,負責把你的問題送到 OpenAI、再把答案帶回來。外送員騎的那台車(HTTP 套件)過去是 httpx,這次 3.0.0 版換成了新車 HTTPX2。
多數人只是叫外送員送東西,不在乎他騎哪台車,所以這次升級對一般用法沒有影響。但如果你有改裝過那台車(自訂 HTTP 用戶端、代理、測試用的假傳輸層),新車的零件不通用,就得跟著換。
發生什麼事
openai-python 在 8 月 12 日釋出 v3.0.0,這是一個有「破壞性變更」的大版本,只有一項重點:
- HTTPX2 成為預設的 HTTP 用戶端,而且
httpx不再被自動安裝 - 使用自訂 HTTPX 用戶端、傳輸層或設定物件的程式,必須改用 HTTPX2 的對應物件,或使用「暫時性、只在執行期有效」的舊版 httpx 後門
誰會受影響?
依官方遷移指南(目前版本):
| 你的情況 | 影響 |
|---|---|
用 OpenAI()、沒自訂 http_client |
既有的 API 呼叫、串流、驗證、重試與數字型逾時照常運作 |
程式裡自己 import httpx,原本是靠舊 SDK 順便裝的 |
現在不會再自動裝,要自己加依賴,或改成 httpx2 |
自訂 http_client、傳輸層、代理、事件掛鉤 |
要改成 HTTPX2 的對應物件 |
| 測試用 RESPX 攔截請求 | 要改用相容 HTTPX2 的版本或分支 |
最容易踩雷:TLS 憑證信任庫變了
這點官方特別用粗體提醒:即使你用預設用戶端,也受影響。
- 以前:httpx 用
certifi提供的 CA 憑證包驗證 HTTPS 憑證 - 現在:HTTPX2 改用作業系統的信任庫,而且 SDK 不再安裝
certifi
可能出狀況的環境,官方列了三種:
- 沒有系統 CA 憑證的精簡容器映像
- 會做 TLS 檢查的公司代理
- 依賴「自己改過的 certifi 憑證包」的部署
解法是把需要的 CA 憑證裝進作業系統信任庫,或用環境變數指定:
export SSL_CERT_FILE=/path/to/ca-bundle.pem
# 或指定一個放 CA 憑證的資料夾
export SSL_CERT_DIR=/path/to/ca-directory
這兩個變數在 trust_env=True(預設值)時有效;若要在自訂用戶端精確控制,可以把 ssl.SSLContext 透過 verify 傳入。
給開發者的技術細節
- 自訂用戶端請改用官方提供的
DefaultHttpx2Client、DefaultAsyncHttpx2Client;舊名稱DefaultHttpxClient還能用,但現在建出來的是 HTTPX2 用戶端 httpx.Client→httpx2.Client、httpx.Timeout→httpx2.Timeout,其他物件也是一一對應;數字型逾時與字串網址不變- 使用 aiohttp 的人,改裝
openai[aiohttp]並用DefaultAioHttpClient() - 暫時走回頭路:安裝
httpx並注入舊版用戶端,但官方說明只在執行期有效、型別檢查會報錯,而且這是「過渡用途,未來可能移除」
我的看法
接案時最怕這種「看起來只是小套件換掉」的大版本升級,因為出事的地方往往不是程式碼,而是環境:容器映像少了一包憑證、客戶公司的防火牆做了 TLS 檢查,結果上線後第一個請求就憑證驗證失敗。
我的建議是:別讓 pip install -U openai 直接跑在正式環境。先把版本鎖定在 2.x,在測試環境升到 3.0.0,實際跑一次呼叫,重點看憑證驗證、代理設定與逾時行為。如果你的客戶使用公司代理,這一步更不能省。
名詞小辭典
- HTTP 用戶端:程式用來發出網路請求的套件,OpenAI 程式庫靠它連到 API。
- CA 憑證 / 信任庫:用來判斷一個 HTTPS 網站憑證可不可信的「名單」。
- 破壞性變更(Breaking change):升級後舊的寫法可能無法運作,所以通常會升大版本號。
- RESPX:測試時用來攔截並偽造 HTTP 回應的工具。