为什么 AI 还不是编程大师(以及我们如何有效地破解它)
Published on
September 1, 2025
Read time:
6 mins
为什么 AI 还不是编程大师(以及我们如何有效地破解它)

大型语言模型(LLM)的最新进展显著提高了其推理能力,OpenAI的'o'系列和DeepSeek-R1等模型结合了思想链(CoT),以促进循序渐进的逻辑思维和有效的测试时间缩放,在各种任务中表现出良好的表现。其中,编码被认为是一个极具挑战性的领域,因为它需要绝对的语法精度和跟踪远程依赖关系。在各种编码任务中,竞争性编程(CP)是一门对智力要求特别高的学科。与一般的软件工程任务相比,CP 问题很少能提供直接的解决方案,而是需要通过敏锐的分析思维得出的专门的、通常是非标准的算法。

衡量差距:LiveCodeBench Pro 简介

我们的最新研究表明,即使是最前沿的模型,与顶尖人类程序员之间仍然存在显著的推理差距。为了精确测量这一差距,我们引入了 LiveCodeBench Pro,这是一个持续更新的基准,用于严格评估大语言模型在竞赛编程挑战中的表现。

LiveCodeBench Pro是与纽约大学、普林斯顿大学、加州大学圣地亚哥分校等的研究人员合作开发的,它克服了现有评估的局限性,例如数据污染。LiveCodeBench Pro从Codeforces、ICPC和IOI等顶级竞赛中实时获取高质量的问题。它还收录了奥林匹克奖牌得主团队的详细注释,他们分析了每个问题和提交的每一个失败的模型。

图 1。针对简单、中等和困难 CP 问题对性能进行建模

LiveCodeBench Pro 从大多数基准测试的终点开始:Codeforces、ICPC 或 IOI 回合立即结束。在社论出现或解决方案传播到 GitHub 之前,爬虫会捕获所有语句、输入生成器并立即进行判断,然后冻结原始时间和内存限制,以便评估反映现场竞赛沙箱。每项任务都要经过Codeforces的 “黑客攻击” 阶段的重击,再加上内部模糊测试器,该测试人员会突变边缘情况直到覆盖率达到平稳状态,从而确保隐藏的测试至少与人类决赛选手面临的对抗性一样大。最后,所有提交的内容都在统一的Docker镜像中运行,该镜像带有确定性编译器和挂钟计时器,因此结果不会因语言或硬件而出现运行时偏差。

我们没有将所有问题归纳为单次通过 @k 指标,而是根据顶级人类参赛者的历史解决率(≤ 2000 Easy、2000-3000 中等、> 3000 Hard)为每个问题分配一个 ELO 式难度。由于这些评分会随着越来越多的人类和模型尝试任务而更新,因此即使排行榜不断演变,语料库也会保持平衡。这种三层结构可防止简单问题淹没信号,使我们能够像Codeforces对人进行排名一样报告模型分数,从而使人与LLM的比较直观而公平。

奥林匹克奖牌得主审查每个问题并使用二十个标签的本体论来标记其主要的认知负担,该本体论分为三个标题:

  • 知识密集: 一旦你回忆起权威技术或数据结构模板(例如 Fenwick 树、FFT),就会解锁。
  • 逻辑密集型: 要求在编写任何代码之前逐步推断、证明或 DP 状态设计。
  • 观察密集型: 取决于一个简短而富有创造力的 “啊哈!”这缩小了搜索空间;一旦洞察力落地,代码就微不足道了。

这些标签伴随着公开测试日志,因此研究人员可以按分区对结果进行切片,例如,在知识密集型的简易任务中,模型的准确率可能为70%,而在观察密集的中型任务中,模型的准确率可能为8%。

每一次失败的运行都与编译器输出、运行时跟踪和判定标签(语法错误、错误答案、TLE 或内存故障)一起存储,外加一个由人工编写的简短注释,解释了比崩溃更微妙时的概念失误。由于任务、标签和跟踪都受版本控制,因此任何人都可以复制实验、添加消融或重新训练模型,而不必担心实际情况会发生变化。结果是一个基准,它不只是对模型进行排名;它告诉你他们为什么输了,以及他们接下来需要什么样的推理。

