这道题其实在问一个很实际的问题:你怎么知道Prompt已经到头了,再调也是白费力气?因为Prompt优化有边际递减效应,如果连续几轮迭代收益都不到5%,甚至出现指标震荡,调来调去反而下降,那就差不多该停了。
具体怎么看呢?我会从定量和定性两个维度来判断。先说定量,最核心的是任务性能指标,比如准确率、F1、精确匹配这些。如果对比基线提升已经小于3%,而且人工抽检也感觉不到明显差异,那就说明Prompt在模型能力上榨得差不多了。再一个是生成质量,像BLEU、ROUGE这类参考指标,跟当前SOTA Prompt差距在2%以内,基本就到位了。还有效率成本,比如平均token数、延迟和费用,如果已经压到了业务SLA的下限,再优化可能得不偿失。此外,稳定性也很关键,我会看多次采样的标准差,如果方差小于5%,说明Prompt输出比较稳定,可以接受。
定性方面,我会做Bad Case聚类分析,看高频错误类型是不是已经把边界场景都覆盖了。比如客服退款场景,如果反复出现对‘部分退款’处理不对的case,那就说明Prompt对这个边界理解不够。然后做人工盲评,让专家打分,如果分数进入平台期不再提升,那就是信号。还会做对抗测试,比如同义改写、干扰注入,如果性能波动超过10%,说明Prompt不够鲁棒。
工程实践上,我一般会做A/B测试,线上流量分流,用统计显著性检验,p值小于0.05才认为有效。同时跑影子流量,新Prompt离线验证,避免直接上生产出问题。分层实验也很重要,要控制模型版本、数据分布这些变量,把Prompt的因子隔离出来。
这里有个边界要划清楚:上限分两层,当前模型能力上限和Prompt表达上限。如果换更强模型,比如从GPT-3.5到4,指标突然跃升,说明原Prompt根本没到真上限,只是被模型能力卡住了。所以我会先确认模型上限,再判断Prompt。
另外,Prompt调优有个常见失败场景,就是指标震荡时你可能觉得是随机波动,但其实是过拟合了某个小样本集。所以上线前我会特别关注在留出集上的表现,如果留出集指标不升反降,那就要警惕。这个留出集怎么构造,其实也有讲究。
所以整体上,我更倾向把定量和定性结合起来,先跑量化指标,再用人工和对抗测试兜底,最后用A/B验证。这样既不会过早放弃,也不会无谓消耗精力。