假设你是一位餐厅老板,要从几十位主厨里挑出一位真正能扛事的。如果只拿一本固定菜谱考他们,很多人提前背得滚瓜烂熟,一上场却做不出新菜。于是你办了一场“盲测擂台赛”:每期都换新菜谱,选手走进厨房才知道要做什么,评委不仅要看菜能不能吃,还要看出菜快不快。这场擂台赛,就是大模型世界里的 LiveCodeBench。 大模型和人一样,会把训练时见过的代码题“背”下来。如果评测题目恰好也在训练数据里,分数就会虚高。LiveCodeBench 的核心思路,就是像擂台赛不断换菜谱一样,持续从竞赛平台收集新题,让模型在几乎没有见过的题目上现想现写,再按照“运行测试用例的正确性”和“运行效率”打分。通过它,你可以更公正地判断一个大模型是“真会写代码”,还是“刚好背过原题”。

岗位关联

对 AI 从业者来说,学会用 LiveCodeBench 做模型评测与选型,能避免被“背题高分”误导,真正把用户需求落在可靠的模型决策上。

目录
  1. 可视化演示
  2. 1. 赛事背景:一场换着菜谱的盲测擂台
  3. 2. 题目构造:把考题做成无法预习的盲盒
  4. 3. 评测机制:菜品能否端上桌
  5. 4. 防污染设计:把真题锁进冷冻室
  6. 5. 基准对比:固定菜谱与季节菜单
  7. 6. 选型应用:用擂台赛结果挑自己的主厨
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示LiveCodeBench动态更新防泄露机制、代码生成评测管线(生成-编译-测试-效率)及与HumanEval/MBPP基准对比,含时间窗口排名解读。

本节配有交互动效(进入视口后自动加载,约 3KB)。

代码评测管线 模型生成代码提交沙箱编译执行,通过全部测试用例方为正确 通过率 = AC题数 / 总题数 LiveCodeBench采用Online Judge方式验证代码功能正确性。

1. 赛事背景:一场换着菜谱的盲测擂台

想象你经营一家餐厅,要从几十位主厨中选一位能挑大梁的。如果只拿一本固定菜谱考他们,很多人会提前把这道菜练上一百遍,面试时做得惊艳,真正上岗后遇到新菜单却手忙脚乱。所以更靠谱的做法是办一场“盲测擂台赛”:菜谱每次都换,选手直到进厨房才知道题目,评委只看临场发挥。LiveCodeBench 的本质,就是给大模型办的一场“换菜谱擂台赛”。

大模型在训练时会“读”海量公开代码,和主厨背菜谱一样,它会对常见编程题留下记忆。如果评测集里的题目恰好也在训练数据里,模型相当于“考前见过原题”,得分自然虚高。这种现象叫数据泄露或数据污染。LiveCodeBench 的出发点,就是尽量让模型面对“没见过的新题”,从而测出真实的编程泛化能力,而不是记忆力。

LiveCodeBench 会从多个编程竞赛平台持续抓取新题,定期更新题库,同时提供标准化的题面、函数签名和测试用例。相比静态评测集,它的“新题率”很高,能更及时地反映模型在新问题上的表现。这也让它在代码生成评测领域里,更像一场长期举办的赛事,而不是一次性的期末考试。

总之,LiveCodeBench 不是一本固定的“老菜谱”,而是一套不断加入新菜式的擂台规则。理解这一点,就抓住了它和传统代码评测最本质的区别。

Rnew=NnewNtotal\displaystyle R_{\text{new}} = \frac{N_{\text{new}}}{N_{\text{total}}}
这个公式衡量“题库有多新鲜”:分子是本期新增题目数,分母是本期总题目数,比值越高,说明选手越难靠背题蒙混过关。
  1. 分子 N_new表示这个月新增进入评测集的题目数量,比如新抓到的竞赛题。
    NnewN_{\text{new}}
  2. 分母 N_total表示当前 LiveCodeBench 题库里的题目总数,包括历史题目和新题。
    NtotalN_{\text{total}}
  3. 新题占比 R_new两者相除得到更新率,数值越接近 1,说明题库越“新鲜”。
    Rnew=NnewNtotalR_{\text{new}} = \frac{N_{\text{new}}}{N_{\text{total}}}

2. 题目构造:把考题做成无法预习的盲盒

