🚀 AI编程能力深度评测

大模型编程能力评估

基于LiveCodeBench、SWE-Bench榜单与自定义测试案例的全面对比分析

📋 目录

🎯 引言

随着大语言模型(LLM)的迅速发展,越来越多的模型被用于辅助甚至主导编程任务。然而,大模型究竟在代码能力方面达到了怎样的水平?它们是否适合实际的软件工程场景?哪些模型更适合算法问题,哪些则在工程实现方面更为擅长?

本文围绕大模型的编程能力评估展开,结合两个具有代表性的公开评测榜单(LiveCodeBench 和 SWE-Bench),并以两个自构造的典型测试样例(小球物理模拟 + Triton 算子实现)作为补充,实测多个主流大模型的表现,包括 GPT-4o、Claude Sonnet 4、Gemini 2.5 Pro、Kimi K2、DeepSeek R1、豆包、Qwen3-235B 等。

📊 了解大模型的代码能力

🏆 LiveCodeBench: 测试算法能力

LiveCodeBench 是由加州大学伯克利分校、麻省理工学院和康奈尔大学的研究人员开发的先进评测基准。通过从 LeetCode、AtCoder 和 CodeForces 等竞赛平台实时收集新发布的编程问题,确保评测的无污染性(仅使用模型训练截止日期之后发布的问题),并涵盖代码生成、代码自修复(基于反馈调试代码)、代码执行以及测试输出预测等多种代码相关能力。

Leaderboards 网址: https://livecodebench.github.io/leaderboard.html

7/1/2024 - 2/1/2025 榜单

LiveCodeBench 7月-2月榜单
LiveCodeBench 2024年7月至2025年2月榜单排名

8/1/2024 - 5/1/2025 榜单

LiveCodeBench 8月-5月榜单
LiveCodeBench 2024年8月至2025年5月榜单排名

🔧 SWE-Bench: 测试工程能力

SWE-Bench(Software Engineering Benchmark)是由普林斯顿大学 NLP 团队于 2023 年 10 月提出,旨在评估大语言模型(LLM)解决真实软件工程问题(如 bug 修复和功能改进)的能力,而非传统算法题解决能力。

Leaderboards 网址: https://www.swebench.com/index.html

📈 Claude 的功能能力很强

SWE-Bench Claude表现
Claude 在 SWE-Bench 上的优异表现

📉 开源模型仍有差距

SWE-Bench 开源模型表现
开源模型距离闭源模型还有一定差距

🧪 自测样例

⚽ 经典小球测试样例

该样例可以方便测试人员肉眼观察代码实现效果,不需要懂代码的人也能通过代码运行结果来直观体会到模型的代码撰写能力。不过注意这个测试样例主要是用于简单验证大模型的代码编程能力,只能作为初步判断,不一定能完全体现出模型的能力。

🎯 测试Prompt:

编写一个 html 代码,模拟一个小球在匀速旋转的六边形内部弹跳的物理效果(包括重力、碰撞反作用力、摩擦力等)。球应该受到重力,在碰到六边形的内壁后会回弹,受到碰撞反作用力、摩擦力的影响。注意球的初始化位置在六边形内部的中心。

⚠️ 注意事项:

Claude Sonnet 4

基本合理,还额外增加了一些功能,比如增加小球和去掉小球

Claude Sonnet 4 小球测试结果
Claude Sonnet 4 - 基本合理,功能丰富
✅ 优秀
GPT-4o

完全错了,小球跳出了六边形

GPT-4o 小球测试结果
GPT-4o - 小球跳出六边形
❌ 失败
GPT o4-mini-high

基本合理

GPT o4-mini-high 小球测试结果
GPT o4-mini-high - 基本合理
✅ 良好
Grok 4

完全错了,六边形都没有成功画出来

Grok 4 小球测试结果
Grok 4 - 六边形绘制失败
❌ 失败
Gemini 2.5 Pro

六边形正确生成,但是没有生成小球

Gemini 2.5 Pro 小球测试结果
Gemini 2.5 Pro - 缺少小球
❌ 未生成小球
Kimi K2

物理规律还行,不过六边形没有旋转。再给 kimi 一次机会,可以正确做对

Kimi K2 第一次测试结果
Kimi K2 第一次 - 六边形未旋转
Kimi K2 第二次测试结果
Kimi K2 第二次 - 成功
✅ 良好(需重试)
DeepSeek R1

物理规律还行,不过后面小球跳出六边形还是算失败了。给 deepseek 第二次机会,物理规律依然还不错,但是球还是跳出六边形了

DeepSeek R1 第一次测试结果
DeepSeek R1 第一次 - 小球跳出
DeepSeek R1 第二次测试结果
DeepSeek R1 第二次 - 仍然跳出
❌ 物理出界
豆包

基本符合预期

豆包第一次测试结果
豆包 第一次 - 基本合理
豆包第二次测试结果
豆包 第二次 - 持续稳定
✅ 良好

