OpenAI 提示词对象 11 月 30 日停用:保留 pmpt_ ID,补齐版本

目录
  1. OpenAI 要停用什么,什么时候停用?
  2. 不改代码,怎样让 pmpt_ 调用继续工作?
  3. 提示词应该放在代码里,还是提示词库里?
  4. 按 ID 调用提示词要多花多少钱?
  5. 怎样让部分生产流量试用新版本?
  6. 怎样在发布前测试新版本?
  7. 11 月 30 日前需要做什么?
  8. 常见问题
  9. 2026 年 11 月 30 日,OpenAI 中保存的提示词会怎样?
  10. 停用后还能继续用 pmpt_ ID 调用吗?
  11. 什么能替代 OpenAI Evals?
  12. 相关阅读

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/prompts API 将于 2026 年 11 月 30 日停用;OpenAI Evals 将于 10 月 31 日转为只读。
  • 携带 prompt={"id": "pmpt_...", "version": "2"} 的 Responses 调用由 Synthorai 提示词库中同一 ID 的版本 2 处理;只改了 base URL。
  • 在持续流量下,移动提示词库的生产标签后,线上调用在 8 到 9 秒内开始使用新版本。
  • 提前确定的测试方案发现,一次修改导致 16% 的回答违反规则;此前一轮 40 条数据的测试却全部通过。

本文概述了提示词库系列的三篇指南。下面每节分别总结一篇指南,列出实测数据,并附上原文链接,代码和控制台截图都在对应指南中。所有测试均在 2026 年 10 月 19 日和 20 日完成,代码位于 github.com/synthorai-io/use-cases 的 prompt-library/ 目录。

OpenAI 要停用什么,什么时候停用?

OpenAI 的弃用公告列出了两项同日关闭的服务:

服务公告日期变化关闭日期
可复用提示词:提示词对象和 v1/prompts API2026 年 6 月 3 日平台逐步弱化提示词创建入口2026 年 11 月 30 日
Evals 平台:控制台和 API2026 年 6 月 3 日现有评估从 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"}库中的版本 292177$0.0000977
prompt={"id": ...}库中的版本 1,即生产标签指向的版本96207$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 请求体,再粘贴到新提示词的导入入口。导入会将消息、模型、参数、工具和输出 schema 读入首个版本,也可以直接在编辑器中编写版本。

提示词应该放在代码里,还是提示词库里?

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 日前迁移仍在使用的评估,届时 OpenAI Evals 将转为只读。

常见问题

2026 年 11 月 30 日,OpenAI 中保存的提示词会怎样?

OpenAI 的弃用公告称,可复用提示词对象和 v1/prompts API 计划于 2026 年 11 月 30 日停用。OpenAI 的迁移指南建议将提示词文本移入应用代码,但没有说明在此日期后,携带 pmpt_ ID 的请求会返回什么。

停用后还能继续用 pmpt_ ID 调用吗?

可以,前提是网关能从自己的提示词库中解析这个 ID。我们的测试中,向 Synthorai 网关发送携带 prompt={"id": "pmpt_...", "version": "2"} 的 OpenAI SDK 调用后,请求由库中的版本 2 处理;只修改了 base URL 和密钥。固定引用的版本必须在库中以相同编号存在,否则调用返回 404。

什么能替代 OpenAI Evals?

任何能用固定输入调用两个提示词版本、并对回答评分的测试运行器都可以替代它。在提示词库中,测试集和评估运行与提示词放在一起;发布时,标签移动对话框会显示该版本最近一次测试的结果。

相关阅读

← 返回博客