模型升级不是玄学:一套可复用的 LLM 回归评估流程

王老师189 阅读

做 LLM 应用,最常被问的问题:"换这个模型效果怎么样?""这个 prompt 改完是变好了吗?"——如果靠感觉回答,早晚翻车。我搭了一套回归评估流程,谁改了什么,跑一遍就知道。

核心:固定测试集 + 客观指标

准备一份不随改动而变的测试集(离线评估集):

JSON
[ {"input": "怎么退款?", "expected": "包含:退款流程、条件、时效"}, {"input": "帮我写一封请假邮件", "expected": "格式正确、语气得体、包含关键信息"} ]

测试集要覆盖:典型场景、边界场景、易错场景(比如用户输入很乱、很长的场景)。

指标设计

  • 可自动判定的:格式正确率(输出是否为合法 JSON)、包含/不包含关键词、长度是否达标
  • 需要模型判定的:语义一致性(用 GPT-4 当评委,判断输出是否满足 expected 描述)
  • 人工抽检:自动判定 + 模型判定跑完,再抽 5% 人工复核

流程

  1. 改动前跑一遍基线,记录指标
  2. 改动后跑同样测试集,对比
  3. 指标提升 → 通过;下降 → 回滚或调查
  4. 关键改动(换模型)要跑两遍取平均,因为 LLM 有随机性

  1. 测试集被污染。如果测试题被模型记住(比如调优时把测试题喂给过模型),效果虚高。测试集要"留出",调优过程不接触。

  2. 单样本波动。LLM 输出有随机性,跑一次不代表真实水平。温度设 0 或跑多次取平均。

  3. 指标和目标脱节。格式正确率高了,但用户满意度没变,说明指标选错了。指标要能反映"真实业务目标"。

  4. 评估成本。测试集大 + 用高级模型当评委,评估一次也花钱。控制测试集规模(100-300 条),关键改动才全量评估。

落地工具

  • 轻量:一个 Python 脚本 + JSON 测试集
  • 完善:LangSmith、Promptfoo 这类开源评估工具,自带测试集管理和对比面板

最后:评估流程的价值不在"跑一次",而在"每次改动都能对比"。固定测试集 + 固定指标,让"变好变坏"从感觉变成数据。

评论0

还没有评论,来抢沙发~