每期盲测擂台上,主厨都会领到一个密封盲盒:里面写着菜品要求、已经备好的半成品原料,以及评委的评分标准。LiveCodeBench 的每道题也像这样一个盲盒,由三件套组成:题面告诉你“要做什么”,起始代码给你一个已经写好的函数骨架,测试用例则模拟评委的挑剔口味。

题目是评测的灵魂。LiveCodeBench 的题目主要来自 LeetCode、AtCoder、Codeforces 这类编程竞赛平台,尤其偏爱那些刚发布不久的新题。为什么强调“新”?因为竞赛题一发布就会被公开,大模型在后续训练时很可能读到。如果题目发布得足够晚,晚于模型训练数据的截止时间,模型就没有机会提前“预习”。

为了控制题目新鲜度,LiveCodeBench 会记录每道题的发布时间,并只保留晚于某个截止日期的题目。这个截止日期通常和模型训练的知识截止日对齐。这样一来,题面、起始代码和测试用例共同构成了一个“盲盒”,既保证了评测公平,也让模型必须在推理时现场理解题意、现场构造解法。

盲盒机制让“考前押题”变得几乎不可能。对从业者来说,理解题目构造,也就理解了 LiveCodeBench 分数为什么更能代表“现场发挥”而不是“背功”。

Δt=Trelease−Tcutoff,Δt>0\displaystyle \Delta t = T_{\text{release}} - T_{\text{cutoff}},\quad \Delta t > 0
这道“时间锁”要求题目发布时间晚于模型知识截止时间,相当于只把主厨没见过的菜谱放进盲盒。
  1. 题目发布时间 T_release指某道竞赛题被公开的日期,越晚代表越新。
    TreleaseT_{\text{release}}
  2. 模型知识截止时间 T_cutoff指大模型训练数据的最后收录时间,模型不知道晚于这个时间的信息。
    TcutoffT_{\text{cutoff}}
  3. 时间差 Δt用发布时间减去截止时间,得到“题目比模型记忆新多少”。
    Δt=Trelease−Tcutoff\Delta t = T_{\text{release}} - T_{\text{cutoff}}
  4. 必须大于 0只有当 Δt 为正数,才能证明题目不在模型训练数据里。
    Δt>0\Delta t > 0

3. 评测机制:菜品能否端上桌

擂台赛的评委不会只看主厨切菜动作帅不帅,而是关心两件事:菜能不能安全入口,以及出菜效率够不够高。LiveCodeBench 评测大模型也是同样的逻辑:先看生成代码能不能通过测试用例,再看运行时间和算法复杂度是否合格。

正确性是第一道关。LiveCodeBench 会为每道题准备隐藏测试用例,模型生成的代码必须跑通这些用例才能算作正确答案。由于大模型生成结果有随机性,评测不会只生成一次答案,而是让模型生成多个候选答案,再用 pass@k 这样的指标统计“在 k 次机会中至少成功一次”的概率。

效率是第二道关。一段代码即使能跑出正确结果,如果时间复杂度爆炸,在实际产品里也会拖垮服务。因此 LiveCodeBench 会关注运行时间、算法复杂度,并覆盖多种编程语言。这样,模型不仅要“做得对”,还要“做得快”,就像主厨不但要端出美味,还要在合理时间内出菜。

出菜又快又对,才是真正的好主厨。同样,只有同时看正确性和效率,才能全面评估一个大模型的代码能力,避免被“单次碰巧答对”的假象迷惑。

pass@k=1−(n−ck)(nk)\displaystyle \text{pass@k} = 1 - \frac{\binom{n-c}{k}}{\binom{n}{k}}
pass@k 的意思是:让模型生成 n 个候选答案,其中 c 个通过测试,那么允许挑 k 个候选时,至少有一个正确答案的概率是多少。
  1. 候选总数 n评测时每个题目最多生成的答案数量,比如 5 个。
    nn
  2. 正确候选数 cn 个候选答案里通过测试用例的数量。
    cc
  3. 全部失败的组合数从 n-c 个错误答案里挑 k 个的组合数,表示“挑了 k 个全都错”的坏情况。
    (n−ck)\binom{n-c}{k}
  4. 全部候选组合数从 n 个答案里任意挑 k 个的总组合数。
    (nk)\binom{n}{k}
  5. 减去坏情况1 减去“全部挑错”的概率,就等于“至少挑中一个正确答案”的概率。
    pass@k=1−(n−ck)(nk)\text{pass@k} = 1 - \frac{\binom{n-c}{k}}{\binom{n}{k}}

