一次 cross-model prompt transfer 实验:我们以为在测“模型懂自己”
本文最后更新于 2026年5月31日 晚上
这是一篇实验复盘。
一开始我想验证一个听起来很有道理的想法:不同模型是不是有自己的 prompt 范式?如果一个 prompt 被模型 A 重写过,那么它是不是更适合模型 A 自己执行,而不是交给模型 B 或模型 C?
换句话说,模型会不会更懂自己写出来的 prompt?
这个问题一开始很诱人。因为平时用模型时确实会感觉每个模型“脾气”不同:有的喜欢结构化,有的喜欢啰嗦,有的对 JSON 很听话,有的动不动就自由发挥。于是很自然就会想:如果让每个模型把同一个任务 prompt 改写成“自己觉得好懂”的版本,再互相交换执行,会不会出现一种明显的 self advantage?
最后结果有点扫兴,也有点有意思:在当前实验设置下,这个强假设没有得到支持。更像是我们测到了 rewrite 质量和 target 模型基础能力,而不是测到了什么稳定的“模型私有 prompt 范式”。
最初的假设
原始假设可以写成这样:
同一个 well-defined prompt,经过不同模型的语义重构后,在独立评估上下文中是否产生等效任务表现?
更实验一点的说法是:
- 准备一组有客观答案的任务 prompt。
- 让多个 source model 各自 rewrite 同一个 prompt。
- 把 rewrite 后的 prompt 分别交给多个 target model 执行。
- 比较
source_model == target_model的 diagonal cells 和source_model != target_model的 off-diagonal cells。
核心指标是:
1 | |
如果这个 gap 稳定为正,而且统计上站得住,那就说明“模型自己的 rewrite 更适合自己执行”这个假设至少有一点经验支持。
一开始我还做了文献撞车检查。结论是相邻工作不少,比如 prompt transferability、prompt rewriting、prompt optimization、model drifting 这些方向都有相关结果;但“多个模型独立 rewrite 同一 prompt,然后做完整 diagonal/off-diagonal 矩阵评估”这个精确范式,没有找到完全相同的工作。所以它不是惊天动地的新方向,但作为一个小实验还是值得做。
实验怎么搭
任务集没有做大。因为目标不是冲论文,而是先把实验闭环跑起来。
最终 prompt bank 是:
- 3 个 task family
- 每类 3 个 prompt
- 总共 9 个 prompt items
任务类型包括:
ticket_classification:分类任务,要求输出固定 label。event_extraction:信息抽取任务,按字段对答案。exact_reasoning:简单精确推理任务,要求输出确定 answer。
评分也尽量简单:
- 分类:label exact match。
- 抽取:字段级 exact match 后求平均。
- 推理:normalize 后 exact match。
这件事很重要。因为如果评分标准太主观,后面所有分析都会变成玄学。这里至少先保证“模型输出好不好”可以机械判断。
第一轮:看起来有戏
先用 mock provider 跑了一次 synthetic 实验。这不回答真实模型问题,只是验证实验机器是不是能正常工作。
mock 的设定很极端:自己执行自己的 rewrite 就给正确答案,执行别人的就故意退化。所以 synthetic 结果当然很漂亮:
| Run | Rows | Gap | p-value |
|---|---|---|---|
| Synthetic mock | 324 | 0.777778 | 0.001 |
这一步只说明 pipeline 没坏。
随后接入真实模型。先跑了 R1,再跑 R4。R4 初版的结果一度看起来很像支持假设:
| Run | Rows | Gap | p-value | CI |
|---|---|---|---|---|
| Real R1 | 81 | 0.166667 | 0.076 | 跨 0 |
| Real R4 初版 | 324 | 0.138889 | 0.005 | [0.041667, 0.226852] |
如果只看这个表,很容易兴奋:好像 diagonal advantage 出来了,而且 p-value 也显著。
但这里其实已经有危险信号。按 target model 拆开看,优势并不均匀。有些 target 上 self rewrite 并没有优势,甚至是反向。也就是说,aggregate gap 可能是被某些模型或任务结构带出来的,而不是一个普遍规律。
这就是实验里最容易骗自己的地方:总体数字很好看,不代表机制真的对。
加 baseline 后,故事开始变了
后来我意识到,原设计混着几个东西:
- target 模型本身能力强弱。
- source 模型 rewrite 质量。
- target 是否更懂自己 rewrite 的 prompt。
如果不拆开,最后看到的 gap 可能根本不是 prompt transfer loss,而是某个模型本来就强,或者某个模型 rewrite 更保真。
所以增强版实验加了三个 baseline:
original prompt baseline:每个 target 直接执行原始 prompt。human canonical rewrite:人工统一 rewrite,测 target 基础执行能力。rewrite quality audit:检查 rewrite 是否保留 JSON schema、label set、gold-relevant details。
同时还修正了 rewrite 复用:同一个 source_model x prompt_item 只 rewrite 一次,然后复用于所有 repeats 和 targets。这样更符合“rewrite 结果应可复用”的直觉,也减少了不必要调用。
增强 R4 的结果变成:
| Run | Rows | Units | Diagonal | Off diagonal | Gap | p-value | CI |
|---|---|---|---|---|---|---|---|
| Enhanced R4 | 324 | 108 | 0.555556 | 0.486111 | 0.069444 | 0.115 | [-0.046296, 0.175926] |
原本看起来显著的 gap 被削弱了,而且不显著。
更关键的是 baseline 很清楚地显示 target capability 差异很大:
| Target | Human canonical mean |
|---|---|
| minimax | 0.500000 |
| deepseek | 0.944444 |
| gpt | 0.888889 |
这时候就不能再简单说“某个 rewrite transfer 差”,因为 target 本身能力就不是一个水平线。
rewrite audit 也很有解释力:
| Source | Audit pass rate | Mean audit score |
|---|---|---|
| deepseek | 0.555556 | 0.439005 |
| minimax | 0.888889 | 0.573580 |
| gpt | 1.000000 | 0.830232 |
GPT rewrite 明显更稳,DeepSeek rewrite 更容易丢 schema 或关键细节。于是结果越来越像是:
好 rewrite 到哪里都好,差 rewrite 给谁都容易坏。
而不是:
每个模型都有一个只有自己能理解的 prompt 私有语。
加入 gpt-5.4-mini:gap 继续变小
后来我把 gpt-5.4-mini 作为显式 slot 加入实验。这里有一个非常重要的限制:之前的 gpt slot 实际上已经通过 auto-code gateway 使用 gpt-5.4-mini 后端。所以这不是“加入一个全新的独立模型家族”,而是做一次 alias/replication check。
这轮用增量跑法,只补缺口:
| Artifact | Reused | New | Total |
|---|---|---|---|
| Rewrites | 27 | 9 | 36 |
| Model-rewrite score rows | 324 | 252 | 576 |
| Baseline rows | 216 | 72 | 288 |
4-slot 结果:
| Run | Rows | Units | Diagonal | Off diagonal | Gap | p-value | CI |
|---|---|---|---|---|---|---|---|
| 4 slots, +gpt-5.4-mini | 576 | 144 | 0.638889 | 0.590278 | 0.048611 | 0.104 | [-0.032407, 0.122685] |
gap 从 enhanced R4 的 0.069444 降到了 0.048611。
这不是一个强支持假设的方向。
加入 gpt-5.4-nano:几乎把故事讲完了
最后我又加入了 gpt-5.4-nano。
这次遇到了一点真实世界的小插曲:auto-code gateway 在跑 nano 时两次断流,一次是 RemoteDisconnected,一次是 IncompleteRead。于是我给 provider 补了 retry 覆盖,把这两类 HTTP 连接异常纳入重试。最终用 max_workers=1、retry_count=8 跑通。
5-slot 增量规模:
| Artifact | Reused | New | Total |
|---|---|---|---|
| Rewrites | 36 | 9 | 45 |
| Model-rewrite score rows | 576 | 324 | 900 |
| Baseline rows | 288 | 72 | 360 |
最终 5-slot slot-level 结果:
| Run | Rows | Units | Diagonal | Off diagonal | Gap | p-value | CI |
|---|---|---|---|---|---|---|---|
| 5 slots, +gpt-5.4-nano | 900 | 180 | 0.694444 | 0.652778 | 0.041667 | 0.119 | [-0.022222, 0.106944] |
gap 又下降了。
更有意思的是,把 gpt、gpt-5.4-mini、gpt-5.4-nano 折叠成一个 gpt_gateway family 后,结果变成:
| View | Rows | Units | Diagonal | Off diagonal | Gap | p-value | CI |
|---|---|---|---|---|---|---|---|
| GPT family collapsed | 900 | 108 | 0.557613 | 0.560185 | -0.002572 | 0.521 | [-0.116770, 0.104167] |
这基本就是没有 gap。
这一步非常关键。因为如果不折叠 GPT 系列 slot,slot-level 的 diagonal/off-diagonal 会被同一个 backend family 重复加权。看起来像是“更多模型支持了这个模式”,实际上可能只是“同一个 GPT family 的几个名字一起出现了”。
nano 弱吗?
我一开始以为 nano 可能会明显弱一点。结果在这个任务集上并没有。
target baseline:
| Target | Human canonical mean |
|---|---|
| minimax | 0.500000 |
| deepseek | 0.944444 |
| gpt | 0.888889 |
| gpt-5.4-mini | 0.888889 |
| gpt-5.4-nano | 0.916667 |
nano 的 human canonical baseline 甚至略高。
rewrite audit:
| Source | Audit pass rate | Mean audit score |
|---|---|---|
| minimax | 0.888889 | 0.573580 |
| deepseek | 0.555556 | 0.439005 |
| gpt | 1.000000 | 0.830232 |
| gpt-5.4-mini | 1.000000 | 0.840326 |
| gpt-5.4-nano | 1.000000 | 0.783157 |
nano 的 audit score 比 mini 低一点,但 pass rate 仍然是 1.0,而且远高于 DeepSeek 和 MiniMax。
所以在这个小任务集里,nano 不像是“弱到拖垮实验”的模型。它更像 GPT gateway family 的一个 capacity tier。
最终结论:假设没有被支持,但也没有被终极证伪
如果要一句话总结:
在当前实验设置下,我们没有观察到稳定、显著、可泛化的 same-source rewrite advantage。
更具体一点:
- 早期 real R4 初版看起来支持 same-source advantage。
- 加入 original/human canonical baseline 和 rewrite quality audit 后,gap 明显变弱并不再显著。
- 加入
gpt-5.4-mini和gpt-5.4-nano后,slot-level gap 继续下降。 - 把 GPT-backed slots 折叠为一个 family 后,gap 基本消失。
- 最终数据更支持“rewrite quality + target capability”解释,而不是强版本的 prompt paradigm transfer loss。
但这里不能写成“证明假设不成立”。这很重要。
更严谨的说法是:
实验结果未能支持我们的原始假设;但由于实验覆盖范围、样本规模和检验能力有限,这应被理解为“当前证据不足”,而不是对该假设的最终证伪。
这是负结果,但不是终极审判。
这个实验真正教会我的东西
这次最有价值的地方,不是得到一个多么惊天动地的结论,而是亲眼看到一个“看起来合理的 aggregate 指标”如何一步步被拆解。
一开始的 R4 初版很像是个漂亮结果:gap 为正,p-value 显著。按照冲动一点的写法,完全可以写成“发现模型私有 prompt 范式”。但加上 baseline 之后,它就开始站不住了。
这其实挺像很多 AI 实验的缩影:
- 你以为测的是机制 A。
- 其实混进了能力差异 B。
- 又混进了数据质量 C。
- 最后 aggregate 指标 D 看起来很漂亮。
如果不拆 baseline,很容易把一个工程现象误读成认知机制。
这次实验最后没有证明“模型有自己的 prompt 私有语言”。它反而提醒我:很多时候,prompt 能不能 transfer,不一定是因为模型之间存在神秘范式壁垒,而是因为有些 rewrite 本身就更保真、更结构化、更不丢约束。
也就是说,与其问“模型是不是更懂自己”,不如先问:
这个 rewrite 有没有把任务真正改好?
后续还可以怎么做
如果要继续做,下一步不应该继续加 GPT-backed capacity tier。那样只会让同 family slot 重复加权。
更有价值的方向是:
- 加入真正独立的模型家族。
- 把 prompt bank 从 9 个扩到 30-50 个。
- 做更语义化的 rewrite audit,而不是只看 required terms。
- 把 family-level 分析变成默认输出。
- 对 target capability 做归一化或分层建模。
现在这个实验最适合支持的结论是:
强版本的“模型普遍更理解自己 rewrite 的 prompt”没有在当前设置中得到支持。当前结果更像是 rewrite 质量和 target 基础能力在主导。
这就够了。一个小实验没有发现预想中的东西,也算发现了一点东西。