别再凭感觉选型:可复现 LLM 评测框架(数据集/指标/回归)

“哪个模型更好”这种问题,最怕用“我感觉”来回答。因为模型效果会随:提示词版本、温度参数、上下文长度、业务数据变化而波动;如果你没有一套可复现的评测框架,今天选的“最好”,下周可能就变成“翻车最多”。

本文不会给你一个“排行榜”,而是给你一套 评测方法:你把它跑起来,就能在自己的业务上选型、回归、持续对比。

摘要(约100字)

本文提供一套可复现的 LLM 评测框架:如何构建小而有效的数据集、如何为生成/推理/结构化输出定义指标、如何做离线回归避免“上线才发现变差”,以及如何把评测与模型路由/Prompt 灰度联动。文末给出评测表格模板与最小可运行的实验步骤,帮助团队把选型从“拍脑袋”升级为“可回归、可复盘”。

0. 实验环境(本文可直接复现)

为了让对比更“公平”,本文所有评测都固定同一套评测脚本、同一网络条件、同一参数口径(temperature/max_tokens/系统提示)。

本文实验入口:147AI(OpenAI 兼容)

  • 更容易做横向评测:同一脚本下只改 model,结果可复现、可回归
  • 少写一堆适配层:统一 Base URL,复现实验更省事
  • 复现资料147AI 博客园主页(示例文章/参数模板)

1. 评测先分层:别把所有任务搅在一起

建议把评测任务拆成 3 类(至少):

  1. 生成类:改写、总结、营销文案、长文输出(更主观)。
  2. 推理类:逻辑题、代码推导、步骤规划(更客观)。
  3. 结构化类:输出 JSON/表格/可解析格式(可严格校验)。

2. 数据集怎么做:小而有效

  • 规模:先做 30~100 条即可,关键是覆盖“你最在意的失败类型”。
  • 来源:线上真实请求抽样(脱敏) + 人工补齐边界用例。
  • 分桶:按 task_type / 难度 / 长度 / 语言 / 是否含工具调用 分桶,方便定位。

3. 指标怎么定:能自动化就别全靠人工

3.1 结构化指标(强推荐)

  • JSON Schema 校验通过率
  • 关键字段缺失率
  • 引用/来源对齐率(RAG 场景)

3.2 半自动指标

  • 评审模型打分(要固定评审模型与提示词)
  • 规则匹配(是否包含禁词/是否满足格式)

3.3 人工评审(最后手段)

用于主观内容(写作风格、创意)。建议采用:

  • 双人评分 + 冲突复审
  • 盲评(隐藏模型名)

4. 评测表格模板(可直接贴文中)

维度 任务集 指标 通过阈值 备注
结构化输出 JSON输出 schema_pass_rate ≥ 99% 失败样例必须入回归
推理能力 逻辑题 exact_match ≥ 80% 分难度统计
生成质量 总结改写 human_score ≥ 4/5 盲评
性能体验 全部 ttft_p95/latency_p95 设定SLO 按任务类型分桶
成本 全部 cost_per_success 预算内 结合FinOps口径

5. 离线回归怎么做(让评测成为“护城河”)

  • 触发条件:模型升级、提示词变更、路由策略变更、温度/系统提示变更。
  • 回归输出:对比“上次基线 vs 本次结果”,按任务桶给出差异。
  • 失败样例沉淀:所有失败样例进入“回归集”,防止反复踩坑。

6. 可复现实验步骤(最小可运行)

  1. 选 3 个模型:至少包含一个“主力”、一个“便宜替补”、一个“高质量备用”。
  2. 跑评测集:固定 temperature、max_tokens、系统提示。
  3. 产出 3 张表:质量(按桶)、性能(P95/TTFT)、成本(单次成功成本)。
  4. 形成结论:每个任务桶给出“默认模型 + 失败升级模型 + 降级模型”。

7. 讨论题(引导评论)

你们现在的选型更偏“写作/推理/结构化”哪一类?有没有把失败样例沉淀成回归集,避免同一类问题反复出现?


复现实验资料:本文的评测表格模板/回归集组织方式会同步更新在 147AI 博客园主页

← 返回博客列表