安全切换大语言模型:人工标注、逐步指标与努力度设置
如何在不担心虚幻的性能退化问题的情况下,将多步骤大语言模型流程迁移至更新型号:人类真实标注、逐步骤指标、过时的提示词以及推理工作量。
来源: Migrating off gpt-5: the models were fine, my measurements were not
在配置文件中更改模型名称看似只需五分钟就能完成。但在多步骤的大型语言模型处理流程中,实际情况往往并非如此,其原因通常不在于新模型本身,而在于用于评估它的衡量标准。通过实际迁移旧模型系列中的过滤流程,你将了解如何构建可靠的基准数据、将损失归因到各个具体步骤、区分来自性能较差模型的无效提示,以及将推理强度视为针对特定任务的设置而非全局可调参数。
这一场景中的直接触发因素是模型退役。OpenAI已宣布将2026年12月11日定为四个模型的停用日期:gpt-5及其mini和nano版本,以及gpt-5-pro。这是撰写本文时的计划,具体信息请以官方退役页面为准。相关处理流程依赖于其中两个最小的模型,因此必须进行迁移。目前有两种替代方案:不同规格的gpt-5.4,以及gpt-5.6-luna。模型名称、默认设置及定价方案变化较快,故请将以下具体内容视为阶段性信息,而处理方法才是长期有效的准则。
正在迁移的流程
该系统每月会处理大约2,600篇文章,将其筛选至约120篇候选文章,再由人工进行审核。这一筛选过程并非通过单一指令实现,而是借助LangGraph构建的智能体完成的,该智能体包含十几个节点,其中十个为不同的模型调用。其中三个调用负责处理核心内容:首先是入口处的相关性筛选,接着是两个分类器,一个用于判断内容类型,另一个用于判断主题。其后则是新颖性检测、评分以及总结步骤。
设计中的某一特性决定了后续的所有决策。第一个节点的存在目的是去除噪声而非评估质量,而且它的两种错误类型所造成的代价差异很大:
- 误将不良文章保留下来的代价较低,后续更强大的模型或最终的人工审核者能够发现这些问题。
任何将这两种错误视为对称情况的评估方式都会让你对处理流程的实际情况产生误解。
实际部署的配置
最终状态是故意设计成不平衡的。十次调用中有九次转到了gpt-5.6-luna,目前它的表现相当不错。而相关性检测功能则仍保留在gpt-5.4-nano上;为这一例外情况找理由占据了大部分调查时间。现在,每次调用都会明确指定其推理所需的资源,而非沿用模型的默认设置,而这一选择最终比模型本身的选择更为重要。
在评估质量之前,成本就已经缩小了候选范围,但并非通过标价来决定。几乎所有的流量费用都是按照OpenAI的数据共享计划收取的,luna所使用的每日数据额度与现有最便宜模型相同。因此无论怎样,每月的费用都只有几美分。同一代中性能更强的模型所分配的数据额度要少得多,这样的工作量在中午之前就会用完,因此无论其质量如何都被排除了。
以下是按出现顺序列出的四个意外发现,这一顺序同时也适合作为你自行进行迁移时的参考清单。
经验教训1:不要以旧模型作为基准
第一次评估是将每个候选配置与已退役模型的输出进行对比:新方案能在多大程度上复现之前的结果?该对比显示有31篇文章出现退步,于是人们开始寻找根本不存在的模型缺陷。
事后看来问题显而易见。处理流程的第一步会生成候选方案,其中40%到60%会被人工审核员剔除。用该输出来衡量一致性,实际上等同于用一个已知表现不佳的过滤机制来评判。那些复制旧模型错误的候选方案会得到奖励,而修正这些错误的则会受到惩罚。
人工决策本身就是已记录的基准答案
版本控制系统中存在一套质量更高的标签集。人工审核环节会从候选列表中删除条目,每次删除都会生成一次提交记录。在测试所用的那个月里,第一轮审核将122篇候选文章缩减到72篇,后续的审核又去掉了更多文章。通过对比该提交记录与其父版本,可以区分出两类标签组:被保留的文章和被拒绝的文章。
用这些标签重新评估那31篇“丢失”的文章后,情况完全变了。其中43%其实是审稿人本来就打算舍弃的文章。以人类判断标准来看,实际丢失的优质文章只有15篇,大约是表面显示的损失数量的一半。更妙的是,由于这些标签可以与每一步的决策关联起来,因此能够显示是哪个节点导致了这15篇文章的丢失。(这些带标签的数据来自使用gpt-5.4-mini的实验设置,而非最终发布的luna版本,因为luna的实验很早就终止了。)仅有一个节点导致了文章数量的变动;其他步骤的文章数量变化均未超过一篇。在一个提示词中出现的局部性、涉及15篇文章的问题,远比那些原因不明的31篇文章丢失问题更容易解决。
核心教训是:在您的系统中,每当有人做出最终决策时,其决定即为标准答案,而且通常已经存在相关记录。可以查看审批队列、审核覆盖操作、重新分类的支持工单,或是用户对自动生成的草稿所做的修改。现有文章《按故障阶段评估RAG系统》也提出了类似观点,即应将错误归因于导致错误的组件。
逐步骤检测还能发现与迁移无关的漏洞。在此案例中,它揭示出新颖性检查功能会编造一些在其接收到的列表中根本不存在的主题名称,24次拒绝请求各对应一个不同的虚构名称,而且旧模型和新模型都会出现这种情况。
第二课:更严格的模型可能更能正确理解您的提示
一旦将损失归因于主题过滤器,人们往往会倾向于调整其提示词,直到新模型表现正常。但在这里这样做会造成严重后果,因为层级更深的更强模型会加载那些相同的提示词文件。放宽规则让初级模型能够默默通过更多文章,实际上削弱了负责进行严格判定的层级,而初级阶段的所有检测结果都无法反映出这一问题。
因此,调查人员没有修改提示词,而是要求模型自行解释原因。对于主题过滤器拒绝的每篇文章,都会记录下gpt-5.4-mini给出的理由,总共进行了大约二十次调用。
这些解释逻辑清晰。他们列出了具体的规则,并忠实引用了提示词内容。在某次处理中,模型几乎逐字重复了那条禁止AI成本优化的规则——“即便在API网关层面实施也是如此”——并以此理由删除了审稿人本应保留的文章。
旧版的gpt-5-mini根本从未执行过这条规则。经检查,它所忽略的两条规则确实已经过时:一条没有针对应用程序内部消息传递模式的例外规定;另一条则是写在AI网关尚未成为值得关注的基础设施之前的。这两条规则得到了修正,其余规则则保持不变,而且这些修复被单独纳入一个提交记录中,与模型本身的更改分开,这样就可以分别对它们进行评估。
一种能区分两种相反结论的简单测试
这是任何迁移过程中都应首先运行的检查。当较新的模型在判断阶段拒绝更多项目时,其原因往往是更完善的指令遵循机制与已经过时一年的提示词发生了冲突。以下是其中列出的部分原因:
- 如果解释中正确引用了你的实际规则,那就说明提示词已经过时,对其进行修正有助于所有使用该提示词的阶段。
- 如果模型调用了明显与项目不匹配的规则,那就说明你的提示词是正确的,问题出在模型本身。
这些结论指向的方向截然相反,而单纯的拒绝数量无法区分二者。
第3课:更严格的判定并不一定意味着更差的结果
相关性筛选机制从另一个角度得出了类似的结果。在那个节点上,Luna拒绝的文章数量是GPT-5.4-Nano的两倍。显而易见的结论是Luna在这项任务上表现更差,而这几乎成了最终决策的依据。
然而,该筛选机制实际上是在回答三个独立的问题:内容是否足够新、语言是否为英语、主题是否在范围内?此前人们只考察了综合后的判断结果。
将各项判断分开来看则很有启发性。在语言问题上,两个模型的表现完全一致,都标记了相同的四篇文章。差异主要体现在主题问题上——Luna拒绝了64篇文章,而GPT-5.4-Nano则拒绝了32篇。
阅读Luna的推理过程后可以发现,其给出的判断逻辑清晰且大多具有合理性:它拒绝的项目包括用于Go工作进程池的库、构建语音智能体的平台,以及关于在云端迁移数据库的相关内容。这些项目本身并无问题。只不过Luna对“主要关注点”的理解比提示词编写者的初衷更为狭隘。
这就需要采取不同的解决方案。出错的判断应当得到修正;而对于那些虽然合理但更为严格的模糊提示词解读,最好避免在作为所有后续处理入口的关键环节使用,因为一旦在此处出错,错误将永久存在。正因如此,这个任务仍由gpt-5.4-nano来处理。更一般地说,综合评分只能说明某些变化发生了。如果某个步骤能回答多个问题,在形成关于模型的任何结论之前,应分别记录每个答案。
第4课:推理能力不会在模型或任务之间迁移
一旦选择gpt-5.4-nano作为筛选模型,剩下的问题就是它应该进行多少思考。推理模型会呈现一个“努力程度”参数,大致控制着在给出答案之前内部讨论的强度。最初的假设是,这个努力程度参数就像一个质量调节旋钮,始终朝同一方向转动,不同模型会以各自特有的方式作出反应。
测试结果显示出两种截然不同的模式:
- 在相关性筛选阶段,提高努力程度几乎使gpt-5.4-nano的拒绝率翻倍,而luna则完全不受该设置的影响。
- 在主题过滤阶段,同样的luna模型在努力程度不同的范围内仅筛选了49篇文章,即便在最高设置下仍会继续拒绝部分文章。
- 已退役的gpt-5-nano则是所有配置中最为宽容的。
因此,像“luna需要较高投入”这样的表述并非可重复使用的客观事实。它在某项任务中对luna适用,但在另一项任务中则毫无意义。投入程度是特定模型在特定任务上的属性,每一种这样的组合都需要独立的衡量标准。
更大的模型并不能替代这种衡量标准。通过分别用80篇文章对相关性筛选机制进行测试,且所有模型都保持中等投入程度时,gpt-5.4-mini拒绝了31篇内容,luna拒绝了34篇,而gpt-5.4-nano则拒绝了30篇。即便使用更大的模型,结果也几乎没有任何变化;而完全关闭gpt-5.4-nano的推理功能则使拒绝数量出现了显著变化。
投入程度还具备与其他成本要素截然不同的特性,因为它可能无上限地持续增加。将主题过滤标准提升一个投入等级可以减少10次拒绝,但所需的token使用量大约是原来的三倍,这一权衡最终被否决了。
未进行测量的内容
明确指出存在的缺陷也是该方法的一部分。
- 已部署的luna配置从未经过与人工标注结果的对比测试;该测试很早就终止了。它在生产环境中运行时没有出现任何模型调用失败的情况,但这并不能说明其质量有所下降。
- 有一个数据点表明,在内容类型分类任务上,luna的表现不如gpt-5.4-mini:在相同的计算强度下,luna有9篇优质文章被错误分类,而gpt-5.4-mini仅为5篇;具体的计算强度并未被记录下来。如果输出量减少,首先应该检查的就是这一环节。
测量细节
共使用了两组样本。在效率实验中,所有198篇缓存文章都被直接发送到一个节点,因此上游环境不会产生任何变化。而在端到端实验中,则让包含200行的样本依次通过每个节点,其中72篇为人工认可的文章,49篇为人工拒绝的文章。
根据这些人工标注结果进行评分:
- 旧版配置(gpt-5-mini加上gpt-5-nano):72篇文章中有48篇被保留;49篇不良文章中有27篇通过了筛选。
- 应用了提示词修正后的gpt-5.4-mini版本处理判断节点:72篇中有33篇被保留;49篇中有18篇通过了筛选。
- 当前部署配置(十次调用中有九次使用luna):尚未针对这两组样本进行评分。
最后一项内容在每月审查之前会保持空白,因为只有在文章筛选操作完成后才会出现相关标注,而在分析时9月尚未进行过文章筛选。
早期生产信号
生产数据可作为一种部分替代指标。Luna于8月30日正式上线。在相似时间段的入选率如下:
- 8月1日至29日的早期型号:4.55%(2,658个中121个入选)。
- 切换前的最后八天的早期型号:4.86%(658个中32个入选)。
- 8月30日至9月6日的Luna型号:4.08%(638个中26个入选)。
通过双比例z检验对比这两个匹配的八天周期,得到的数值为0.69,远处于噪声范围内。作为参照,之前的系统在8月的前八天里波动率为3.98%,这一幅度甚至超过了luna引入变化后的波动程度。一周零一天本就是很短的周期,而且纳入率并不能衡量质量,但最令人担忧的情况——即luna会悄悄导致处理流程停滞——并未出现。
Luna在测试阶段的运行还产生了首个按节点划分的拒绝原因统计。在该阶段共有603篇文章被排除。其中42%是由于相关性检测机制,38%是内容类型过滤器导致的,16%是主题过滤规则的作用,3%则是新颖性检测的结果。相比之下,在8月1日至29日期间,之前的系统共排除了2,526篇文章,但却没有记录任何排除原因;因此要重新分析8月的数据,就必须重新处理这些文章,而无法仅通过查询测试数据来完成。如果您的流程目前没有记录每一步的拒绝原因,那么在迁移之前添加这些记录是最经济有效的改进方式。
真实数据与单次运行的局限性
人工标注存在两个固有限制。它们仅覆盖旧流程通过的文章,因此新配置永远无法因挽救旧流程错误遗漏的内容而获得认可。在200条样本中,约有79条完全没有人工判定结果。
不同运行之间的差异很大。在完全相同的200行数据上,使用相同配置进行三次重复运行时,单个节点的拒绝率分别为37%、48%和55%,这一差异幅度远远超出了抽样噪声所能解释的范围。使用同一配置进行一次完整的端到端运行后,有四个新项目生成,同时又有四个项目丢失。用已废弃的配置重新处理其之前在生产中生成的物品时,仅能找回121件标记物品中的75件,因此它与自身历史数据的匹配率仅为约62%。实际上,在单个节点上,一次运行最多只能区分大约20点的差异;在整个处理流程中,则最多能区分大约8个项目的差异。
验证单个修改的更好方法是:仅检查该修改针对的要修复的项目,以及应保持不变的一小部分固定项目,而将整体运行结果仅作为出现严重附带损害的粗略警报。有一个典型的案例说明了这一点——该修改使四篇目标文章超出了它所修复的节点范围,但最终输出几乎未变,因为这四篇中的三篇后来因无关原因被拒收了。
标记的实际去向
推理过程会消耗输出标记,但真正耗尽配额的并非输出内容。在之前的模型中,输出占所有标记的13%,而在新模型中这一比例低于3%;由于提示词较长,输入内容占据了主导地位。
在撰写本文时,该数据共享计划提供两种每日配额。较大的配额为每天250万个令牌,适用于Luna以及GPT-5.4的nano和mini版本;较小的配额为每天25万个令牌,适用于中型及更大型的模型。在普通工作日,使用旧模型时处理量约为195万个令牌,而使用新系列模型时则为115万个令牌。按当前灵活定价计算,导出一个月的数据(主要为旧配置数据加上新配置的8天数据)在不享受任何优惠的情况下大约需要4美元。
每千次请求的费用差异较大:
- gpt-5-nano:0.32美元
- gpt-5.4-nano:0.52美元
- gpt-5.6-luna:0.65美元
- gpt-5-mini:1.49美元
- gpt-5.4-mini:3.29美元(小样本)
Luna在每次请求的成本上并不占优,但这也是可以接受的。它的单次请求成本远低于两种迷你型号,且与纳米型号使用相同的资源池。
提示缓存写入附加费
价格表中隐藏了一个值得仔细阅读的细节。在所考虑的模型中,只有Luna会对缓存写入收费,其费用比正常的无缓存输入高出25%。由于请求是全天分散进行的而非集中处理,缓存条目会在不同请求之间过期:Luna的输入中有57%被计为缓存写入,仅有41%被计为缓存读取。尽管使用缓存仍能带来好处,可使输入成本比不使用缓存时降低23%,但这与读取操作所享有的90%折扣相比还有很大差距。如果你的工作负载是突发性的,就能获得更多折扣;如果是持续稳定的,就需要为写入操作的额外费用做好预算。
导致每次请求都失败的API陷阱
某些参数行为会使得模型重命名后出现服务故障。根据撰写本文时的情况(请以最新文档为准):
- 不同版本的模型在默认推理强度上存在差异:gpt-5为中等,5.4系列为无,而5.6版本又恢复为中等。因此,仅通过重命名模型就会悄无声息地改变每次调用的推理强度。
- 最高级别的推理强度仅适用于5.6版本模型;在5.4版本模型上请求该级别会导致所有请求失败。
- 在聊天补全接口中,任何高于“无”的推理强度与功能工具结合使用时都会被拒绝;此类调用必须转至响应接口处理。由于luna的默认值为中等,除非明确降低推理强度,否则无法在聊天补全功能中使用luna调用工具。
这些在运行时都无法恢复。典型的重试逻辑用于处理服务器错误、超时和速率限制,而非无效请求,因此模型与处理策略的不当组合会在每次运行中的每一行数据上都会失败,而不会只出现一次。应在进程启动时、处理第一行数据之前检查模型与处理策略的组合是否合适。关于这两个端点的更多信息,请参阅现有文章OpenAI Responses API 中的 items 与 messages 对比。
关键要点
- 切勿根据替代模型与被替代模型的匹配程度来为其评分;应使用记录下来的人类决策作为真实标准。
- 将每一项损失归因到具体的处理流程步骤,并将多问题步骤拆分为独立的、有记录的判定结果。