4. 防污染设计:把真题锁进冷冻室

组委会为了防止主厨偷看菜谱,会把本期真题锁进冷冻室,直到比赛开始才解封。LiveCodeBench 也有类似的“冷冻室”机制:它会为每道题标记发布日期,并和模型的知识截止日做比对。这道“题目冻结日”是最基础的防线,确保模型在训练时没有见过这份菜单。

但仅仅锁住原题还不够,因为有人可能把题目换几个词、改一下变量名,变成一道“近义题”混进来。LiveCodeBench 会做重复题检测:比较题目文本、样例输入输出之间的相似度,把高度相似的题目标记出来。对于明显重复的题目,评测集会将其剔除,避免同一道题反复出现导致分数失真。

除了自动检测,人工复核也是重要防线。算法标记出可疑题目后,会有标注人员再看一遍。这种“自动粗筛 + 人工精查”的方式,就像赛事组委会先用系统查重,再让资深评委亲自确认。多重防线合在一起,才能让 LiveCodeBench 的题目真正保持新鲜和干净。

冷冻室不能只靠一把锁。时间过滤、相似度检测、人工复核层层叠加,才能让 LiveCodeBench 的每一道题都像“第一次出现在赛场上的新菜”,真正拦住靠背题刷分的大模型。

Pdup=NdupNall\displaystyle P_{\text{dup}} = \frac{N_{\text{dup}}}{N_{\text{all}}}
这里用“重复题比例”来监控题库清洁度:重复题占比越低,说明防污染效果越好。
  1. 重复题数量 N_dup指同一轮收题中识别出的重复或近义改写的题目数。
    NdupN_{\text{dup}}
  2. 收题总数 N_all指这一轮共收集到的所有题目数量。
    NallN_{\text{all}}
  3. 重复题比例 P_dup两者相除得到污染率,评测方会努力让这个值接近 0。
    Pdup=NdupNallP_{\text{dup}} = \frac{N_{\text{dup}}}{N_{\text{all}}}

5. 基准对比:固定菜谱与季节菜单

过去大家常用 HumanEval 来考大模型写代码,它就像一本“百年经典菜谱”:题目由研究人员手写,数量不多,质量稳定,非常适合快速判断模型有没有基本编程能力。但问题也很明显:菜谱太固定,模型练着练着就背下来了。MBPP 则更像一本“入门家常菜谱”,题目偏基础,适合考察简单函数编写。

LiveCodeBench 和它们最大的不同,是把“期末考试”改成“季度擂台赛”。HumanEval 只有一百多道题,MBPP 题目也相对简单,而 LiveCodeBench 会持续引入新题,题目难度跨度更大,覆盖语言也更广。它不是一次性出完题就结束,而是不断“换菜单”,所以更难被模型提前背下来。

在对比不同基准时,有一个很实用的视角:看同一个模型在“旧基准”和“新基准”上的分数差距。如果模型在旧基准上接近满分,到 LiveCodeBench 上却大幅下滑,说明它可能严重依赖对旧题的记忆;如果两边分数接近,则说明它的编程能力更扎实。

固定菜谱适合快速热身,季节菜单才能看出真实功力。选基准时,不能只看哪个名气大,而要看你到底想考“背诵能力”还是“现场编程能力”。

Δrobust=Aold−Anew\displaystyle \Delta_{\text{robust}} = A_{\text{old}} - A_{\text{new}}
Δ 越大,说明模型在“背过的题”和“没见过的新题”之间表现差距越大,泛化能力越可疑;Δ 越小,模型越稳健。
  1. 旧基准得分 A_old比如模型在 HumanEval 上的通过率。
    AoldA_{\text{old}}
  2. 新基准得分 A_new比如模型在 LiveCodeBench 上的通过率。
    AnewA_{\text{new}}
  3. 稳健性差距 Δ用旧基准得分减去新基准得分,得到“吃老本”的程度。
    Δrobust=Aold−Anew\Delta_{\text{robust}} = A_{\text{old}} - A_{\text{new}}

6. 选型应用:用擂台赛结果挑自己的主厨

擂台赛办得再热闹,老板最终还是要回到自己的餐厅:我要做川菜还是粤菜?人均消费是多少?出餐速度要求多快?同样,LiveCodeBench 的榜单能告诉你哪些模型“代码能力强”,但到底选哪一个大模型,还要结合自己的业务场景。

