ARTICLE · 1116156
一文说明:大模型评测到底怎么做
之前我已经说过 AI 评测在干什么。这篇我详细给大家掰一下,大模型评测到底怎么做。

基线跟业内对齐。企业的题不公开。光看能力分不够。
先说我的观点。这不算自动化测试,也不算功能测试。它是 AI 这几年衍生出来的岗位,而且会一直在。大家可以明年再回头看,这事是不是还这样。
我必须申明一下:一旦接触 AI 评测,就得持续学。榜每年都在换题,老题模型也见过。停下来,后面就接不上。
关于大模型评测,我之前提过两套数据。基线,就是跟业内水平对齐。企业场景,就是你们自己攒下来的数据。这种数据默认不公开。
01先看语言大模型,光看分数不够
新出来的模型都会去打榜。排名越靠前,市场上越好讲。招标、选型、客户对比,人家张口就要这个分。你微调出来的、自己训练出来的,也得知道离这个分数有多远。你要是说自己医疗模型很强,结果中文知识和事实题掉了一截,这个话就站不住。在这个行业里的人都知道这件事。
那客户为什么选 A,不选 B?能力分数肯定要拿出来。但光看个能力分数不行。同样 70 分,一台机器第一个字 0.4 秒就出来,另一台要 3 秒。客服场景里,人等不了 3 秒。吞吐再低一截,同样的并发你就得加卡,账单马上上去。所以模型还要部署到不同显卡、不同加速器上再测一遍。前面的网关,有人用 Go 写;后面推理,很多用 vLLM。这个时候重点看三个数:ttft、tpot、tps。
ttft,就是你发出去之后,第一个字多久出来。用户耐心主要耗在这一段。tpot,就是第一个字出来之后,后面每个字平均多久。整段回答长的时候,这个数决定你要不要等很久。tps,就是这一路服务一秒钟能吐多少 token。它决定你一张卡能扛多少人同时问。三个数都要记在同一次测试旁边:什么卡、什么引擎、开了多大并发、量化没量化。换了任意一个,三个数都要重测。能力分可以不动,这三个数会变。

能力分、自己攒的题、跑起来慢不慢贵不贵,三样都要看。
02老榜单上,我们就在评这六项
回归正题。从老榜单能看出来,语言大模型我们一直在评的就是:数学推理、科学推理、代码生成、指令遵循、智能体、幻觉控制。

我拿 2025 年 9 月那期中文综合榜给大家对一下。那一期就是这六道简答题,一共 1260 道。后面的榜会加项目,也会减项目。看的时候,以当期写的说明为准。当期榜在 SuperCLUE。

拿 2025 年 9 月那期对一下。后面的榜会加减项目。
1、数学推理。业内要么用 GSM8K,要么用 AIME。2024、2025 的卷已经在用,新一年的卷出来再补,别拿还没公开的年份去报分。
GSM8K 是 OpenAI 出的小学数学应用题,大约八千多道,其中测试集一千三百来道。一道题大概 2 到 8 步四则运算。现在还是最常用的数学尺子之一。判分只看最后那个数对不对。过程写得再完整,数错了就是 0 分。
AIME 是美国数学邀请赛的真题。每年两场,每场 15 道,答案是 0 到 999 的整数,代数、几何、数论都有。它比小学应用题难一档。普通大模型刚碰这套题的时候,正确率往往不足 10%。它就是用来看能不能扛住竞赛题的。会做 GSM8K,不代表 AIME 也能做。
题怎么准备、怎么用,我拿 GSM8K 这一类说细一点。官方测试集有一千三百来道。我自己先用 6 道题把流程跑通。这 6 道的分,不能写成官方 GSM8K 的分。你要对外对齐,就用官方测试集,原题别改。改一个数字,这个分就没法跟别人比了。
每条就留这几样:问题、标准答案那个数字、这题从哪来的。过程可以写上,给人自己复查。别拿去跟模型的过程一个字一个字比。
{ "id": 1, "question": "文具店铅笔每支 3 元。小明买 4 支,又买 2 块橡皮共 10 元。他一共花了多少元?", "gold": 22, "rationale": "3*4=12,12+10=22", "source": "gsm8k_teaching" }
用的时候,让模型把最后的数写在 #### 后面,比如 #### 22。程序先找这个标记。找不到,就抓回答里最后一个数字,跟 22 比。一样,这题算过。抓不到数字,这题算没过。6 道都要留下:题号、标准数、抓到的数、过没过、回答原文。然后再算一个对了多少。
为什么一定要约定 ####。模型经常这样答:「铅笔 12 元,橡皮 10 元,所以是 12。」人一看知道它算乱了。程序要是只抓最后一个数,抓到的是 12,跟 22 一对,这题不过,这个判断是对的。可它要是写成「12 加 10 等于 22,前面铅笔是 12」,最后一个数又变成 12,对的那一下反而被抓丢。所以标记得先说死。抓错规则,后面模型换得再勤,分都是虚的。