我们对LiveCodeBench Pro的分析揭示了几个关键见解:

  • 性能因问题类型而异。 模型在需要应用已知模板或结构化思维的 “知识密集” 和 “逻辑密集” 问题上表现良好。但是,由于需要新见解的 “观察密集型” 问题(例如博弈论或贪婪的算法),他们的表现会崩溃。
  • 模型的失败方式与人类不同。 对o3-mini模型提交失败的详细诊断表明,与评级相似的人类竞争对手相比,它在算法逻辑中犯的概念错误要多得多。相比之下,该模型的实现是一个强项,其低级编码错误少于人为错误。
  • 性能在很大程度上受到外部援助的影响。 允许模型多次尝试(通过 @k)可以大大提高他们的评级,尽管他们在最难的等级中仍然失败。o4-mini 等模型报告的最高分数在很大程度上也归因于工具的使用,例如用于本地编译和测试的终端访问权限。

这项工作证实,尽管LLM很强大,但要克服竞争性编程的细微差别,需要的不仅仅是扩展。这促使我们更好地了解编码性能是如何扩展的。

使用 Dobby-CP(竞争程序员)高效破解代码

为了系统地研究这个问题,我们探讨了如何通过监督微调 (SFT) 最好地向开源、较小的模型传授这些复杂技能。我们从几个方面汲取了灵感:

  • 知识蒸馏。 现有工作利用较大模型生成的思维轨迹来教授较小的模型。这种形式的知识蒸馏使更有效的模型能够从大型模型那里学习复杂的推理模式和问题解决策略。
  • 人类的专业知识。 人类程序员通常从专家撰写的精选教育材料中学习。将这种专业知识转化为人工智能模型可以遵循的数据是提高LLM编码能力的另一种方法,也是对模型生成数据的高质量补充。
  • 跨领域知识。 来自人类认知的见解表明,编程熟练程度通常会通过其他领域(例如数学)的知识和技能来增强。

在这些见解的推动下,我们在Dobby-CP模型上的工作旨在研究控制LLM在竞争性编程任务中的绩效改善的效率定律。具体而言,我们研究了三个核心因素如何影响训练效率:

  • 数据源。 哪些类型的训练数据(例如,人工注释的解决方案、从高级模型中提取的数据、监督提炼的数据)可以产生最有效的学习?
  • 数据域。 使用纯粹以CP为中心的数据进行学习最有效,还是整合来自更广泛领域的数据可以提高效率?
  • 数据量。随着训练数据量的增加,模型性能如何扩展?

我们介绍了Dobby-CP(7B和14B)模型,这是一组高效而强大的竞争性编程助手,他们在一个小型数据集(14B为24K训练示例,7B为40k)上进行了训练,可在LiveCodeBench上取得竞争成绩。Dobby-CP 模型的 Pass @1 可与根据更多数据训练的模型(例如 R1-Distill-Qwen-7B/14B)(报告了 800k)相媲美,并且接近 OpenAI-O1-Mini 等闭源模型的性能。我们的主要发现为资源节约型微调提供了实用指南:

  1. 寻找合适的老师。 我们发现,在人工社论的监督下从LLM中提取的CoT数据比人工编写或纯粹提炼的数据提供了更好的学习信号。
  2. 混合课程有助于培训。 将竞争性编程任务与一般的跨领域推理问题相结合的混合课程胜过纯粹的特定领域的培训。
  3. 有效的缩放定律。 最关键的是,我们发现这种情况在增加 问题多样性 是提高性能的最重要因素,而增加每个问题的解决方案样本数量会产生递减的回报。图 1 说明了微调数据量与模型性能的相关性,使 Dobby 处于最高效的前沿,以最低的微调成本提供一流的推理精度
图 2。在不断增加的数据集大小方面,SFT 性能前沿

结论

LiveCodeBench 专业版 这使得当今最好的法学硕士和经验丰富的竞争程序员之间的推理差距不容忽视——但Dobby-CP表明,当我们将合适的教师与正确的课程配对时,这种差距可以迅速缩小。通过融合来自前沿模型的思想链痕迹、奥林匹克级别的人类见解以及各种跨领域谜题组合,我们发现了一条效率定律,该定律将问题多样性置于庞大的数据量之上。结果是一个精简的、公开上市的7 B/14 B系列,其性能达到了曾经专用于更大或封闭型号的车型,而只需要微调预算的一小部分。弥合真正的 “编程大师” 身份的最后一英里仍然需要在以观察为主的推理和实时工具的使用方面取得突破——但是,随着LiveCodeBench Pro不断出现新的挑战,以及Dobby-CP为掌握数据效率开辟了明确的道路,缩小这一差距的策略从未如此清晰。