正确的选型流程不是“谁第一选谁”。第一步,看榜单时先关注模型知识截止日期、题目日期和 pass@k 的具体口径;第二步,从业务中抽一组有代表性的真实问题,搭一个小型评测集复测;第三步,同时测量正确率、运行时间、推理成本和并发能力。这样选出的模型,才是“适合自己餐厅的主厨”,而不是“所有比赛都拿第一但请不起的明星”。

如果业务涉及多个维度,可以把不同指标加权成一个综合分。比如正确性占 60%、效率占 30%、成本占 10%,再按权重计算总分。这样做的好处是,选型决策不再是凭感觉,而是变成一套可解释、可跟踪的评分流程。

LiveCodeBench 不是终点,而是选型路上的“路考”。读懂榜单、复测业务、持续跟踪,你才能真正从一堆看起来都很强的大模型里,选出最合适的那位“主厨”。

S=∑i=1mwi⋅ai\displaystyle S = \sum_{i=1}^{m} w_i \cdot a_i
综合评分 S 是每个标准化指标 a_i 乘以权重 w_i 后的总和,帮你在正确率、效率、成本之间做平衡。
  1. 指标数量 m参与选择的评测维度总数,比如正确率、运行时间、成本等。
    mm
  2. 单项得分 a_i第 i 个指标标准化后的分数,通常是 0 到 1 之间。
    aia_i
  3. 权重 w_i第 i 个指标的重要性,所有权重加起来等于 1。
    wiw_i
  4. 加权求和 S把所有指标得分乘权重后相加,得到最终选型分数。
    S=∑i=1mwi⋅aiS = \sum_{i=1}^{m} w_i \cdot a_i

AI 应用场景

模型选型:帮算法团队找到合适的“主厨”

阶段:离线评估与模型选型

解决的问题:传统做法只看 HumanEval 分数,但固定题库容易被模型背下来,线上效果和评测分数经常对不上。用 LiveCodeBench 这类动态基准,可以更真实地比较多个候选模型的代码生成能力。

具体案例:一家公司要在 CodeLlama、DeepSeek-Coder 和 GPT-4o 之间选代码补全模型。团队从 LiveCodeBench 中抽取 Python 和 Java 题目各 50 道,记录 pass@1、pass@5 以及单次运行耗时,再用内部注释风格数据做小范围复测,最后选出综合分最高的模型。

版本回归:防止新版本模型“越改越笨”

阶段:模型发布前测试与回归

解决的问题:模型迭代时,如果只测几个老样例,很难发现代码能力退化。LiveCodeBench 的持续题库像一个验收擂台,让每次发版都面对一批新题。

具体案例:某团队每两周一版更新代码模型,每次发版前自动跑 LiveCodeBench 子集,把通过率、平均运行时长和上一版对比。一旦新版本在新增题目上明显下滑,就阻止发布并排查训练数据或微调策略。

评测集运维:给擂台持续换菜

阶段:数据与评测集维护

解决的问题:静态评测集用久了会被“背题”,需要一套流程持续收集新题并过滤重复题,才能保证评测可信。

具体案例:数据团队每月从竞赛平台抓取新题,跑文本相似度检测,再由工程师人工抽检,合格题目加入内部 LiveCodeBench 评测池。这个流程保证内部榜单始终反映最新模型能力。

Python 演示