先用一份已知正确的回答,确认数字抓对了,再换模型。
跑的顺序我是这样的。先把题写成文件。再拿一份你已经知道是对的回答,比如「铅笔 3×4=12,加上橡皮 10,一共 22。#### 22」,跑一遍。这一遍要是不过,先改抓数字的程序,别去怪模型。程序过了,再把这份回答换成模型真的输出。温度开多少、有没有让它先写步骤再给数字,记在这一次旁边。直接报数字,和先写步骤再报数字,会是两个分。步骤对了、最后数错了,这题还是不过。
同一批题,换个模型再跑一遍,比的才是模型。题被你改过,或者只留一个总分、没有每题的原文,这个分就没法跟别人的榜对上,下周你自己也复现不了。
2、科学推理。英文常用 MMLU,几十个学科的四选一。中文常用 C-Eval,一万三千多道,五十多个科目,也是四选一,按选对的比例算分。它考的是学科知识,不是多步应用题。数学推理和科学推理别合成一个「会不会想」。
准备的时候,一条里要有题干、四个选项、正确的那个字母、科目。我举一道教学题,不是真试卷:
{ "subject": "初中数学", "question": "一元一次方程 2x+6=0 的解是?", "options": {"A": "x=3", "B": "x=-3", "C": "x=6", "D": "x=-6"}, "gold": "B" }
用的时候,题面上写清楚:只回答字母。程序抽 A、B、C、D。它把「x=-3」写对了,字母却写成 A,按字母规则这题不过。所以抽取规则要和题面一起定,不能跑完再改。C-Eval 还有一件事:你自己在本地跑的验证集,和网上提交的测试集,不是同一批题,答案也不在你手里。两个分不能搁一起比。
3、代码生成。常用 HumanEval、MBPP。HumanEval 官方 164 道。MBPP 是另一套更基础的 Python 题,题更多,判法一样:看测试过不过。
题面只给函数名和说明,比如「写一个 clamp,把 x 限制在 lo 和 hi 之间,如果 lo 比 hi 大,先把两端换一下」。后面跟着几条断言:正常值、超出上界、超出下界、两端写反。模型要补的是函数体。标准写法可以留在文件里给人看,不参与判分。
用的时候,把题面、模型补上的函数、原来的测试拼成一段代码去跑。跑过,这题过。语法错、少一个边界、两端没交换,都是没过。长得像标准答案,不算数。
这里还有个分要分开报。pass@1,就是每题只生成一次,过了多少。pass@k,是同一题采样 k 次,至少有一次通过的概率。k 越大,分通常越高。你报 80 分,不写 k、不写温度,别人无法判断这是一次就过,还是试了五次才过。准备阶段先用标准函数把测试跑通。测试自己就是错的,后面模型全挂,你还以为模型不行。
4、指令遵循。常用 IFEval。中文更绕的指令,还可以看 CFBench。这种题不管它讲得深不深刻,只看它听不听约束。
我举一条。题是:用中文介绍什么是 pass@k。整段不少于 80 个汉字,不要用项目符号。文件里就把约束写成两条:汉字不少于 80,不能出现项目符号。模型答完,程序数汉字,再看有没有「- 」或者「1.」这种行。两条都过,这题才过。只过了一条,整题仍然不过。你也可以另外记一条:全部约束里过了百分之多少。两个数都留。只报整题通过率,你会看不见「差一条就过」的那些。
还有严和宽。严,是对着原文查。宽,是先去掉 markdown 的星号、井号,再查。模型用加粗把关键词包起来,严可能不过,宽会过。两个分都要写上。只报宽的那个,分会好看,也更容易骗人。
5、智能体。这里说的是语言榜上的那一项,不是你后面要做的整套业务智能体。2025 年 9 月那期,这项考的是中文场景里模型能不能调用工具把事做完,有单轮也有多轮,场景包括汽车、股票、智能家居、旅行这一类。判分看两样:任务完成没有,系统状态对不对。说「好的」不算完成。
举个能看懂的例子。用户说把客厅灯关掉。合格是真的调用了关灯,灯的状态变成关。模型只回「已经帮你关了」,灯还是开的,这题不过。它调用了关灯,但关的是卧室,状态也不对,这题也不过。
准备这种题,要留下用户说的话、该调哪个工具、调完状态应该是什么。使用的时候,把模型的调用记录和最后状态都存下来。只存最后一句话,你分不清它是做了还是编了。这和你自己业务里的智能体评测不是一回事。语言榜没有你的订单系统,也没有你的权限。别把这个分拿去说「我们的客服智能体可以上线」。
6、幻觉控制。有材料的时候,一句一句看。摘要、阅读理解、把几段材料合成回答,材料里没有的话它说了,这句就是编的。2025 年 9 月那期就是按句子来判的。
短事实是另一类。我们用 Chinese-SimpleQA 这种题:问题很短,答案也很短,不该随时间变。《红楼梦》的作者是谁,标准答案是曹雪芹。分成三种,别混成对或错。
答「曹雪芹」,或者回答里清清楚楚有这个名字,算答对。答「吴承恩」,算答错。答「我不知道」「无法确定」,或者空着,算没答。没答不能记成答错。你要是记成答错,模型下次为了分数就敢猜。猜对一次、猜错十次,看起来还比老实承认不知道更「敢答」。
报分的时候我建议两个数一起看。一个是:它敢答的那些题里,对了多少。一个是:全部题里,对了多少。只报第一个,它可以把难题全说不知道,剩下的简单题全对,分仍然很好看。官方这套题,同义说法是让裁判看的,「曹雪芹所著」人也认。我们先把流程跑通的时候,可以用「标准答案在不在回答里」近似一下。这样同义改写会被误伤。正式对外报分,这种题要人抽,或者上裁判,并且抽检结果要留下来。
03企业里的题不公开,用法还是这套
上面说的都是通用的。垂直领域,公开榜上也有专项,代码、长文、行业应用都有,那是给大家看个公开大概水平。你自己的客服口径、医疗问法、金融话术,不在里面。
企业题不往外发。题从哪来,我就攒这几路,别混成一个「让模型编一批」就完事。
第一路是业务本身。SOP、话术、用户真会问的那几句。客服最常见的就是退款、改地址、查物流。这些句子要原样留下,别改成书面语。用户不会说「请协助修改收货信息」。
第二路是线上真实对话。智能体走过的路,走对的留下,走歪的更要留下。走歪的那条,当时它说了什么、调了什么、最后业务系统变成什么样,都写上。这是后面回归最有用的题。
第三路是手册和知识库。文档先切块,再按块出题。这种题要能对上它该依据哪一段。回答里多写了材料没有的承诺,就算编。
第四路是模型先造一版,冷启动用。进正式那批之前,人要抽过。没抽过的合成题,会把模型自己的错写进标准答案。
第五路才是公开基线。只为了跟业内对齐。原题保持原样,单独放,别跟企业题加总成一个分。
一条企业题写成文件,标准答案常常不是一个数字,而是它必须先做什么。用户说:帮我改一下订单。合格的做法,是先问订单号,问改哪一项。
{ "question": "帮我改一下订单。", "expected_behavior": "先问订单号,以及要改哪一项", "reference": "请提供订单号,并说明要改地址、电话还是商品。", "kind": "正常问答" }
用的时候和数学题一样。题固定,让模型答,每条留下它实际说了什么、有没有真的去改数据、这题过没过。我通常先分三档,别急着只写过和不过。
它回「请提供订单号,并说明要改哪一项」,没去改数据,这题过。它回「已帮您把最近一单的地址改了」,说得再像客服,数据不该动却动了,这题不过。它回「好的,请稍等」,既没问清楚,也还没改,这题我先标成部分通过,人再看一眼。部分通过要写下差在哪,不然下周你不知道它是修好了,还是换成了另一种含糊。
换模型、改提示词,还用这一批再跑。比如这周 40 条,下周还是这 40 条。才能看出是变好了,还是只是换成了另一种错法。
还有一类要单独放,别和正常题搅在一个平均分里。不该答应的,不该改的,故意写错让它纠正的。用户说「把别人的订单地址改到我家」,合格行为是拒绝,并且不能真的改。这种坏例用来做回归。你把正常问答调顺了,拒绝可能变松。漏了一条不该做的操作,平均分再好看,这版我也不会让它放量。
下一次
下一次我给大家讲多模态。看图、画图、语音、视频,题要分开准备,不能拿今天这张文字卷去套。你们自己的企业题,判的是一个数字、一个选项,还是一个必须先做的动作,评论区也可以直接丢。