最近在做一个客服工单自动分类的小功能,用GPT-4o mini跑,大概20个类别。Prompt前后改了十几版,每次改完感觉某几个类别准了,另外几个又崩了,来回反复横跳。现在就是手动拿十几条测试用例跑一遍,看眼结果就上线了,心里特别没底。想问问大家:Prompt这种“代码”你们是怎么做版本管理的?有没有什么轻量的回归测试方案?还是说只能靠经验和玄学……求指点。
Prompt调了三天效果还是不稳定,大家平时怎么管理版本和做回归测试的?
全部回复
共 8 条这问题太真实了,20个类别来回横跳基本就是prompt在过拟合你手头那几条case。我的做法是把prompt当代码管,直接扔进git,每次改动写清动机,比如“把退款和退货的边界说清楚”,这样崩了能回滚,也能看出哪次改动带来了副作用。测试集千万别只搞十几条,至少每个类别攒5到10条真实工单,固定下来当回归集,改完prompt就跑一遍,看混淆矩阵比看单条结果靠谱得多。另外可以上promptfoo或者LangSmith这类工具,能批量跑对比,省得你手动复制粘贴。还有个坑是别一次改太多,尽量单变量调整,不然你根本不知道是哪个词起了作用。温度调到0或者很低也有帮助,分类任务本来就不需要发挥。玄学肯定有,但把变量控制住之后,玄学比例会小很多。
我也踩过这个坑,20个类别来回横跳太真实了。后来我用git管prompt,每次改完把测试用例跑一遍存个结果,用diff看哪些类别退化了。回归测试不用搞太重,先按类别各挑两三条固定样本,跑完对比准确率,掉超过5%就不合。另外温度调到0会稳不少,别问我是怎么知道的。
我一般把prompt丢进git,再挂个脚本跑固定测试集,改完看diff就知道哪崩了。
我也被这问题折磨过,后来把prompt丢进git,每次改动跑固定50条测试集看通过率,稳多了。
我也被这事折磨过,后来干脆把prompt当代码管:每个版本丢git里,commit message写清改了啥、为啥改。测试集固定30条左右,覆盖每个类别至少一条,每次改完全跑一遍记录准确率,掉点就回滚。别嫌麻烦,十几版来回横跳的时候,没这个你根本不知道是哪次改动把哪个类别搞崩的。
我把prompt和测试用例都丢进git,每次改完自动跑一遍对比结果,谁崩了一眼就能看出来。
写得挺好,建议补充一些性能数据。
我现在的做法是把prompt扔进git,跟代码一起走MR,每次改动必须带测试集跑一遍diff。测试集不用多,但得按类别分层抽样,每类至少留3-5条固定case,跑完直接看混淆矩阵对比上一版。另外温度调到0再测,不然结果飘得根本没法归因。玄学部分确实有,但至少能把"这次改动到底动了哪几个类"这件事说清楚。