python61 行
"""LiveCodeBench style mini evaluator: use unit tests to judge generated code."""from math import comb  PROBLEMS = [    {        "name": "add",        "test": lambda func: func(2, 3) == 5 and func(0, 0) == 0,    },    {        "name": "max3",        "test": lambda func: func(1, 2, 3) == 3 and func(9, 2, 1) == 9,    },]  def dummy_generate(problem_name):    """Simulate LLM generation; replace with real API call in production."""    if problem_name == "add":        return lambda a, b: a + b    if problem_name == "max3":        return lambda a, b, c: max(a, b, c)    return lambda *args: None  class CodeEvaluator:    def __init__(self, problems):        self.problems = problems        self.problem_stats = []     def run_problem(self, problem, n_samples):        correct = 0        for _ in range(n_samples):            func = dummy_generate(problem["name"])            try:                if problem["test"](func):                    correct += 1            except Exception:                pass        return correct     def evaluate(self, n_samples=5):        for problem in self.problems:            correct = self.run_problem(problem, n_samples)            self.problem_stats.append({"name": problem["name"], "correct": correct})        return self.problem_stats     @staticmethod    def pass_at_k(correct, n_samples, k):        if n_samples - correct < k:            return 1.0        return 1.0 - comb(n_samples - correct, k) / comb(n_samples, k)  if __name__ == "__main__":    ev = CodeEvaluator(PROBLEMS)    stats = ev.evaluate(n_samples=5)    for stat in stats:        p1 = ev.pass_at_k(stat["correct"], 5, 1)        p5 = ev.pass_at_k(stat["correct"], 5, 5)        print(f"{stat['name']}: pass@1={p1:.2f}, pass@5={p5:.2f}")
目的:演示一个 LiveCodeBench 风格的迷你代码评测流程,用隐藏测试判断“生成代码是否正确”,并计算 pass@1 和 pass@5。
  1. from math import comb引入组合数函数,用于计算 pass@k 的无偏估计。
  2. PROBLEMS定义两道迷你题目,每道题包含函数名和一个测试函数。
  3. dummy_generate模拟大模型生成代码;真实场景下应该替换成 LLM API 调用。
  4. if problem["test"](func):像 LiveCodeBench 跑隐藏测试一样,判断生成代码是否正确。
  5. self.problem_stats.append(...)记录每道题的正确样本数,方便最后汇总指标。
  6. pass_at_k(correct, n_samples, k)实现 pass@k 公式,对应文章中的核心评测指标。
  7. comb(n_samples - correct, k) / comb(n_samples, k)计算“挑 k 个全错”的概率,用 1 减去它就得到至少一次成功。

常见误区

误区既然都是代码评测,看一次 LiveCodeBench 排名就行,不用关心题目什么时候更新的。

正解LiveCodeBench 最大的特点是持续更新,就像擂台赛每场都换菜谱。它不是一个静态榜单,而是一个滚动题库。只看一次结果,等于只看了某一个月的新题表现,不能代表模型的长期泛化能力。

为何常见:因为大家习惯了 HumanEval 这种“固定题目考一次”的传统基准,容易忽略 LiveCodeBench 的动态设计。

误区榜单上 pass@1 最高的模型,上线后一定最好用,毕竟真实场景每次也只给一次答案。

正解pass@1 只衡量“单次生成就正确”的概率,真实产品里往往会生成多个候选、允许用户修改或重试。还要看 pass@5、运行效率、延迟和成本。一个模型单次正确率很高,但运行极慢,也很难落地。

为何常见:因为 pass@1 最容易理解,也最常被榜单放在最显眼的位置。

误区LiveCodeBench 只要不停加题,题目数量足够大,评测结果就一定更可信。

正解题目数量只是基础,更重要的是题目质量、难度分布、防污染设计和与业务场景的匹配度。盲目堆数量会带来重复题、无效题和评测成本膨胀,反而稀释榜单的可解释性。

为何常见:直觉上“样本越多越准”没有错,但评测集不是统计采样,题目质量和新鲜度比数量更关键。

误区只要模型在 LiveCodeBench 上排名第一,直接接到业务里就好。

正解榜单排名是初筛,不是终审。你的业务语言、代码风格、题目难度和实时性要求都可能和 LiveCodeBench 不一样。正确的做法是抽取业务真实题目做小范围复测,再结合效率、成本做整体决策。

为何常见:榜单给人“客观、权威”的感觉,容易让人忽略评测场景和业务场景的差异。

误区只要题目发布时间晚于模型训练截止日,模型就一定没见过这道题。

正解时间过滤能挡住大多数直接背诵,但无法完全阻止模型通过相近题、改写题或 API 交互间接学会解法。所以 LiveCodeBench 还需要相似度检测、重复题过滤和人工复核,多道防线一起上才更安全。

为何常见:把一道防线当成全部防线,是理解防污染设计时最常见的“想当然”。

面试题

Q1. LiveCodeBench 最核心的设计目标是什么?

单选题 · easy

  • A.用固定题库做回归测试
  • B.持续更新题防数据泄露← 正确答案
  • C.只检查代码语法格式
  • D.训练模型加快收敛速度

答案:B。LiveCodeBench 与静态基准最大的不同是“持续更新题目”,就像擂台赛不断换菜谱,防止选手靠背题拿高分。A 是传统回归测试的思路,C 不涉及功能正确性,D 是训练目标而不是评测目标。

Q2. LiveCodeBench 的题目来源主要是?

