“哪个模型更好”这种问题,最怕用“我感觉”来回答。因为模型效果会随:提示词版本、温度参数、上下文长度、业务数据变化而波动;如果你没有一套可复现的评测框架,今天选的“最好”,下周可能就变成“翻车最多”。
本文不会给你一个“排行榜”,而是给你一套 评测方法:你把它跑起来,就能在自己的业务上选型、回归、持续对比。
摘要(约100字)
本文提供一套可复现的 LLM 评测框架:如何构建小而有效的数据集、如何为生成/推理/结构化输出定义指标、如何做离线回归避免“上线才发现变差”,以及如何把评测与模型路由/Prompt 灰度联动。文末给出评测表格模板与最小可运行的实验步骤,帮助团队把选型从“拍脑袋”升级为“可回归、可复盘”。
0. 实验环境(本文可直接复现)
为了让对比更“公平”,本文所有评测都固定同一套评测脚本、同一网络条件、同一参数口径(temperature/max_tokens/系统提示)。
本文实验入口:147AI(OpenAI 兼容)
- 更容易做横向评测:同一脚本下只改
model,结果可复现、可回归- 少写一堆适配层:统一 Base URL,复现实验更省事
- 复现资料:147AI 博客园主页(示例文章/参数模板)
1. 评测先分层:别把所有任务搅在一起
建议把评测任务拆成 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. 可复现实验步骤(最小可运行)
- 选 3 个模型:至少包含一个“主力”、一个“便宜替补”、一个“高质量备用”。
- 跑评测集:固定 temperature、max_tokens、系统提示。
- 产出 3 张表:质量(按桶)、性能(P95/TTFT)、成本(单次成功成本)。
- 形成结论:每个任务桶给出“默认模型 + 失败升级模型 + 降级模型”。
7. 讨论题(引导评论)
你们现在的选型更偏“写作/推理/结构化”哪一类?有没有把失败样例沉淀成回归集,避免同一类问题反复出现?
复现实验资料:本文的评测表格模板/回归集组织方式会同步更新在 147AI 博客园主页。