大模型的分数是怎么来的
从一张考卷到排行榜名次——分数怎么算、它什么时候会骗你、以及你选模型时到底该拿它做什么
📅 更新于 2026-09-13
0030 秒速览:先拿这四个结论走
读完这一篇,你会获得三个能立刻用的能力:看懂新闻里任何一个"某模型得了 88 分"是怎么算出来的;判断两个分数之间那 1 分、2 分到底算不算差距;以及把排行榜当成筛子而不是裁判来帮你选模型。这三个能力都不需要你会写代码,也不需要你懂 AI 的原理。
① 分数是"在一个固定题集上的平均正确率",它测的是那份考卷,不是这个模型的全部本事。
② 同一个模型在不同榜单上名次不同,绝大多数时候不是有人撒谎,而是有五个口径对不上(05 一节列全)。
③ 读一个分数的正确顺序是:先看它考什么 → 再看题量够不够 → 再看它花了多少钱 → 最后才看名次。
四个关键数字,先给量级
你现在的处境 → 直接跳到那一节
| 你心里想的是 | 去哪一节 | 那一节给你什么 |
|---|---|---|
| "新闻说 X 超过了 Y,这分是怎么来的?" | 02 → 03 → 05 | 一条六步流水线,加一个从题目到分数的完整算例 |
| "MMLU、GPQA、HLE、SWE-bench……这些名字在考什么?" | 04 | 一张表:每份考卷考什么、多少题、怎么判、别拿它说什么 |
| "差 1 分、差 2 分算差距吗?" | 03 → 08 | 误差范围的算法,以及我用榜单原始数据跑出来的实测结论 |
| "我要挑一个模型来干活" | 10 → 11 | 一份四步筛选流程,和一套能复制走的"自己的小考场"脚本 |
| "榜单是不是可以刷?我还能信吗?" | 06 → 09 | 六种失真机制,加一个真实的争议现场(双方立场都摆出来) |
| "为什么同一个模型在两个榜上差那么多?" | 05 → 07 | 五项口径差异,和四类分数各自回答什么问题 |
大模型的分数很像体检报告上的指标:它是一次标准化测量的结果,有明确的测量方法和明确的误差。你不能拿一份体检报告说"这个人整体是什么水平"——但你可以用它筛出需要进一步检查的人。同样,你也不该拿"总检结论"四项全绿就断定没问题:具体项目测了什么、没测什么,才是关键。
这个类比到这里就不准了:体检指标(血压、血糖)背后有几十年的医学共识来定义"正常范围",而大模型的分数没有这种共识——榜单的题是谁出的、权重怎么定的、误差多大,往往要你自己去核。所以在模型这件事上,你必须比看体检报告时更警惕。
01分数是什么:一份考卷的成绩单
先把最容易误会的三件事拆掉,剩下的定义就自然站得住了。
它不是什么(三条负向定义)
"MMLU 考了 90 分,说明它在这些学科上接近专家。"
问题:考卷只覆盖它考到的那点东西。斯坦福《2026 AI 指数报告》给了一个非常直白的例子:Gemini Deep Think 在 2025 年国际数学奥林匹克竞赛里拿到 35 分、金牌水平;而同一批模型在 ClockBench 这份"认指针时钟"的测试里,最好的模型只有 50.6% 的正确率,人类是 90.1%。会做奥数题、却看不太懂钟表——研究人员把这个现象叫作锯齿状智能(jagged intelligence,意思是能力分布像锯齿一样高低不平,不是整体抬升)。
90 分说的是:在这 57 个学科的这 14,042 道选择题上,它答对了 90%。这句话既没有延伸到没考的学科,也没有延伸到"能不能用它做事"。
要判断它对你有用,你得接着问:这份考卷的题目长得像我的任务吗?
"这个模型分最高,那我用的 App 应该最好用。"
问题:测的是一个光秃秃的模型;你用的是包了一堆东西的产品——系统提示词(产品偷偷塞给模型的那段话)、可用的工具(搜网页、跑代码)、回答长度限制、以及它给你分配的是哪个档次的模型(很多产品会自动把简单问题丢给便宜模型)。
同一个模型,放在两个产品里可以是完全不同的体验。所以"模型榜单"只能帮你缩小范围,最终一定要在你实际要用的那个产品里试。
"考了 30 分,说明它只懂 30%。"
问题:四选一的选择题,完全乱猜也能对 25%。所以 25 分附近其实等于"什么都没会",而 30 分和 40 分的差距远没有数字看起来那么大。04 里那份考卷地图上的每一份考卷,零点都在不同位置。
读任何分数前先找两个天花板/地板:瞎猜的期望分(四选一 25%、十选一 10%、开放式问答 0%)和人类专家水平(GPQA 上,有博士学位的专家平均 65%)。有了这两个参照,数字才有意义。
那它到底是什么:一句话定义
一个大模型的"分数",是在一份固定的题目集合、一套固定的判卷规则、一个固定的外挂程序组合下,让它重复答题,再按固定公式算出来的平均分。
这个定义里有三个变量,缺一个都不成立——而新闻标题通常把它们全省了:
| 变量 | 它是什么 | 为什么它决定了分数的含义 |
|---|---|---|
| 题集(数据集) | 那批固定的题目。比如 MMLU 用 14,042 道四选一选择题,覆盖 57 个学科。 | 换一批题,分数就换一个含义。所以"MMLU 90 分"和"GPQA 60 分"没法互相换算。 |
| 判卷规则 | 怎么算对:和标准答案一字不差(精确匹配)、跑一遍自动测试看通过没有(单元测试)、还是让另一个模型来打分(LLM 裁判)。 | 同一份答案,判卷规则一换分数就能变。宽松的裁判会让所有人分数都变高。 |
| 外挂程序(脚手架) | 包在模型外面、替它动手的那套程序:给它一个可以反复试错的循环、可以跑命令和改文件的工具。英文叫 scaffold 或 agent harness。 | 现代编程类考卷的分数大部分来自外挂。同一个模型换一套外挂,分数能差好几个百分点——所以榜单上写的是"模型 + 外挂"的组合分。 |
不严谨:"Gemini 3 Flash 是 75.8 分。"
严谨:"Gemini 3 Flash,配 mini-SWE-agent 这套脚手架,在 SWE-bench Verified 的 500 道题上解决了 75.8%,提交日期 2026-02-17。"
后半句多出来的每个词,都对应着 05 里的一项口径差异。你在新闻里看到的永远是前半句——这正是误解的来源。
02分数是怎么产生的:六步流水线
任何一份模型分数,不管名字多花哨,都是同一条流水线跑出来的。看懂这条流水线,你就同时看懂了它可能在哪一步出问题。
第 1 步:出题——题从哪来,决定了它偏向什么
题目来源主要有三类,各自的偏向完全不同:
| 出题方式 | 真实例子 | 它天生偏向什么 |
|---|---|---|
| 专家命题:请学科专家手写 | HLE 由全球学科专家出题,共 2,500 道,覆盖数学、人文、自然科学;每道题都有明确答案,但没法靠上网搜到。GPQA 由生物、物理、化学的博士级专家出题,共 448 道。 | 偏向"冷知识 + 硬推理"。它故意让搜索引擎帮不上忙,所以更能测出模型自己会不会。 |
| 从真实工作里捞:把真实任务连同验收标准一起收进来 | SWE-bench 从 12 个热门 Python 仓库(Python 是最常用的编程语言之一)里捞出 2,294 个真实的 GitHub 问题(GitHub 是程序员放代码的地方,"问题"指用户报的 bug 或改进请求),配套的验收标准是当时修好它提交的那份改动。 | 偏向"真实、多文件、要动手"。它测的是一整套修复流程,不是单点知识。 |
| 从公开竞赛/新发布材料里持续收:按时间切分,只考"模型训练完之后才出现"的题 | LiveCodeBench 从 LeetCode、AtCoder、Codeforces 三个编程竞赛平台持续收题(论文发布时是 400 道,发布于 2023-05 至 2024-05 之间);LiveBench 每个月换新题,题目来自刚发布的数学竞赛、论文与新闻。 | 偏向"抗污染"。因为题目在模型训练之后才出现,模型不可能提前背过。 |
如果题目早就公开在互联网上,而模型又是拿互联网上的海量文字训练的(这个"读过的海量文字"就叫训练数据),那它很可能早就见过这道题和答案——考出来的就不是能力,是记性。这个现象叫数据污染,是第 06 节的第一号失真来源。"只考新题"就是把这条路堵掉。
第 2 步:定格式——同一个模型,问法一变分数就变
这一步给模型的规定至少包括:要不要先给几个示范例子(给了叫 few-shot,不给叫 zero-shot);要不要让它先把推理过程写出来再给答案(这叫思维链,英文 Chain of Thought);允不允许它上网、跑代码;给它多少答题预算。
这些不是无关紧要的细节。MMLU-Pro 的论文做了一次很硬的对照:在 24 种不同的问法下,同一批模型在原版 MMLU 上的分数波动是 4%~5%,换到更难的 MMLU-Pro 上波动降到 2%。论文作者由此得出一条结论——原版 MMLU 的分数有相当一部分是"问法带来的",不是"能力带来的"。
顺带说一个数字:MMLU-Pro 把每题的选项从 4 个增加到 10 个,题目也更偏推理。结果所有模型的分数一次性掉了 16 到 33 个百分点。同一个模型、同一批学科,只因为选项变多、题目变难,分数就掉这么多——这就是为什么"高分"必须连着考卷一起读。
第 3 步:抽题——用全部题,还是抽一部分
小的考卷可以全跑;大的考卷为了省钱会抽样。抽样本身没问题,但你要知道两件事:抽多少决定了分数有多"毛"(03 会用算术说明),以及不同机构抽的可能是不同的子集。
真实的例子:HLE 一共 2,500 道题。第三方评测机构 Artificial Analysis 在自己的"智能指数"里只用其中 2,158 道纯文本题(把需要看图的题去掉了)。所以它的 HLE 分和另一位评测者说的 HLE 分,分母根本不一样。
第 4 步:跑模型——随机性、重复次数、算力预算
模型答题有随机性(同一个问题问两次可能给不同答案,控制这个的是"温度"参数)。所以严格的做法是每题跑多次取平均,而"给一次机会、答对就算对"这种口径叫 pass@1。
Artificial Analysis 的做法可以当参考:它给不同评测规定了 1 次、3 次或 5 次重复(比如 Terminal-Bench 跑 3 次、HLE 跑 1 次、GDP.pdf 跑 5 次),并在方法学里声明,它的"智能指数"总体误差范围在 ±1 个百分点以内(基于对某些模型做 10 次以上重复实验),但单项评测的误差可能更大。
还有两个更隐蔽的变量:给多少算力(同一个模型,允许它想 10 秒还是 10 分钟,分数完全不同)和用哪套脚手架。我在 08 节算的那批数据里,榜单上每个条目都明明白白写着脚手架的名字(mini-SWE-agent)和提交日期——因为不写就没有复现的可能。
第 5 步:判卷——三种判法,可靠程度差很多
| 判卷方式 | 怎么工作 | 什么时候能用 · 什么时候别用 |
|---|---|---|
| 精确匹配 | 模型的答案必须和标准答案完全对上(或者对上答案的那一项)。MMLU、GPQA、HLE 都用这类。HLE 的说法是"每道题都有唯一、明确、易于验证的答案"。 | 最可靠,因为规则不含人的判断。别用的场景:答案不是唯一写法时(数学的等价变形、自由作答),精确匹配会误判。 |
| 自动测试(单元测试) | 准备一小组自动检查(比如"这个函数输入 3 应该返回 6"),跑通过就算解决。SWE-bench 就是拿当时真实的修复补丁当验收标准。 | 编程类最硬的判法:**它测的是"代码真的能跑对吗",不是"看起来像不像"**。边界:测试只覆盖写测试的人想到的情况。 |
| 模型当裁判(LLM 裁判) | 让另一个模型来读答案、按标准打分。开放题几乎只能这么做。 | 一篇被广泛引用的论文(MT-Bench / Chatbot Arena,2023)实测:强模型当裁判与人类偏好的一致率超过 80%,和人类之间的一致率差不多——所以它"能用"。但同一篇论文列出了它的三种系统偏见:位置偏见(更偏爱排在前面的那个回答)、啰嗦偏见(更偏爱写得长的)、自我增强偏见(更偏爱像自己写的答案)。用它就要防这三种。 |
| 人类投票 | 把两个模型的回答并排给真人看,让他选哪个好,再把大量投票汇成分数(Arena 用的就是这种)。 | 唯一能覆盖"开放式、没有标准答案"任务的方式。代价是慢、贵,而且测的是偏好不是正确率(见 07)。 |
第 6 步:算分与公布——谁在公布,这件事很重要
最后一步有三种常见算法:正确率(答对比例)、pass@1(一次机会通过率)、相对分(从两两胜负里推出的 Elo 分——你可以在棋类等级分里见到同一个思路,Arena 用的是它的近亲 Bradley-Terry 模型,作用一样:把"谁赢谁"的投票折算成分数)。
但比算法更值得问的是:这个数字是谁跑出来的?这三种来源的可信度完全不一样:
模型发布方自己跑、自己发。优点是它知道该配什么脚手架、能给最有利的配置;缺点是你没法独立复现,而且它是选择性的——弱项可以不提。
看到任何分数,先把它补全成一句话:"谁,用什么脚手架,在哪份考卷的多少题上,什么时候跑出来的。"四样缺一样,这个数字就只能当"传闻"听。
03最小例子:一道题怎么变成 0.86 分
上面那条流水线,我们用一道真实的题从头走到尾。
第一步:这是 MMLU 里的一道真题
下面这道题属于 MMLU 的"抽象代数"学科。它的原文、选项和标准答案,都是从公开数据集里直接取的(98 节给了取它的命令):
题面(subject = abstract_algebra)
Find the degree for the given field extension Q(sqrt(2), sqrt(3), sqrt(18)) over Q.
四个选项
A. 0 B. 4 C. 2 D. 6
数据集里记录的标准答案
answer = 1 → 也就是选项 B("4")
题目本身不需要你懂:你只要看到它有四个选项就够了。下面这条命令能把这行原始数据自己拉下来(约 1 秒):
curl -sL "https://datasets-server.huggingface.co/rows?dataset=cais/mmlu&config=all&split=test&offset=0&length=2" \
| python3 -c "import json,sys; [print(r['row']) for r in json.load(sys.stdin)['rows']]"
# 输出里能看到 question / choices / answer 三个字段;answer=1 就是选项 B
第二步:瞎猜能得几分?25%
四个选项里蒙一个,长期下来能对四分之一。所以 MMLU 的地板是 25%——这也解释了 MMLU 原论文里那句结论:当时最大的 GPT-3 在 57 个学科上平均只比随机猜高 20 个百分点左右,而且在道德、法律这些学科上还接近瞎猜水平。
对比一下:MMLU-Pro 把选项加到 10 个,地板就压到 10%;而 HLE 是填空和短答,地板是 0%。同一句"考了 40 分",在三份考卷上是三种完全不同的水平。
第三步:把 14,042 道题这样判完,就有了一个分数
判卷规则就是"模型的答案选中了标准答案那一项就算对"。把所有题的判定加起来除以总题数,就是这份考卷上的分数:
分数 = 答对的题数 ÷ 总题数
例如:答对 12,076 道 / 共 14,042 道 = 0.860 = 86.0%
到这里,"某某模型 MMLU 86 分"这句话就完全解构完了。它没有告诉你:这个模型在没考的学科上怎么样、在你的任务上怎么样、回答一次要花多少钱、以及问法换一下会变成多少。
第四步(最多人忽略的一步):这个 86 分本身有多"毛"
考卷是抽样——如果换一批同等难度的题,分数会不一样。这个波动的幅度是可以算的,公式就是中学统计里的那个"比例的标准误":
分数在 p 附近、考卷有 n 道题时,95% 情况下的波动范围是 1.96 × √(p × (1−p) ÷ n)。这个"±多少"就叫置信区间(confidence interval),通俗说就是"分数的误差范围"。
它的意思不是"真实能力一定在里面",而是:如果这套考卷反复重抽题,测出来的分数有 95% 会落在这个范围内。
把数字代进去,你会得到一个非常反直觉的结论:
| 考卷题量 | 分数在 80% 附近时,95% 的误差范围 | 这对你意味着什么 |
|---|---|---|
| 100 题 | ±7.8 个百分点(约 72% ~ 88%) | 100 题的考卷上,差 10 分都可能只是运气。 |
| 500 题(SWE-bench Verified 的大小) | ±3.7 个百分点(约 73% ~ 81%) | 榜单上相邻两名差 1~3 分,这份考卷分不出来。 |
| 1,319 题(GSM8K 的大小) | ±2.2 个百分点 | 差 2 分以内仍然可能是噪声。 |
| 14,042 题(MMLU 的大小) | ±0.7 个百分点 | 题量大到一定程度,小数点后一位才开始有意义。 |
你可以自己把这张表重算一遍——一行命令,不需要装任何东西:
python3 -c "import math; p=0.8; n=500; print(f'±{1.96*math.sqrt(p*(1-p)/n)*100:.1f} 个百分点')"
# n=100 → ±7.8 n=500 → ±3.7 n=14042 → ±0.7
① 看到"某模型 76.8%,另一个 75.8%",先问这道题有多少道——500 题的话,这 1 分不构成证据。
② 榜单上"小数点后一位"的排序,在题量少于几千道时基本没有信息量。
③ 想真正分出高下,需要的不是看更多榜单,而是换成同一批题做配对比较——做法与实测见 08。
04考卷地图:新闻里那些名字各自在考什么
下面这张表是本文最实用的一页。每个名字都补上了三样新闻里不给的东西:多少题、怎么判、别拿它说什么。这份表可以当你以后读任何"某某基准(benchmark:一份固定考卷加一套固定判分规则)得分"新闻时的对照表。
| 你在新闻里看到的名字 | 它考什么 · 多少题 · 怎么判 | 它擅长回答 / 别拿它说什么 |
|---|---|---|
| MMLU 最常被引用的"综合知识"考卷 |
57 个学科的四选一选择题(初等数学、美国历史、计算机、法律……)。测试集 14,042 道。判法:精确匹配。瞎猜地板 25%。 | 擅长:给一个粗略的"知识面"量级。别拿它说:"它懂某个专业领域"——题目早已公开,且头部模型普遍 90% 上下,已经被打满(2025 年 HLE 论文的原话就是"LLM 现在在 MMLU 这类流行基准上超过 90% 准确率",这句正是它做新考卷的理由)。 |
| MMLU-Pro | MMLU 的加强版:选项从 4 个加到 10 个,题目更偏推理,剔掉了原版里过于琐碎和有噪声的题。测试集 12,032 道。 | 擅长:在同一批学科上给出更有区分度的分数。别拿它说:它还是选择题,仍然测不到"动手做事"。 |
| GPQA(尤其 GPQA Diamond) | 由生物/物理/化学博士级专家出题,共 448 道,故意设计成"谷歌不了"(专家可以无限上网查、平均花 30 分钟以上,非专家仍只有 34% 正确率)。其中质量最高的子集叫 Diamond,198 道。 | 擅长:测"硬推理 + 专业判断"。它的参照系很清晰:对应领域博士专家平均 65%。所以看到 60% 就该知道这已经接近人类专家水平。别拿它说:"能独立做科研"——考卷是选择题,不是研究过程。 |
| HLE(Humanity's Last Exam) | 全球专家出题的"最后一考",2,500 道,含数学、人文、自然科学;混合选择题与短答,答案唯一且易于验证,但没法快速靠上网检索答出来。 | 擅长:测"当前天花板在哪"。别拿它说:日常可用性。它的设计目标就是"难到能撑几年",而斯坦福 2026 报告显示前沿模型一年内在这上面涨了 30 个百分点——分数更新极快。 |
| GSM8K / MATH | 小学应用数学题 1,319 道(GSM8K 测试集)/ 竞赛数学题 12,500 道(MATH)。判法:精确匹配最终答案。 | 擅长:当"回归测试"用——防止新版把旧能力弄坏。别拿它说:"数学很强"。两者都已接近打满,且 GSM8K 被点名为无效题比例最高可达 42% 的那份考卷(见 06)。 |
| SWE-bench / SWE-bench Verified | 从 12 个热门 Python 仓库的真实 GitHub 问题里抽 2,294 道(配套当时真实的修复补丁);其中经人工核验、去掉了描述不清或无法判定题目的子集叫 Verified,500 道。判法:跑自动测试。 | 擅长:测"能不能真的改代码让它跑通",是目前最接近真实软件工程的公开考卷之一。别拿它说:"能替代程序员"——它只覆盖 Python、每题独立、且必须配脚手架(脚手架才是动手的那部分)。 |
| LiveCodeBench / LiveBench | 抗污染型考卷:只收"模型训练完之后才出现"的题。LiveCodeBench 从三个编程竞赛平台持续收题(论文时点 400 道,发布于 2023-05 至 2024-05);LiveBench 每月换新题,来自刚发布的竞赛、论文与新闻,且用客观标准自动判分。 | 擅长:测"真的会不会",而不是"是不是背过"。别拿它说:跨时间比较——LiveBench 换题之后,上周的分和本周的分不是同一份考卷。 |
| Arena(原 Chatbot Arena / LMSYS) | 不是考卷,是投票擂台:把两个模型对同一个问题的回答并排给真人,让他挑更好的那个,再用统计模型把海量投票推成 Elo 分。累计投票已达 8,200 万票以上(2026-06 官方公布),另有 7 亿次以上对话。 | 擅长:回答"人更喜欢哪个回答",尤其是开放式、没有标准答案的任务。别拿它说:"谁更准确"——它测偏好;一个更会讨人喜欢的回答可能更不准确。 |
| Artificial Analysis 智能指数(AA Intelligence Index) | 不是单份考卷,是加权平均出来的合成分:把 10 项评测按"智能体任务 30% + 编程 20% + 科学推理 20% + 通用 30%"合成一个数(详见 05;智能体指会自己调用工具、分好几步把任务做完的 AI)。 | 擅长:一眼看出"综合"水平,并横向比较价格与速度。别拿它说:"综合第一"——权重是别人定的,换一套权重就换一个名次。 |
把你的任务拆成"输入 → 输出 → 验收"三样,再回答一个问题:这份考卷的判卷方式,能不能验收我的活?
· 你的活有唯一正确答案(抽取字段、算数、分类)→ 看精确匹配类考卷(MMLU 类、GSM8K、MATH)。
· 你的活要跑起来看结果(写代码、改配置、自动化)→ 看自动测试类考卷(SWE-bench、Terminal-Bench 这类终端任务)。
· 你的活没有标准答案(写作、客服话术、头脑风暴)→ 只能看人类偏好(Arena)或模型裁判类,并接受它带偏见。
05为什么同一个模型在不同榜单名次不一样
这是最常被当成"有人在造假"的现象。实际上,只要你把下面五项口径对齐,绝大多数差异都能解释清楚——而新闻标题从来不写这五项。
口径一:权重——"综合分"是有人替你做的选择题
很多最有影响力的分数并不是"考出来的",而是加权平均算出来的。加权平均的意思是:先把各项分数乘上不同的比重,再相加。比重给谁多给谁少,是一个人为决定。
以 Artificial Analysis 的"智能指数 v4.3"为例,它的构成是公开的:
| 大类(权重) | 里面装了哪些评测(各自的权重) | 这个权重选择意味着什么 |
|---|---|---|
| 智能体任务 30% | AA-Briefcase 15%(91 个跨 4 种场景的任务)、GDPval-AA v2 10%(220 个任务)、AutomationBench-AA 5%(657 个 SaaS 工作流自动化任务;SaaS 指按订阅使用的在线软件) | 它刻意偏向"会用工具的智能体"。如果你要的是"纯聊天写作",这 30% 对你其实是噪音。 |
| 编程 20% | Terminal-Bench v4.0 10%(66 个终端任务,跑 3 次)、SciCode 10%(288 个子问题,跑 3 次) | 编程只占五分之一。一个编程极强的模型,在总榜上不一定靠前。 |
| 科学推理 20% | HLE 10%(用 2,158 道文本题)、CritPt 10%(70 道物理题,跑 5 次) | 用的是"最难的那份考卷"。所以这份指数对难度顶端特别敏感。 |
| 通用 30% | AA-Omniscience 15%(6,000 题,把"答对率"和"编造率"分开算)、GDP.pdf 10%(100 个跨 10 个领域、要从一长份 PDF 里作答的任务,跑 5 次)、AA-LCR v1.1 5%(100 题长文本推理,跑 3 次) | 注意它把"会不会编造"单独拿出来计分——这是"综合分"里少见的、对你实际使用很关键的一项。 |
① "综合第一"的准确含义是"在这套权重下第一",不是"什么都第一"。
② 想让某个模型排第一,只需要调整权重——这是数学,不是造假。
③ 你该找的不是"综合榜第一",而是与你任务对应那个分项的第一(做法见 10)。
口径二:抽题——同一个名字,分母可能不一样
HLE 一共 2,500 题,而上面那份指数只用其中 2,158 道纯文本题。所以"A 机构的 HLE 得分"和"B 机构的 HLE 得分"分母不同,不能直接比。同样,SWE-bench 有完整版(2,294 题)、Verified 子集(500 题)、还有更小的 Lite 版本,报分时不写清楚用哪个就没法比。
口径三:脚手架与工具——动手的那部分不算模型的
编程、终端、电脑操作这类考卷,模型本身只会输出文字,真正去改文件、跑命令的是它外面的那套程序。所以同一模型配上不同脚手架,分数可以差出好几个百分点。这也是为什么专业榜单每个条目都要标脚手架的名字和版本。
口径四:日期——三样东西都会变
有三个日期同时影响一个分数:模型的版本日期(厂商悄悄更新权重是常态)、脚手架的版本日期、题库的版本日期(LiveBench 每月换题)。这三样里任何一样变了,分数就不再可比——08 节我会用真实数据演示:同一个模型,两次提交,分数差 2.4 个百分点。
口径五:样本量与误差——差多少才算差
这条在 03 已经算过:500 题的考卷、77% 附近,误差范围是 ±3.7 个百分点。所以"名次表上第 1 名和第 5 名"可能只是同一水平线上的几次随机波动。
把五项合成一次实测:同一个模型,四种读法
下面用我在 08 节抓到的真实数据(SWE-bench Verified 榜单,2026-09-13 抓取)演示"口径换一下,结论换一下":
| 你听到的说法 | 它背后的口径 | 换一个口径之后会变成什么 |
|---|---|---|
| "Claude 4.5 Opus 拿了 76.8%,是第一名。" | SWE-bench Verified、500 题、配 mini-SWE-agent、2026-02-17 提交。 | 换成配对检验(只比较两个模型都做过的同一批题):它和 75.8% 的 Gemini 3 Flash 之间的差距,统计上不显著(p ≈ 0.58)。 |
| "Claude 4.5 Opus 是 74.4%。" | 同一个模型、同一个脚手架,但提交日期是 2025-11-24。 | 同一模型换了日期就换了分数(76.8% 对 74.4%)。这不是谁造假,是版本与运行条件在变。 |
| "差距只有 1 个百分点。" | 只看了正确率。 | 把成本加进来的话:拿到相近分数的 MiniMax M2.5 平均每题 $0.073,Claude 4.5 Opus 平均每题 $0.754——10.3 倍差价。1 个百分点的"差距"在成本面前可能根本不该被讨论。 |
| "榜单上那个模型是 0 分,很差。" | 榜单上确实有一条 Gemini 3 Pro(2026-02-26 提交)500 题全过不了、记为 0/500 的记录。 | 更可能是那次运行出了问题(配置错误、脚手架没跑起来),而不是"模型突然不会写代码"——因为同族的其它提交都在 70% 以上。榜单里也留着失败的运行。 |
① 这份分考的是什么;② 多少题(决定误差);③ 用什么脚手架和工具;④ 三样东西的日期(模型/脚手架/题库);⑤ 是谁跑的、能不能复现。
五问里答不出三个以上,这个数字只能当噪音。
06六种失真:分数是怎么骗人的
上面讲的都是"口径不同",属于正常差异。这一节讲的是真问题:有六种机制会让分数偏离它本应度量的能力。每一种都有真实来源,不是我的猜测。
失真一:数据污染——考题提前进了"复习资料"
模型是拿互联网上的海量文字训练出来的。如果一份考卷的题目和答案早就在网上流传,那它很可能在训练时就见过,考出来的就成了记性。
这不是理论担忧,有硬证据:一篇论文设计了"把选择题里的正确答案挖掉、让模型填空"的实验,看它能不能背出那道题原本的选项。结果在 MMLU 上,ChatGPT 的精确命中率是 52%,GPT-4 是 57%——它们不该知道被挖掉的是什么,除非见过。
另一条证据来自"无污染版考卷":研究者另建了一份抗污染的选择题集(MMLU-CF,原版题源更广、还做了去污染处理)。在这个版本上,GPT-4o 的 5 次示范得分是 73.4%;而同一代模型在原版 MMLU 上普遍报的是 88%~90% 一档。这个落差不能全部归因为污染(题目也换了、更难了),但它是"高分里有一部分是记性"的一个有力提示。
失真二:题目本身有错
考卷是人做的,会有错题:答案写错了、条件不完整、有多个正确选项。斯坦福《2026 AI 指数报告》转述的一项综述给出的量级是:无效题比例从 MMLU 数学的 2% 到 GSM8K 的 42%。另有论文提出用统计方法自动筛出可疑题目再交专家复核,在九份常用考卷上达到最高 84% 的命中精度。
为什么这对你重要:错题会同时压低所有人的分数、并给分数加上一层无法消除的噪音。**当一份考卷有 42% 的题目可疑时,它上面的名次基本不能用来做决策。**
失真三:判卷裁判自己有偏见
开放题的分数往往来自"模型当裁判"。前面说过,这类裁判和人类偏好的一致率能超过 80%,但它有已知的三种系统偏见:偏爱排在前面的回答(位置偏见)、偏爱更长的回答(啰嗦偏见)、偏爱像自己风格的回答(自我增强偏见)。
后果很直接:一个模型只要学会写得更长、更早给结论,就能在裁判那里白拿分——而这些特点与你"想要准确答案"的目标可能毫无关系。这就是为什么看这类榜单时要问一句:它给裁判做了位置随机化吗?有没有对照人类评分校准?
失真四:刷榜——在榜单的分布上过拟合
这是最像"作弊"的一种,而且它未必违反任何规则。一篇名为《排行榜幻象》(The Leaderboard Illusion)的研究把它写得非常具体:
- 大厂可以私下测试多个版本再决定公布哪一个。研究者识别出 Meta 在 Llama-4 发布前测试了 27 个私有变体;分数如果不好看,还可以撤下。
- 数据获取不对等:研究者估算 Google 与 OpenAI 分别拿到 Arena 全部数据的约 19.2% 和 20.4%,而83 个开放权重模型加起来只有约 29.7%。
- 论文的结论是:这些机制让分数更多反映"对榜单环境的适应",而不是通用能力。
与此同时,Arena 官方并不否认"偏好分"的价值,它公布的规模数据(8,200 万票、7 亿次对话)说明它测量的是真实使用中的偏好。双方的分歧点我放在 09 节,两边立场都会摆出来。
失真五:饱和——考卷被打满,就失去了区分度
一份考卷只有在"大家都做不完"的时候才有区分度。斯坦福 2026 报告的原话是:能力正在跑赢为它设计的考卷——前沿模型在一年之内于 HLE 上提高了 30 个百分点,"本打算难住 AI 几年的评测,几个月就被打满,能用来跟踪进步的时间窗口被压缩了"。
这就是为什么你每年都会看到新名字取代旧名字当头条(MMLU → MMLU-Pro → GPQA → HLE)。也是为什么"某个模型在 MMLU 上超过另一个"这种消息,参考价值在快速下降。
失真六:运行残留与运行波动
这是最朴素、也最容易被忽略的一种:榜上是别人的一次运行。运行会失败、会有配置错误、会受当天服务波动影响。我在榜单原始数据里就找到了两条直接的痕迹:同一次提交的 0/500 记录(见 05),以及同一个模型两次提交相差 2.4 个百分点。
把六种失真变成两个动作
"X 在榜单上是第一,所以我们用 X。"
风险:你同时踩中了全部六种失真——你不知道这份考卷考什么(口径)、题目有没有错(失真二)、模型有没有见过题(失真一)、裁判偏不偏心(失真三)、名次有没有被运营出来(失真四)、那次运行是不是成功的(失真六)。
用分数把选择范围从"几十个模型"缩到"三个候选",再用自己的任务做最终判断(11)。
好处:六种失真全都只能影响"筛",不能影响"定"。你的任务不可能被污染,你的验收标准不会偏心。
07准确率、Elo、加权分、你的体感:四个别混的东西
"分数"这个词在新闻里被用来指四种完全不同的东西。它们各自回答不同的问题,混着用就会得出错误结论。
| 你看到的数字 | 它实际是什么 | 它回答什么问题 · 不能回答什么 |
|---|---|---|
| 准确率 例:MMLU 88% |
答对题目的比例。分子是答对数,分母是总题数。判卷靠标准答案,不含人的判断。 | 回答:"在这份固定题集上,它答对了多少。" 不能回答:"这 88% 里有多少是背过的"(见数据污染),也不能换算成"它在我的任务上有 88% 的成功率"。 |
| Elo / 相对强度分 例:Arena 上 Anthropic 1,503 |
从大量两两胜负里推算出来的相对分。Elo 就是国际象棋用的那套等级分:赢强手涨得多、输弱手掉得多。它没有"满分",只有"比谁高多少"。Arena 用的数学近亲叫 Bradley-Terry,思路一样。 | 回答:"在两个回答必须选一个时,人更常选谁。" 不能回答:"谁更准确"、"谁更便宜"。而且 Elo 是相对的:新人进来、旧人退榜,同一个分数的含义都会变。 |
| 加权合成分 例:某"智能指数 68 分" |
把多项评测按人为设定的权重平均成一个数(如智能体 30%、编程 20%、科学推理 20%、通用 30%)。 | 回答:"在这套权重下,谁的综合表现更好。" 不能回答:"哪一项最强"——你必须点开分项看。换权重就换名次,这是算术,不是造假。 |
| 你的体感 | 你在自己任务上的实际结果:它答对了几次、返工了几次、花了多少钱。 | 回答:"在我这件事上它行不行。" 不能回答:"对别人行不行"——所以别人的体感也不能替你决定。它是唯一能作最终裁决的证据,但样本一定要够(11)。 |
最容易混的三对
"Arena 上这个模型 1,503 分,准确率应该很高。"
为什么诱人:数字大、排序清楚,看起来就像考试成绩。但 Elo 分是从"人更喜欢哪个"推出来的,一个更会讨人喜欢的回答可能是更不准确的回答。
Elo 高说明在人眼里的观感更好——这对写作、客服话术、创意类任务是有效信号;对"抽取一个金额""算对一个数"这类任务,它几乎不提供信息,你该去看精确匹配类考卷或自己测。
"它在综合榜上第一,所以各个方面都最好。"
为什么诱人:排名文化让我们习惯"第一名=最强"。但综合分是加权平均,一个在编程上极强的模型,完全可能因为权重里编程只占 20% 而排在第三。
要写代码就看编程分项(SWE-bench / Terminal-Bench / LiveCodeBench),要中文问答就看多语言分项。综合分只用来"大致筛池子"。
"分数最高的那个我直接用就行。"
为什么诱人:省事。但你会在成本与延迟(延迟:从你提问到它开始出结果要等多久)上付出代价——我在 08 节算出的例子里,两个模型分数只差 1 个百分点,贵的那个每题贵 10.3 倍。
真实决策里至少有四个目标:够用(分数)、便宜(单价)、快(延迟)、稳(不编造、不失败)。分数只贡献第一项,而且是"及格线"性质的第一项。
准确率答"对不对",Elo 答"讨不讨人喜欢",加权分答"按别人的权重谁强",你的体感答"对我行不行"。只有最后一个是替你回答问题的。
08我自己算的数:1 分之差算不算差
这一节不引用任何人的结论——数字是我从榜单的原始数据里自己算出来的,并且把复算方法完整给你。
数据从哪来:榜单页里内嵌了每一道题的结果
SWE-bench 官网的排行榜页面里,藏着一份原始 JSON(JSON:一种机器容易读的数据格式,长这样 {"date": "2026-02-17", "resolved": true}):它记录了每一份提交(模型 + 脚手架 + 日期)在每一道题上是否解决、花了多少钱。这意味着我不需要相信页面上的汇总百分比,可以自己重算——这是判断"分数可不可信"最实用的一个动作:能拿到原始数据,就别只看汇总分。
curl -sL -A "Mozilla/5.0" https://www.swebench.com/ -o swebench.html
ls -la swebench.html # 约 2.4 MB,数据就在里面
我算出来的表(2026-09-13 抓取,SWE-bench Verified,500 题)
下面的"平均每题成本"是我用原始数据里每题的花费求平均得到的,页面上并不直接给这个数:
| 提交(模型 + 日期) | 解决 / 总题数 | 我算出的平均每题成本 · 这一轮总花费 |
|---|---|---|
| Claude 4.5 Opus(2026-02-17) | 384 / 500 = 76.8% | $0.754 / 题 · 全轮 $376.95 |
| Gemini 3 Flash(2026-02-17) | 379 / 500 = 75.8% | $0.356 / 题 · 全轮 $177.98 |
| MiniMax M2.5(2026-02-17) | 379 / 500 = 75.8% | $0.073 / 题 · 全轮 $36.64 |
| Claude 4.6 Opus(2026-02-17) | 378 / 500 = 75.6% | $0.552 / 题 · 全轮 $275.76 |
| GPT 5.2(2026-02-17) | 364 / 500 = 72.8% | $0.474 / 题 · 全轮 $236.78 |
| DeepSeek V3.2(2026-02-17) | 350 / 500 = 70.0% | $0.448 / 题 · 全轮 $223.92 |
| o3(2025-07-26) | 292 / 500 = 58.4% | $0.334 / 题 · 全轮 $166.83 |
| Claude 4.5 Opus(2025-11-24,同一个模型) | 372 / 500 = 74.4% | $0.721 / 题 · 全轮 $360.62 |
| Gemini 3 Pro(2026-02-26) | 0 / 500 = 0.0% | $0.96 / 题(500 题全部记为未解决) |
结论一:那 1 个百分点,这份考卷分不出来
76.8% 和 75.8% 差 1 个百分点。如果按"两个独立样本"粗算,p 值约 0.71——完全不显著。但更严谨的做法是配对检验:这两个模型做的是同一批 500 道题,所以该看的不是"两个总分",而是"只在一边对、另一边错的那些题有多少"。
统计上这叫 McNemar 检验(读作"麦克尼马")。它的逻辑很好懂:两边都对、两边都错的题不提供任何区分信息,只有一边对一边错的题才是线索;如果线索在两边平分,就说明两者真的差不多。
p 值回答的是"如果两者其实一样强,出现这种差异的概率有多大"。p 越小,"它们其实一样"这个解释就越站不住。
· p > 0.05:通常认为不显著,这个差异可能是随机波动——不能说谁更好。
· p < 0.05:显著,随机波动不太容易解释出这么大的差异。
注意它只回答"差异像不像噪声",不回答"这个差异对你重不重要"——那是你的判断,见 10。
我算的结果:
| 比较的两份提交 | 都对 | 都错 | 仅前者对 / 仅后者对 | 这个差异算真差距吗 |
|---|---|---|---|---|
| Claude 4.5 Opus 76.8% 对 Gemini 3 Flash 75.8% | 355 | 92 | 29 / 24 | 不算(p ≈ 0.58)——虽然差了 1 个百分点 |
| Claude 4.5 Opus 76.8% 对 MiniMax M2.5 75.8% | 354 | 91 | 30 / 25 | 不算(p ≈ 0.59) |
| Claude 4.5 Opus 76.8% 对 GPT 5.2 72.8% | 344 | 96 | 40 / 20 | 算(p ≈ 0.013) |
| Claude 4.5 Opus 76.8% 对 DeepSeek V3.2 70.0% | 335 | 101 | 49 / 15 | 算,很明确(p ≈ 0.000) |
| Claude 4.5 Opus 76.8% 对 o3 58.4%(2025-07 那轮) | 284 | 108 | 100 / 8 | 算,非常明确(p ≈ 0.000) |
请注意第二列和第三列——91 到 101 道题是两边都错的。也就是说,即使是最好的模型,在这份考卷上也有五分之一的任务解决不了。这个数字对你比"谁第一"有用得多。
结论二:同一个模型,换个提交日期就换个分数
Claude 4.5 Opus 在 2026-02-17 那轮是 76.8%,在 2025-11-24 那轮是 74.4%。同一个模型名、同一套脚手架、同一批题,差 2.4 个百分点(配对检验 p ≈ 0.12——连"同一个模型两次运行"的差异都达不到统计显著,可见这个量级的波动有多常见)。
这一条对你有两个直接后果:看到"某模型 76 分"时必须带日期;以及不要拿三个月前的分数去和今天的分数排名次。
结论三:真正的差距常常在成本,不在分数
MiniMax M2.5 与 Claude 4.5 Opus 在这份考卷上只差 1 个百分点(且不显著),但平均每题成本差 10.3 倍($0.073 对 $0.754),跑完整轮差 10.3 倍($36.64 对 $376.95)。
如果你的任务量和这 500 道题相当,选择就从"哪个分高"变成了"为了那 1 个百分点(还可能是噪声),你愿不愿意多花 340 美元"。这就是"把分数当筛子"的实际含义:分数帮你排除不行的,成本帮你决定用哪个。
结论四:榜单里也留着失败的运行
同一张榜上有一条 Gemini 3 Pro(2026-02-26)的提交,500 题全部记为未解决、0%。同族其它提交都在 70% 以上,所以最合理的解释是那一次运行本身出了问题,而不是模型突然不会写代码。但它就那样留在榜单上。
教训:看榜单先扫一眼有没有明显异常的行;如果你要引用某个数字,先确认那是一次成功的、配置正确的运行。
完整复算方法(你可以自己跑一遍)
下面这段脚本就是我这节全部数字的来源,逐行可核:
# 1) 先抓榜单页(见上面的 curl 命令),然后跑这段 python3
import json, re, math
s = open("swebench.html", encoding="utf-8", errors="ignore").read()
data = json.loads(re.search(
r'<script type="application/json" id="leaderboard-data">\s*(\[.*?\])\s*</script>',
s, re.S).group(1))
blk = [d for d in data if d["name"] == "Verified"][0]
R = {}
for r in blk["results"]:
pid = r.get("per_instance_details") or {}
if len(pid) < 400:
continue # 只留跑满 500 题的完整提交
R[(r.get("model_display") or r["name"], r.get("date"))] = \
{k: bool(v.get("resolved")) for k, v in pid.items()}
def pair(ka, kb):
A, B = R[ka], R[kb]
common = set(A) & set(B) # 两个模型都做过的题
both = sum(1 for i in common if A[i] and B[i])
neither = sum(1 for i in common if not A[i] and not B[i])
x = sum(1 for i in common if A[i] and not B[i]) # 只有 A 对
y = sum(1 for i in common if B[i] and not A[i]) # 只有 B 对
n = x + y
p = min(1.0, 2 * sum(math.comb(n, i) for i in range(0, min(x, y) + 1)) / 2 ** n) if n else 1.0
sa, sb = 100 * sum(A.values()) / len(A), 100 * sum(B.values()) / len(B)
print(f"{ka[0]} {sa:.1f}% vs {kb[0]} {sb:.1f}%")
print(f" 都对 {both} 都错 {neither} 仅前者对 {x} 仅后者对 {y} p = {p:.4f}")
# 成本:把每一题的花费求平均(榜单页面不直接给这个数)
for name, date in [("MiniMax M2.5", "2026-02-17"), ("Claude 4.5 Opus", "2026-02-17")]:
row = [r for r in blk["results"]
if (r.get("model_display") or r["name"]) == name and r.get("date") == date][0]
pid = row["per_instance_details"]
total = sum(v.get("cost") or 0 for v in pid.values())
print(f"{name}: 平均 ${total/len(pid):.3f}/题,全轮 ${total:.2f}")
pair(("Claude 4.5 Opus", "2026-02-17"), ("Gemini 3 Flash", "2026-02-17"))
pair(("Claude 4.5 Opus", "2026-02-17"), ("Claude 4.5 Opus", "2025-11-24"))
① 我算的是榜单上已提交的运行,不是我自己跑的模型,所以没法验证它们当时的配置是否最优;
② 两次运行的脚手架同名(mini-SWE-agent),但版本可能不同,这也是"同模型不同日期差 2.4 个百分点"的候选解释之一;
③ 成本字段是该次运行记录的花费,不含你本机算力、也不含排行榜未记录的开销;
④ p 值只回答"差异像不像随机波动",不回答"这个差异对你重要不重要"——那是你的判断。
09争议现场:当榜单本身成了战场
这一节把一场真实的争执摆出来。双方的原话我都留着,判断我也给,但你会看到我凭什么这么判。
榜单方(Arena)的立场:偏好是唯一能覆盖开放任务的信号
Arena(原 Chatbot Arena,LMSYS 团队)的方法在论文里写得很清楚:配对比较 + 众包投票 + 统计模型排名,并专门验证了两件事——众包的问题足够多样且有区分度;众包投票与专家评分的一致性良好。它的规模也确实惊人:官方 2026 年 6 月公布,平台已有 7 亿次以上对话、8,200 万张以上选票。
它还在持续补短板。2026 年的官方公告里能看到一串动作:7 月上线事实性榜单(同一个模型既排"人更喜欢谁",也排"回答的事实准确度");7 月底引入 AutoEval(在人类投票攒够之前,先用自动评分给出一个校准过的临时分);8 月给智能体榜单加了分类和"完成这个任务要花多少钱",官方给的理由原话是:"只看性能的单一智能体榜单已经不够了——决定用哪个模型的是两个问题:这类任务哪个最好,以及干完这件事要花多少钱。"
研究方的立场:这套机制让大厂能挑出最好看的那次
2025 年的一篇论文《排行榜幻象》(The Leaderboard Illusion)对这些机制提出了系统质疑,它的发现包括:
- 厂商可以私下测试多个模型变体,再把最好看的那个公开——研究者识别出 Meta 在 Llama-4 发布前测试了 27 个私有变体,且分数可以撤回。
- 数据获取不对等:估算显示 Google、OpenAI 各拿到约 19.2%、20.4% 的对战数据,而 83 个开放权重模型合计只有约 29.7%。
- 结论是这些机制让人"对榜单环境的适应"胜过了"通用能力",并给出了改革建议。
这里说的"过拟合"值得单独解释一下:它指一个系统在某个特定环境里被反复调整,以至于只对这个环境有效、换个环境就不灵——就像学生把某套模拟题的答案背熟了,模拟考分数很高,但没学会解题。
这个质疑不是孤例。斯坦福《2026 AI 指数报告》在"评测的可靠性与被操纵的担忧"一条里,也把这类研究并列写了进去:"另有研究表明,Arena 榜上的位置可能部分反映的是'对平台的适应',而不是通用能力。"这句话出自一份以中立著称的行业报告,所以它至少说明:质疑不是圈内人的酸话。
两边在争什么、不争什么
| 问题 | 榜单方(Arena) | 研究方(Leaderboard Illusion) | 我的判断(附依据) |
|---|---|---|---|
| "人类偏好"值得测吗? | 值得。开放任务没有标准答案,人的选择是唯一可规模化的信号。 | 不反对。论文明确肯定了平台的价值,只质疑机制的公平性。 | 值得。但要把它当"观感"而不是"正确性"(07)。 |
| 厂商能私下测试吗? | 这是行业惯例,且平台已在更新规则(例如新增的自动评分与事实性维度)。 | 能私下试多个变体、还能撤回分数,本身就是选择性发布,会系统性抬高某些厂商。 | 研究方这条说得对。因为它不依赖任何内幕——只要"试多个、公布最好的"成立,分数就带着选择偏差。 |
| 分数反映能力还是适应? | 两者都有,但规模化的真实偏好是能力的一种外显。 | 数据获取与抽样政策的不对等,足以让"适应"盖过"能力"。 | 我无法判定比例。所以实践上:把 Elo 用于排序方向,不用于定量结论。 |
① 看一个榜单,先看它有没有公开"谁能提交、能不能撤回、抽多少数据"——不公开这三样,名次就只能当传闻(这正是 06 失真四的操作含义)。
② 优先看那些补了短板的榜单:加了事实性、加了"任务成本"、加了分类的榜单,比只给一个总分的榜单更接近你的决策。
③ 记住两边的共同点:没有人说"榜单没用"。争的是"能用到什么程度"。这也正是本文的立场。
10选模型时,这些分数到底能帮你做什么
直接回答那个问题:分数在你选模型时,是一个高效的"粗筛器",但它从来不是"裁判"。下面把它能做与不能做的分开列清,再给一条能照着走的路。
分数能帮你做的三件事
你不需要读完全部榜单。用与你任务相关的分项分划一条线,把候选压到三个以内——这一步省下的是你最贵的东西:时间。
榜单给了同分段的选项之后,去查它们的单价与速度(下面给了查法)。很多时候你会发现在乎的那点分数差,代价是十几倍成本(08)。
"编程 90、长文本 62"比"综合 78"有用得多——前者直接告诉你它在哪会翻车,后者什么也没说。
分数不能帮你做的三件事
| 做不到的事 | 为什么 | 该用什么替代 |
|---|---|---|
| 替你决定 | 你的任务大概率不在任何考卷里——世界上没有"帮我审这份合同里对我方不利的条款"这份考卷。 | 你自己的 20 道题(11)。这是唯一能回答"对我行不行"的证据。 |
| 保证稳定 | 同分模型可以表现完全不同:一个可能稳定 75%,另一个可能一半题做到 100%、一半题直接放弃,平均值一样。 | 看方差与失败模式(方差:同一个模型在不同题目上表现的波动有多大——波动大的模型可以"平均下来一样,但一半题很好一半题直接放弃"):如果原始数据公开(很多编程榜单公开),看"都错"的题有多少(08 里是 91~101 道)。 |
| 预测未来 | 模型在更新、题库在更新、脚手架在更新——三样都在变(05)。 | 把你的小考场存成文件,每次换模型/换版本重跑一遍。这是唯一能跟上变化的方式。 |
照着走的四步流程
不是"我要写代码",而是"把这份 Excel 的地址列拆成省/市/区三列,允许人工核对,错误率要低于 2%"。验收标准必须能判对错,否则第 4 步没法进行。
用下面那张场景表定位。关键是把你的任务映射成"判卷方式":能判对错 → 看精确匹配/自动测试类考卷;不能判对错 → 看偏好类,并接受它带偏见。
用下面那段命令现场查输入输出单价、上下文长度(上下文长度:一次能放进去多少文字)。注意:自己查永远比记数字可靠——这些数字每个月都在动。
方法、脚本与判分标准见 11。这一天的投入,会替你省下以后每个月"选错了"的返工。
场景索引:你的活 → 该看哪个分项
| 你要做的事 | 优先看这类考卷 | 还要额外查什么 |
|---|---|---|
| 改现有代码库的 bug/加功能 | SWE-bench Verified、Terminal-Bench 这类自动测试判分的考卷 | 脚手架是否与你将使用的工具同类;平均每题成本(08 的算法) |
| 写独立的小函数/算法题 | LiveCodeBench 这类抗污染的竞赛编程考卷 | 它的题偏算法,未必反映工程能力——别用它预测项目交付 |
| 从文档里抽取结构化字段 | 长文本类分项(AA-LCR 这类长文本推理考卷)+ 精确匹配类 | 上下文长度(一次能放多少文字)与"长文档里找答案"的实测 |
| 写作、改写、客服话术 | 人类偏好类(Arena 及各类分类榜)+ 事实性榜 | 把"事实性"和"偏好"两个榜一起看——它们会打架,打架的地方正是你要自己测的地方 |
| 中文/多语言任务 | 多语言分项(如 Global-MMLU-Lite 这类跨语言评测) | 别用英文总榜代替:多数综合指数自己声明"以英文文本为主" |
| 做研究、答专业硬问题 | GPQA Diamond(198 题,专家 65% 参照)、HLE(2,500 题) | 这两份考卷都极难且分数更新快,适合看"天花板"而不是选型 |
| 要"不编造、能承认不知道" | 把答对率与编造率分开报的榜单(如把幻觉率单独计分的那类) | 编造率必须单独看:一个模型可能答对率更高、同时编造也更多 |
现场查价格与上下文长度(别记数字,现场查)
模型价格几乎每月都变,所以正确做法是查而不是背。下面这段命令会从一个公开的模型目录接口拉回实时价格:
curl -sL https://openrouter.ai/api/v1/models -o models.json
python3 - <<'PY'
import json
d = json.load(open("models.json"))["data"]
want = {"anthropic/claude-opus-5", "google/gemini-3.5-flash", "deepseek/deepseek-v4-flash-0731"}
for m in d:
if m["id"] in want:
p = m["pricing"]
print(f'{m["name"]:40} 输入 ${float(p["prompt"])*1e6:6.3f} / 输出 ${float(p["completion"])*1e6:6.3f} 每 100 万 token 上下文 {m["context_length"]:,}')
PY
我在 2026-09-13 跑出来的结果(带日期看,它一定会变):
DeepSeek: DeepSeek V4 Flash 0731 输入 $ 0.040 / 输出 $ 0.080 每 100 万 token 上下文 1,310,720
Claude Opus 5 输入 $ 5.000 / 输出 $25.000 每 100 万 token 上下文 1,000,000
Google: Gemini 3.5 Flash 输入 $ 1.500 / 输出 $ 9.000 每 100 万 token 上下文 1,048,576
token(读作"托肯")是模型处理文字的最小单位,也是计费单位——一段中文大约 1 个字 0.6~1 个 token,具体取决于模型的切分方式。所以"输入 $0.04 / 每 100 万 token"的意思就是:你喂给它 100 万个 token 的文字,付费约 0.04 美元。上表里最贵的输入价格是最便宜的 125 倍——而这个差距,任何"分数榜"都不会替你算进去。
11自己搭一个 20 题的小考场
到此为止,你已经知道别人的分数能信到什么程度。最后一件事是:给自己建一份考卷。这是本文唯一"你要动手做"的部分,也是收益最大的部分——因为它一次性解决全部六种失真。
为什么非做不可
因为你关心的事情几乎一定是长尾(不常见、但对你有决定性影响的任务)。公开考卷为了对所有人都有用,只能考"大家都在做的事";而你的事,只有你知道验收标准是什么。
20 道题怎么挑
| 怎么挑 | 具体做法 | 为什么要这样 |
|---|---|---|
| 从真实工作里挑 | 把你最近两周真的处理过的 20 个任务写下来,抽掉敏感信息后当题目。 | 分布对得上,比任何公开考卷都贴近你。 |
| 有意混入边界情况 | 20 题里至少留 4~5 道"故意刁难"的:格式不规范的输入、空值、互相矛盾的指令、你上次被坑过的那类。 | 真实任务失败都在边界上,不在主流程上。 |
| 每题预先写下标准答案的关键片段 | 答案不是"看起来不错",而是 1280、We are not working today 这种能自动比对的片段。 | 能自动判分,才能重复跑、才敢相信结论。 |
| 不要挑你也不会的题 | 你自己都要查半天的题,判分就没有标准。 | 考试要先有标准答案。 |
题库长这样(三列 CSV)
CSV 就是"用逗号分隔的纯文本表格",任何表格软件(Excel、Numbers)都能直接打开;你也可以直接用文本编辑器写。
case.csv —— 三列:编号,题目,标准答案里的关键片段
id,prompt,expected
case-01,"把这句话翻译成英文:我们今天不上班。","We are not working today"
case-02,"从这段文字里抽出金额:发票合计 1,280 元","1280"
脚本(已实测可跑;换个模型改一个参数就行)
#!/usr/bin/env python3 —— 存成 mini_eval.py
"""自己的小考场:把 case.csv 逐条跑一遍,输出分数与 95% 误差范围。
用法:LLM_API_KEY=xxx python3 mini_eval.py --model deepseek-chat
"""
import argparse, csv, json, math, os, re, urllib.request
def ask(base, key, model, prompt):
body = json.dumps({
"model": model,
"messages": [{"role": "user", "content": prompt}],
"temperature": 0, # 温度 0 = 尽量少随机,便于复现
}).encode()
req = urllib.request.Request(
base.rstrip("/") + "/chat/completions",
data=body,
headers={"Content-Type": "application/json", "Authorization": "Bearer " + key},
)
with urllib.request.urlopen(req, timeout=180) as r:
return json.load(r)["choices"][0]["message"]["content"]
def grade(text, expected):
# 去掉空格与标点再比对:避免"格式不同"被误判成答错
norm = lambda s: re.sub(r"[\s,.,。、::;;\"'()()]+", "", s).lower()
return norm(expected) in norm(text)
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--csv", default="case.csv")
ap.add_argument("--model", required=True)
ap.add_argument("--base", default="https://api.deepseek.com/v1") # 任何兼容接口都能换
ap.add_argument("--key-env", default="LLM_API_KEY")
a = ap.parse_args()
key = os.environ[a.key_env]
rows = list(csv.DictReader(open(a.csv, encoding="utf-8")))
ok = 0
for i, row in enumerate(rows, 1):
got = ask(a.base, key, a.model, row["prompt"])
good = grade(got, row["expected"])
ok += good
print(f"{i:3} {'OK ' if good else 'MISS'} {row['id']} -> {got[:70]!r}")
n = len(rows)
p = ok / n
hw = 1.96 * math.sqrt(p * (1 - p) / n)
print(f"\n{a.model}: {ok}/{n} = {p * 100:.1f}% 95% 区间 [{max(0, p - hw) * 100:.1f}, {min(1, p + hw) * 100:.1f}]")
if __name__ == "__main__":
main()
跑起来:
export LLM_API_KEY="你的密钥" # 密钥 = 你在服务商后台生成的那串字符,不要写进代码里提交
python3 mini_eval.py --model deepseek-chat
# 换一个模型再跑一遍,两次的分数才有比较意义
python3 mini_eval.py --model gemini-3.5-flash --base https://你的服务商/v1
分数出来了,怎么读
| 你跑出来的结果 | 能得出的结论 | 不能得出的结论 |
|---|---|---|
| 20 题里 A 对 17 道、B 对 12 道(95% 区间分别约 ±14 与 ±19 个百分点) | 差距大到 5 道题,方向可信——A 更可能适合你。 | 不能说"A 有 85% 的成功率"——20 题的误差范围接近 ±15 个百分点,样本太小。 |
| 20 题里 A 对 15、B 对 14 | 什么结论都没有。 | 不能挑 A——这个差距在 20 题上完全是噪声(03 的表)。 |
| A 全对,但错误高度集中在"格式不规范"那 3 道 | 真正有用的结论:给 A 加一段格式约束可能就够了。 | 不能说"A 更好"——要看你的输入到底有多不规范。 |
三种判分方式,按可靠程度选
抽取、翻译、分类、算数这类任务都能写出"标准答案的关键片段"。最可靠、最便宜、可重复。先试这条路,试不通再往下。
给你自己的代码写几条自动检查(哪怕只有三条),跑通过才算对。这就是 SWE-bench 的做法,也是唯一能证明"它真的改对了"的方式。
做法:把评分标准写成 3~5 条可判定的要求;把两个模型的答案顺序随机打乱(防位置偏见);限制字数上限(防啰嗦偏见);并且至少人工盲评 10 条校准一次(防裁判系统性偏心)。
把 case.csv 存进项目目录,随任务积累慢慢加题。以后每次有新模型发布,你只需要跑一条命令——你自己的榜单就更新了,而且它测的正好是你关心的东西。这份文件的价值会随你的使用一直涨,比任何一个公开榜单都更贴合你。
12常见问题
13术语表
这张表只收本文反复出现、且你以后看榜单公告时一定会再遇到的词。第三列是"怎么用",不是翻译。
| 术语 | 用日常语言说就是 | 为什么重要 / 什么时候用 · 别当什么用 |
|---|---|---|
| 基准测试(benchmark) | 一份固定的考卷,外加一套固定的判分规则。 | 它是"分数的分母"。别把它当能力清单——它只覆盖它考到的那点东西。 |
| 准确率(accuracy) | 答对题数 ÷ 总题数。 | 读它之前先问两件事:瞎猜能得几分(四选一 25%、十选一 10%)和人类专家几分。没有这两个参照,数字没有意义。 |
| pass@1 | 只给一次机会,答对就算对。 | 编程与智能体考卷的常用口径,最接近真实使用。别把它和"试 10 次有一次成功"的分混着比——后者会高得多。 |
| 脚手架(scaffold / agent harness) | 包在模型外面、替它动手的那套程序:循环、工具、文件读写、命令执行。 | 现代编程类分数大部分由它贡献。看到编程分数必须问"配的哪套脚手架、什么版本"。 |
| 提示词(prompt) | 你喂给模型的那段输入文字。 | 同一模型换问法分数就变(原版 MMLU 上波动 4%~5%)。所以分数里含着"怎么问"的成分。 |
| few-shot / zero-shot | 答题前先给几个示范例子 / 一个都不给。 | 给例子通常会让分数变高。看到分数先确认是哪种——两者不可直接比较。 |
| 思维链(Chain of Thought) | 让模型先把推理过程写出来,再给最终答案。 | 在推理型考卷上普遍提分。所以"允许写过程"与"只给答案"是两种口径。 |
| 数据污染 | 考题提前进了模型的训练资料,于是它"背过"。 | 这是高分最常见的水分来源。判断法:看这份考卷是否按时间切题(只考模型训练之后才出现的题)。 |
| 饱和(saturation) | 所有人都考到接近满分,考卷失去区分度。 | 它是"为什么每年都换新考卷"的原因。看到某个榜单上头部挤成一团,就该换一份看。 |
| 置信区间 / 误差范围 | 分数的不确定范围,通常写"±多少"。 | 比较两个分数前必看:区间重叠时,名次差异不构成证据(03 给了公式与算例)。 |
| Elo / Bradley-Terry | 从两两胜负推出来的相对强度分,和棋类等级分同一个思路。 | 它答"人更喜欢谁",不答"谁更准"。而且它是相对的:榜单成员一变,同一个分数的含义就变。 |
| LLM 裁判 | 用另一个模型给答案打分。 | 开放题几乎只能这么做,但必须知道它有位置、啰嗦、自我增强三种偏见;用之前问它有没有做顺序随机化与人类校准。 |
| token | 模型处理文字的最小单位,也是计费单位。 | 它是"成本的计价器"。中文大约 1 个字 0.6~1 个 token,取决于模型怎么切分。 |
| 上下文长度 | 模型一次能"看见"多少文字。 | 做长文档任务时的硬门槛:超过这个长度的内容它根本看不见,分数再高也没用。 |
| 长尾任务 | 不常见、但对你有决定性影响的任务。 | 公开考卷天然测不到它。这是你必须自己建小考场的根本原因(11)。 |
| 加权平均 | 先把各项乘上不同比重再相加。 | "综合分"的本质。看到综合分先找权重表——找不到,这个数就不可解释。 |
99一句话总结
大模型的分数不是能力证书,而是一份考卷的成绩单——它是"在固定题集、固定判卷规则、固定脚手架下的平均分",所以它必然带着三样东西:考卷的偏向(它测什么)、测量的误差(几百道题的榜上 1~3 分常常是噪声)、以及跑分者的口径(权重、抽题、日期、是谁跑的)。它会被六种机制带偏:数据污染、错题、裁判偏见、刷榜、饱和、运行残留。
但这不意味着它没用。它的正确用法只有一句:把它当筛子,不当裁判——用分项分把几十个模型筛到三个,用单价与延迟决定性价比,最后用你自己那 20 道题做唯一有裁决权的判断。读完这一篇,你应该能在看到任何"某某模型得分 XX"时,条件反射地补上四个问题:考的什么、多少题、什么口径、什么时候跑的。
98参考来源与证据边界
本文所有事实性陈述都能追到下面这些来源。我把"哪句来自哪里"写出来,方便你核对,也方便你知道我没读什么。
考卷本身的原始论文(一手)
- MMLU(2020):57 个学科、四选一、模型"常常不知道自己错"与"道德法律接近瞎猜"的结论 ——
arxiv.org/abs/2009.03300 - MMLU-Pro(2024):选项 4→10、准确率下降 16%~33%、24 种问法下波动 4%~5%→2% ——
arxiv.org/abs/2406.01574 - GPQA(2023):448 题、专家 65%、非专家 34%(可上网、平均 30 分钟以上)、GPT-4 基线 39%;Diamond 子集 198 题的说明在全文正文里 ——
arxiv.org/abs/2311.12022、全文ar5iv.labs.arxiv.org/html/2311.12022 - HLE(2025,更新至 2026):2,500 题、专家出题、不可快速检索;"LLM 已在 MMLU 这类流行基准上超过 90%" ——
arxiv.org/abs/2501.14249 - SWE-bench(2023):2,294 个真实 GitHub 问题、12 个 Python 仓库、发布时最好模型仅 1.96% ——
arxiv.org/abs/2310.06770 - Chatbot Arena(2024):成对比较 + 众包投票 + 统计排名;当时累计 24 万票;众包与专家评分一致性 ——
arxiv.org/abs/2403.04132 - MT-Bench / LLM-as-a-judge(2023):强模型裁判与人类偏好一致率超 80%;位置、啰嗦、自我增强三种偏见 ——
arxiv.org/abs/2306.05685 - LiveBench(2024,更新至 2025):每月更新题目、客观自动判分、顶尖模型低于 70% ——
arxiv.org/abs/2406.19314 - LiveCodeBench(2024):三个竞赛平台持续收题、论文时点 400 题、2023-05 至 2024-05 ——
arxiv.org/abs/2403.07974 - 数据污染的实测证据(2023):挖空选项让模型填空,ChatGPT 命中 52%、GPT-4 命中 57% ——
arxiv.org/abs/2311.09783 - 无污染版 MMLU-CF(2024):GPT-4o 5-shot 73.4%、0-shot 71.9%;测试集不公开 ——
arxiv.org/abs/2412.15194 - 《排行榜幻象》(2025):Meta 在 Llama-4 前测试 27 个私有变体;Google 19.2%、OpenAI 20.4%、83 个开放权重模型合计 29.7% ——
arxiv.org/abs/2504.20879 - 《AI 基准里的奇妙 bug》(2025):用统计方法筛出可疑题目交专家复核,最高 84% 精度 ——
arxiv.org/abs/2511.16842
行业报告与官方页面
- 斯坦福《2026 AI 指数报告》第 2 章(技术表现) —— 前沿模型一年内在 HLE 提高 30 个百分点、评测被压缩的窗口期、"无效题比例从 MMLU 数学 2% 到 GSM8K 42%"、Arena Elo 前六名(2026-03:Anthropic 1,503 / xAI 1,495 / Google 1,494 / OpenAI 1,481 / Alibaba 1,449 / DeepSeek 1,424)、开源与闭源差距、中美差距、IMO 金牌与 ClockBench 50.6% 对 90.1%、OSWorld 12%→66.3%、机器人真实家务 12% ——
hai.stanford.edu/ai-index/2026-ai-index-report/technical-performance - Artificial Analysis 评测方法学(智能指数 v4.3) —— 10 项评测与 30/20/20/30 的权重、各评测权重与重复次数、HLE 只取 2,158 道文本题、整体 95% 区间 ±1% 以内而单项更宽、"以英文文本为主"的自我限定 ——
artificialanalysis.ai/methodology/intelligence-benchmarking - Arena 官方博客 —— 2026-06:"7 亿次以上对话、8,200 万张以上选票";2026-07-14 事实性榜单;2026-07-30 AutoEval;2026-08-14 智能体榜单加分类与"任务成本"(含"决定用哪个模型的是两个问题:这类任务哪个最好、干完要花多少钱"的原话) ——
lmarena.ai/blog - SWE-bench 官网排行榜 —— 页面内嵌的原始 JSON(每份提交、每道题的解决与否与花费) ——
www.swebench.com - Hugging Face 数据集服务 —— 题量的权威来源:MMLU 测试集 14,042(总 115,700)、MMLU-Pro 测试集 12,032、GSM8K 测试集 1,319、SWE-bench Verified 500、MATH 12,500 ——
datasets-server.huggingface.co/size?dataset=cais/mmlu等(取单题原文用…/rows?dataset=cais/mmlu&config=all&split=test&offset=0&length=2) - OpenRouter 模型目录接口 —— 本文价格与上下文长度的现场查询入口 ——
openrouter.ai/api/v1/models
本文自己算的部分
- 第 08 节的全部数字(每份提交的解决率、平均每题成本、全轮成本、McNemar 配对检验的 p 值):从 SWE-bench 官网内嵌 JSON 重算,脚本已完整给出,你可逐行复现。原始数据抓取时间 2026-09-13。
- 第 03 节的误差范围表(±7.8 / ±3.7 / ±2.2 / ±0.7 个百分点):按
1.96 × √(p(1−p)/n)在 p=0.8 下算得,`n` 取真实的题量(100 / 500 / 1,319 / 14,042)。公式与算例都给在正文里。 - 价格倍数(最贵输入价是最便宜的 125 倍、Opus 5 与 DeepSeek V4 Flash 的 5.000 对 0.040):同一接口同一时刻的数据相除得到。
证据边界与时效
- 时效口径。本文的榜单名次、分数、价格都是 2026-09 这个时点的快照;模型版本与榜单随时在变。这也是本文把
learn:shelf-life标为volatile的原因——它的可核对断言(分数、日期、价格、名次)数量密集且上游每月变动。 - 没有做的事。我没有自己跑任何模型(08 的数字来自榜单公开记录的重算,不是我的实测);没有审计任何厂商的发布材料;没有比较各家 API 的工程差异(稳定性、限流、数据留存);也没有做中文场景下的分数实测。
- 一处从简。第 09 节两边立场的呈现,依据的是论文摘要/正文与官方公告的公开表述;我没有采访任何一方,也无法判定"适应榜单"与"真实能力"各占多少比例——这个比例目前没有公开数据能定,本文因此只给做法(当排序方向、不当定量结论),不给数字。
- 一个待核项。GSM8K 的 42% 无效题比例,我读到的是斯坦福 2026 报告对它引用文献的转述;那篇被引论文的原始表格我没有逐题复算(注:我找到的相关论文是《AI 基准里的奇妙 bug》,其摘要未直接给出 42% 这个数)。引用时请按"某综述的结论"理解,不要当成逐题核验过的事实。