单选题 · easy

  • A.企业内部的旧代码
  • B.网上任意技术博客
  • C.模型自动生成的样例
  • D.LeetCode 等竞赛新题← 正确答案

答案:D。LiveCodeBench 从 LeetCode、AtCoder、Codeforces 等竞赛平台收集新题,因为竞赛题难度分布广、发布时间明确,方便做“题目冻结日”过滤。A 和 B 不够规范,C 不是它的主要来源。

Q3. pass@k 中的 k 表示什么?

单选题 · mid

  • A.生成 k 个候选,至少一个通过← 正确答案
  • B.需要连续运行 k 次评测
  • C.题目包含 k 个测试用例
  • D.模型参数量是 k 倍

答案:A。pass@k 的意思是允许模型生成 k 个候选答案,只要其中至少一个通过测试就算成功。它衡量的是“多次尝试下的容错能力”,和测试用例数量、模型参数没有直接关系。

Q4. 以下哪些是 LiveCodeBench 的防污染策略?

多选题 · mid

  • A.记录题目发布日期← 正确答案
  • B.检测同题或近义改写← 正确答案
  • C.把题库永久完全隐藏
  • D.只用模型训练见过的题

答案:AB。LiveCodeBench 会记录题目发布日期并与模型知识截止日比对,还会用相似度检测识别重复题和近义改写题。C 的“永久完全隐藏”不现实,D 等于主动引入污染,明显错误。

Q5. 与 HumanEval 相比,LiveCodeBench 更强调什么?

单选题 · mid

  • A.考题动态刷新与难污染← 正确答案
  • B.只支持 Python 一种语言
  • C.题目数量固定为 164
  • D.不需要运行任何测试用例

答案:A。HumanEval 的题目固定且数量有限,容易让模型背题;LiveCodeBench 强调动态刷新和多语言覆盖,并且同样要跑测试用例。B、C、D 都与事实不符。

Q6. 解读 LiveCodeBench 榜单时,应该关注哪些信息?

多选题 · hard

  • A.模型知识截止与题目日期← 正确答案
  • B.采样次数与 pass@k 取值← 正确答案
  • C.是否使用额外提示或工具← 正确答案
  • D.榜单页面的展示配色

答案:ABC。题目日期和模型知识截止日决定“有没有可能背题”,采样次数和 pass@k 决定指标口径,额外提示或工具会影响得分。榜单配色与评测可信度无关,不该成为判断依据。

Q7. LiveCodeBench 评估“效率”时主要看什么?

单选题 · mid

  • A.运行时间与复杂度表现← 正确答案
  • B.代码总行数是否最少
  • C.模型生成速度是否最快
  • D.报错信息是否友好

答案:A。效率评估关注生成代码的运行时间和算法复杂度,就像主厨出菜既要快又要稳。代码行数、生成速度和报错信息属于其他维度,不能直接衡量代码本身的运行效率。

Q8. 在 n=5、c=3 时,pass@1 的无偏估计值约为?

单选题 · hard

  • A.约等于 0.2
  • B.约等于 0.6← 正确答案
  • C.约等于 0.8
  • D.约等于 1.0

答案:B。pass@1 = 1 - C(n-c,1)/C(n,1) = 1 - C(2,1)/C(5,1) = 1 - 2/5 = 0.6。这个结果也符合直觉:5 个样本里 3 个正确,单次成功的概率就是 0.6。

Q9. 选择代码模型前,最合适的做法是?

单选题 · easy

  • A.直接选榜单第一名
  • B.只看模型参数量大小
  • C.只选推理价格最低的
  • D.用自测场景进行复测← 正确答案

答案:D。榜单是初筛,自测场景复测才是关键。直接选第一名、只看参数量或只看价格,都忽略了业务代码风格、语言分布和成本约束,容易选出“好看不好用”的模型。

Q10. HumanEval 高分但 LiveCodeBench 低分,可能的原因是?

多选题 · extreme

  • A.模型记住了 HumanEval 原题← 正确答案
  • B.LiveCodeBench 新题难度更高← 正确答案
  • C.两个基准的语言覆盖不同← 正确答案
  • D.模型无法加载评测框架

答案:ABC。模型可能背过 HumanEval 的公开题,遇到 LiveCodeBench 的新题就暴露真实水平;同时新题难度更高、语言覆盖更广,也会拉低分数。D 属于环境问题,不是模型能力差异的常见原因。