为什么 LeetCode 刷题已不能代表 AI 的真实编程水平
很多模型在 HumanEval(函数级简短算法题)上能够轻松达到 90%+ 的准确率,但在面对真实 GitHub 开源项目的复杂 Issue 时却束手无策。 因为真实软件工程涉及:数万行代码文件、复杂的包依赖、模糊的错误描述、隐蔽的回归测试。
SWE-bench 从 Django、SymPy、scikit-learn 等顶级真实仓库中提取数千个真实 Issue 与修复 Pull Request,成为检验大模型工程实战能力的终极考场。
定位 (Localization) 与差异修补 (Patch Generation)
在 SWE-bench 中取得前沿成绩的核心战术:
- 分级上下文定位 (Hierarchical Localization):不直接把整个仓库喂给模型,而是首先利用语法树与 BM25 定位可能涉及的 2~3 个核心文件和具体行号区间;
- 单元测试伴随验证 (Test-Driven Verification):利用项目中已有的回归测试用例,在提交前在沙盒内真实运行
pytest验证; - 标准 Git Diff Patch 生成:要求模型输出标准的 Unified Diff 补丁格式,确保与现有 Git 版本控制流水线无缝集成。
Git Unified Diff 格式正确性验证
import assert from "node:assert/strict";
function isUnifiedDiff(patch) {
return patch.includes("--- a/") && patch.includes("+++ b/");
}
assert.equal(isUnifiedDiff("--- a/f.ts\n+++ b/f.ts"), true);原始资料与溯源链接
- SWE-bench: Can Language Models Resolve Real-World GitHub Issues?:普林斯顿大学 SWE-bench 官方基准评测。
感谢阅读本文
如果你觉得内容有帮助,欢迎点赞支持或分享给同行开发者。
0 次阅读0 人赞过