⚡ Triton 算子编写测试案例

🎯 测试Prompt:

请你用 Triton 从零实现一个与 torch.nn.functional.layer_norm 完全等价的前向算子,并编写相应的测试与基准验证脚本。

  • 实现 layernorm_triton(x, weight, bias, eps=1e-5),与 torch.nn.functional.layer_norm(x, [x.size(-1)], weight, bias, eps) 在数值上逐元素一致(CUDA 张量输入/输出)
  • 主函数中测试多组输入形状 (使用 [32,1024]、[64,4096]、[8,16384])及三种数据类型:float32、float16、bfloat16,打印绝对误差和相对误差,判断实现是否正确(验证 max_abs_error < 2e-2,mean_abs_error < 1e-2)
  • 主函数中同时测量在形状 [64,4096] 输入下,分别调用 Triton 实现与 PyTorch 原生 layer_norm 各 100 次的平均耗时(使用 torch.cuda.Event)
  • 所有代码写到一个脚本里,结果打印尽量简洁
GPT o4-mini-high

生成代码完成度(算子实现、测试样例)和正确性都符合预期。(毕竟 Triton 是 OpenAI 开发的,要是这都写不出来就有点尴尬了...)

GPT o4-mini-high Triton测试结果
GPT o4-mini-high - Triton实现成功
✅ 优秀
Claude Sonnet 4

能正确完成

Claude Sonnet 4 Triton测试结果
Claude Sonnet 4 - 实现正确
✅ 优秀
Kimi K2

可以正确完成

Kimi K2 Triton测试结果
Kimi K2 - 可以完成
✅ 可完成
Qwen3-235B-A22B

第一次运行遇到报错:AttributeError: module 'triton' has no attribute 'next_power_of_two'. Did you mean: 'next_power_of_2'?

将报错给 Qwen 后重新写,还是没有修复:AttributeError: module 'triton.language' has no attribute 'next_power_of_2'

❌ 调用报错
DeepSeek R1

第一次运行报错:ValueError: too many values to unpack (expected 2)

第二次运行正确

DeepSeek R1 Triton测试结果
DeepSeek R1 - 第二次成功
✅ 需重试

📈 模型能力总结对比

模型名称 算法能力(LiveCodeBench) 工程能力(SWE-Bench) 小球物理模拟 Triton 算子实现 总体表现简评
Claude Sonnet 4 ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ✅优秀 ✅优秀 工程能力最强,综合表现非常稳定
GPT-4o ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ❌失败 ✅优秀 算法能力最强,但偶尔会出现行为偏差
GPT o4-mini-high ⭐⭐⭐⭐ ⭐⭐⭐⭐ ✅良好 ✅优秀 表现稳定,生成代码质量高
Gemini 2.5 Pro ⭐⭐⭐⭐ ⭐⭐⭐ ❌未生成小球 ✅(有一定能力) 知识储备丰富,但在物理模拟中稍弱
Kimi K2 ⭐⭐⭐⭐ ⭐⭐⭐⭐ ✅良好(需重试) ✅(可完成) 可用性较高,第二次生成成功率更高
Deepseek R1 ⭐⭐⭐⭐ ⭐⭐⭐⭐ ❌物理出界 ✅(需重试) 性能尚可,但稳定性略差
豆包 ⭐⭐⭐ ⭐⭐⭐⭐ ✅良好 未测试 工程能力出色,小模型中表现优秀
Qwen3-235B ⭐⭐⭐⭐ ⭐⭐⭐⭐ 未测试 ❌调用报错 有潜力,但细节实现不够稳健

🎓 结语

🎯 如何挑选适合的大模型

  • 查看公开 benchmark 榜单:找性能最好的模型
  • 构造技术领域测试样例:简单测试确认模型性能
  • 多模型组合使用:不同场景选择最优模型

💡 主流模型选择经验

  • Claude 4 Opus/Sonnet:写代码第一选择,工程能力强,使用范围广
  • GPT o3:算法能力强,难度很高的某些代码只有 GPT o3 能写出来,比如根据论文中提出的新方案公式来实现对应的代码
  • Gemini 2.5 Pro:知识储备大,长文本能力强,跨模态理解需求
  • 国内模型:目前 DeepSeek R1 和 Kimi K2 算是代码能力偏强的一档,但是和 Claude 模型还有一定差距

不同的大模型侧重点不一样,所以不同的技术领域最优的大模型可能是不同的,最好能同时使用多个大模型。结合 benchmark 榜单和自定义测试,是评估模型真实可用性的最佳方式(榜单不完全可信,还是需要自己验证)。

现阶段一定有人能解决但是所有大模型都无法解决的难题,我们需要提前了解大模型的能力边界。但是一定要相信,这些问题未来大模型一定能支持。大模型的能力迭代速度远快于人的学习提升速度