OpenAI 提示詞物件 11 月 30 日停用:保留 pmpt_ ID,補齊版本
目錄
OpenAI 將於 2026 年 11 月 30 日停用可重複使用的提示詞物件與 v1/prompts API,同一天也會停用 Evals 儀表板與 API。OpenAI 表示這些物件「預定停用」,但沒有說明之後以 prompt={"id": "pmpt_..."} 呼叫 Responses API 會得到什麼回應,因此必須先把提示詞文字移到別處。我們在 Synthorai 提示詞庫中,以原本的 pmpt_ ID 重建提示詞,再將 OpenAI SDK 呼叫指向 Synthorai 閘道。這個閘道是位於應用程式與模型供應商之間的 API 代理,只需要更換 base URL 和金鑰:指定版本 "2" 時,請求使用提示詞庫中的版本 2;未指定版本時,則使用正式環境版本。
TL;DR
- OpenAI 的提示詞物件與
v1/promptsAPI 將於 2026 年 11 月 30 日停用;OpenAI Evals 則從 10 月 31 日起改為唯讀。 - 帶有
prompt={"id": "pmpt_...", "version": "2"}的 Responses 呼叫,由 Synthorai 提示詞庫中相同 ID 的版本 2 處理;只更換了 base URL。 - 在持續有流量的情況下,切換提示詞庫中提示詞的 production 標籤後,線上呼叫於 8 到 9 秒內開始使用新版本。
- 在執行前就已定案的測試,抓出一項修改導致 16% 的回答違反規則;先前 40 筆資料的測試卻全部通過。
本文是提示詞庫三篇系列指南的總覽。以下各節整理一篇指南及其實測數據,程式碼與主控台截圖請見各節連結。所有測試都在 2026 年 10 月 19 日與 20 日執行,程式碼位於 github.com/synthorai-io/use-cases 的 prompt-library/ 目錄。
OpenAI 要停用哪些功能?何時停用?
OpenAI 的停用公告頁面列出兩項同日停用的功能:
| 功能 | 公告日期 | 變更 | 停用日期 |
|---|---|---|---|
可重複使用的提示詞:提示詞物件與 v1/prompts API | 2026 年 6 月 3 日 | 平台已不再主推建立提示詞的功能 | 2026 年 11 月 30 日 |
| Evals 平台:儀表板與 API | 2026 年 6 月 3 日 | 現有 evals 自 2026 年 10 月 31 日起改為唯讀 | 2026 年 11 月 30 日 |
提示詞物件是儲存在 OpenAI 儀表板中的提示詞,可透過 pmpt_ ID 呼叫,也可搭配版本與變數。OpenAI 的遷移指南建議將提示詞文字從物件移到應用程式碼中,以 input 傳給 Responses API,並透過 git、程式碼審查與測試管理版本。指南並未說明停用後,帶有 pmpt_ ID 的請求會得到什麼回應。
如何不改呼叫程式碼,讓 pmpt_ 呼叫繼續運作?
在提示詞庫中以相同 ID 重建提示詞,再讓用戶端指向能提供該提示詞的閘道即可。Synthorai 閘道會讀取 /v1/responses 請求中的 prompt 欄位:若 ID 與提示詞庫中的提示詞相符,就由提示詞庫提供內容;數字形式的 version 則用來選取對應版本。以下是示範程式發出的呼叫,除了 base URL 與金鑰,其餘與原本使用 OpenAI 的應用程式相同:
import os
from openai import OpenAI
# The only change: the base URL and the key.
client = OpenAI(base_url="https://synthorai.io/v1", api_key=os.environ["SYNTHORAI_API_KEY"])
raw = client.responses.with_raw_response.create(
model="gpt-6-luna",
prompt={"id": "pmpt_68f2a1c09d4e4b7a8c3f5e21d0b97a64", "version": "2"},
input="Where is order A-50977? It has been a week.",
)
print(raw.headers["x-synthorai-prompt-version"]) # 2
print(raw.parse().output_text)
| 呼叫 | 使用版本 | 輸入 token | 輸出 token | 費用 |
|---|---|---|---|---|
prompt={"id": ..., "version": "2"} | 提示詞庫版本 2 | 92 | 177 | $0.0000977 |
prompt={"id": ...} | 提示詞庫版本 1,也就是 production 標籤指向的版本 | 96 | 207 | $0.0001131 |
兩次回答都來自 GPT-6 Luna,也就是提示詞庫版本中儲存的模型。示範中的 pmpt_ ID 是虛構的;遷移時請使用自己的 ID。10 月 20 日另做了三項檢查,確認遷移後應用程式送出的請求會如何處理:
| 請求 | 結果 |
|---|---|
prompt 內含 "variables": {"product": "garden tools"} | 值會填入該版本的 {{product}};回答開頭為「我們在線上販售園藝工具。」 |
請求中指定 model: "gpt-4o" | 改用該版本儲存的模型 GPT-6 Luna |
指定提示詞庫中不存在的 "version": "7" | 404 prompt_not_found,訊息為「沒有版本 7」 |
最後一列很容易漏掉。OpenAI 的版本編號會對應到提示詞庫中相同編號的版本,因此固定使用 "version": "7" 的呼叫,需要提示詞庫中存在 v7。請依序重建程式碼固定使用的版本,讓編號一致;或修改這些呼叫,改用已重建的版本。
OpenAI 文件沒有列出可讀回提示詞物件的 API,我們也沒有找到匯出功能。因此,請趁 OpenAI 儀表板仍可使用時,複製每個提示詞的文字與設定。在主控台中,用複製的文字組成 Responses 請求主體,再貼到新提示詞的匯入功能。匯入時會將訊息、模型、參數、工具與輸出結構描述讀入第一個版本;也可以直接在編輯器中撰寫版本內容。
提示詞該放在程式碼,還是提示詞庫?
OpenAI 建議放在程式碼中。如果希望不必部署就能修改提示詞,可以選擇提示詞庫,但請求路徑上會多依賴一個服務:
| 提示詞放在程式碼中 | 提示詞放在提示詞庫,以 ID 呼叫 | |
|---|---|---|
| 發布變更 | 修改程式碼、審查、部署 | 切換標籤;實測於 8 到 9 秒內套用至呼叫 |
| 回復版本 | 還原變更並部署 | 將標籤切回原版本 |
| 將 10% 流量導向新版本 | 自行實作功能旗標或路由 | 在標籤上設定逐步發布比例 |
| 審查 | git diff 與 pull request | 在主控台查看版本差異;變更不在儲存庫中 |
| 發布前測試 | 自行準備測試執行器 | 提示詞附有測試集與評估執行紀錄 |
| 依賴 | 除模型供應商外,無其他依賴 | 必須能連上閘道,才能解析提示詞 |
最後一列就是使用提示詞庫的代價。若無法讀取提示詞庫,Synthorai 閘道會使用最後一次讀取的提示詞副本,最長可持續 24 小時;只有在沒有近期副本時才會回傳 503。若團隊希望兩者兼得,可以將提示詞庫中的提示詞及其所有版本匯出為 JSON,放進自己的儲存庫。
透過 ID 呼叫提示詞要多少錢?
透過 ID 呼叫不會額外收費:在 20 組配對測試中,透過 prompt_id 呼叫所送出的提示詞 token 中位數為 114.5,與直接寫在程式碼中的相同請求一致。閘道會填入該版本的訊息、模型與參數,再向供應商送出一般請求。缺少變數、ID 不存在等無法處理的呼叫,會在執行模型前以 400 或 404 失敗,不會計費。標籤是具名指標,例如 production 或 staging,每次只指向一個版本。在每半秒一次呼叫的情況下,切換 production 標籤後,新版本套用至呼叫的時間中位數為 8.0 到 8.5 秒;若連續 15 秒沒有流量,下一次呼叫就會使用新版本。提示詞版本管理提供程式碼、五種錯誤情境與計時方法。
如何讓部分正式流量試用新版本?
在 production 標籤上加入第二個版本並設定流量比例,閘道就會依工作階段 ID 分流。這個 ID 由 X-Session-Id 標頭提供,用來將同一段對話的呼叫歸在一起,因此對話不會中途切換版本。在 10% 逐步發布測試中,200 個工作階段有 16 個(8.0%)分配到候選版本;10% 與 50% 兩次測試合計的 400 個工作階段,也都維持使用同一版本。透過 _user 標籤、請求中的 user 欄位或 safety_identifier 識別的終端使用者,也都維持使用同一版本。候選版本使用相同提示詞,但模型從 GPT-6 Luna 換成 DeepSeek V4.1 Flash。候選版本回答較快,中位數為 3.1 秒,正式版本則為 4.9 秒;但單看 10% 流量測試,候選版本的 71 次呼叫,平均每次費用是正式版本的 1.92 倍。提示詞變更的 A/B 測試說明如何從各版本的彙總數據發現這項差異。
如何在發布前測試版本?
用固定測試集分別執行新版本與現行版本,再依事先寫好的檢查條件評分每個回答。檢查可以是文字模式、JSON schema、延遲與費用上限,也可以由模型擔任評審。我們的 v2 縮短了系統提示詞,並刪除「一律說明訂單編號」的規則。在先前測試都沒用過的 110 則訊息中,v2 有 18 個回答(16%)漏掉訂單編號,v1 則完全沒有遺漏。這次測試在執行前就已定案,以 Fisher 精確檢定計算得到 p = 3.6 × 10⁻⁶;這項檢定衡量的是,隨機因素造成如此大差異的機率。先前一次 40 筆資料的測試中,v2 每一筆都通過。擔任評審的 Claude Sonnet 5.5 占了大部分測試費用,每筆約十分之一美分。提示詞發布前測試整理了由此推導的測試筆數準則。
對準備離開 OpenAI Evals 的團隊來說,這就是提示詞庫內的替代方案,但有一項差異需要事先規劃:透過 API 啟動的測試由呼叫端執行,呼叫端負責呼叫兩個版本、評分回答,再寫回結果。主控台則從瀏覽器執行相同測試。
11 月 30 日前該做什麼?
遷移可分成五個步驟:
- 列出程式碼呼叫的每個
pmpt_ID,以及固定使用的版本。 - 複製每個提示詞的文字與設定,趁 OpenAI 儀表板仍可使用時完成。
- 逐一決定提示詞的去處:移入程式碼(OpenAI 的建議),或以相同 ID 移入提示詞庫。
- 以原本的
pmpt_ID 重建提示詞庫中的提示詞,並為每個固定使用的版本保留原編號,再將用戶端的 base URL 指向閘道;第一次呼叫時,檢查X-Synthorai-Prompt-Version標頭。 - 在 10 月 31 日前遷移仍在使用的 evals,當天 OpenAI 的 evals 將改為唯讀。
常見問題
2026 年 11 月 30 日,儲存在 OpenAI 的提示詞會怎樣?
OpenAI 停用公告頁面表示,可重複使用的提示詞物件與 v1/prompts API 預定於 2026 年 11 月 30 日停用。OpenAI 遷移指南建議將提示詞文字移入應用程式碼,但沒有說明該日期之後,帶有 pmpt_ ID 的請求會得到什麼回應。
停用後還能繼續呼叫 pmpt_ ID 嗎?
可以,前提是有閘道能從自己的提示詞庫提供該 ID 的提示詞。在我們的測試中,帶有 prompt={"id": "pmpt_...", "version": "2"} 的 OpenAI SDK 呼叫送到 Synthorai 閘道後,由提示詞庫版本 2 處理;只更換了 base URL 與金鑰。固定使用的版本必須以相同編號存在於提示詞庫中,否則呼叫會回傳 404。
什麼可以取代 OpenAI Evals?
任何能對固定輸入呼叫兩個提示詞版本、並評分回答的測試執行器,都可以取代它。在提示詞庫中,測試集與評估執行紀錄會與提示詞放在一起;切換標籤的對話框也會在發布前顯示該版本最近一次測試結果。
延伸閱讀
- 提示詞版本管理:透過 ID 呼叫提示詞,切換標籤即可發布。
- 提示詞變更的 A/B 測試:10% 逐步發布與各版本比較。
- 提示詞發布前測試:測試集、檢查條件與所需測試筆數。
- 提示詞庫指南:所有欄位,包括 OpenAI
prompt物件。 - OpenAI:從提示詞物件遷移:OpenAI 官方建議。