2021 年 OpenAI 的一篇论文,直接催生了 GitHub Copilot——它做对了一件「反直觉」的事
- 关联论文:2107.03374
你今天让 ChatGPT 写一段 Python 函数,它真的会给你一段能直接跑起来的代码。
但 2021 年之前,大多数 AI 写的代码都跑不通——要么语法错误,要么逻辑不对,要么干脆给你一段看起来像代码的英文。
OpenAI 2021 年 7 月发的那篇论文,把这件事翻了过来。
被引 10800+ 次、直接催生了 GitHub Copilot、定义了今天几乎所有「代码 AI」评估的元标准——它到底讲了什么?
一句话告诉你这篇论文干了什么
OpenAI 把 GPT 模型放在 GitHub 代码上微调,得到了 Codex;同时发布了一个叫 HumanEval 的评测集(164 道带单元测试的编程题)。
但真正反直觉的发现是:
让 AI 写一次代码,成功率只有 28.8%。让它写 100 次然后选一个能跑通的,成功率直接飙到 70.2%。
换句话说:让 AI 重复试 100 次,比让它一次写对更靠谱。
为什么这件事值得普通人关注
如果你今天用过任何代码 AI(ChatGPT、Cursor、Copilot、通义灵码、文心一言),它们底层的核心思路都来自这篇论文:
🧑💻 GitHub Copilot——直接由 Codex 衍生,2021 年底上线 🤖 Cursor、Claude Code、Codeium——都在用「采样+测试过滤」的思路 📚 学生学编程——AI 现在能当 24 小时陪练,也是这篇论文的遗产 🏢 企业内部工具——很多公司用「多次采样+单测验证」做内部代码助手
更广地说,这篇论文改变了「评估 AI」的方式:
以前的 AI 评测用 BLEU 这种「文本相似度」指标——生成的代码「看着像」就得分。 这篇论文之后,默认是「生成的代码能不能跑通测试」——能用就有用,不能用就是零。
它讲了什么?去掉术语版
第一步:造了一个「考试卷」——HumanEval
研究人员手工写了 164 道 Python 编程题,每道题长这样:
def add_two_numbers(a, b):
"""返回 a + b 的和"""
# 你的代码写在这里
并且每道题都附带了单元测试:
assert add_two_numbers(2, 3) == 5
assert add_two_numbers(-1, 1) == 0
AI 写完函数后,自动跑测试——能跑通就得分,跑不通就是 0 分。
这个数据集成为了「代码 AI」的托福考试——今天任何新出的代码大模型(Code Llama、DeepSeek-Coder、Qwen-Coder)发布时,HumanEval 分数都是必报指标。
第二步:在 GitHub 代码上微调 GPT
研究人员拿 GPT 的架构,在 GitHub 上的几十亿行公开代码上做微调,得到了 Codex 系列——从 12M 到 12B 参数(12B 是最大的)。
关键发现: - 从零训练的代码模型(GPT-Neo) = 几乎写不出能跑的代码 - 微调 GPT 权重的 Codex-12B = 单次写代码 28.8% 能跑通 - 再在「正确代码」上微调一次的 Codex-S = 单次能跑通率提升到 37.7%
核心反直觉点:代码能力不是「学语法」,是「在大量真实代码上模仿人类写法」。
第三步:反直觉的发现——「重复 100 次比一次写对更靠谱」
这是整篇论文最炸的实验结果:
| 采样次数 | pass@1(单次) | pass@100(100 次里中一次) |
|---|---|---|
| Codex-12B | 28.8% | 70.2% |
| Codex-S-12B | 37.7% | —— |
意思是:AI 一次写对的概率不到 30%,但给它 100 次机会,它能从 100 个候选里挑出一个对的——这时候成功率超过 70%。
这直接催生了「AI 写代码 + 自动跑测试」这条技术路线,也是今天所有代码 Agent 的核心机制。
它打破了一个「常识」
以前的 AI 圈认为:模型越大、训练越好,单次输出就应该越准。
这篇论文说:不,有时候「让模型多试几次」比「让模型一次写对」更有效。
这是一个范式转换——从「追求单个高质量输出」转向「用多样性+筛选换质量」。
今天这个思想被广泛用在: - 代码生成(Codex 原生场景) - 数学解题(AlphaCode 用 100 万次采样刷 Codeforces) - Agent 决策(多路径探索+自评) - 蛋白质设计(AlphaFold 多次采样后挑最优)
谁该关注这件事?
🎯 写代码的开发者——你今天用的 AI 工具(无论 Copilot 还是 Cursor)都站在这篇论文的肩膀上;理解了「采样+测试」的原理,你才能更聪明地用 AI(例如对复杂任务主动让它多生成几个版本)
🎯 AI 产品经理——评估一个代码 AI,不能只看「写得像不像」,必须用 HumanEval 这种「能跑不能跑」的指标
🎯 企业技术决策者——如果想自建代码助手,核心是要有沙盒+测试 pipeline,否则 LLM 生成的代码直接进生产会出大事
🎯 学生/研究者——这是 LLM 「涌现能力」的早期实证:微调就能解锁写代码能力,后续所有 LLM 都在这个方向狂奔
它也有局限(不能无脑吹)
⚠️ HumanEval 已严重饱和:今天 GPT-4 / Claude-3.5 / Gemini-2.5 在 HumanEval 上都 90%+,区分度没了。评测新模型要用 LiveCodeBench、SWE-bench 这种动态题库
⚠️ 只看「单函数生成」:真实编程要改 bug、跨文件、改架构——HumanEval 完全测不到这些
⚠️ 沙盒安全问题:让 LLM 写的代码直接跑 = 让一个不请自来的程序员在你的机器上跑命令——必须有 Docker + 网络隔离
⚠️ GitHub 版权争议:用 GitHub 公开代码训练,2023 年起引发多起集体诉讼,这条训练路线今天已不那么干净
一句话总结
Codex 论文证明:让 AI 在 GitHub 代码上微调就能写代码,「多次采样+测试过滤」比「一次写对」更靠谱——这两件事一起催生了今天的 GitHub Copilot 和整个代码 AI 产业。
被引 10800+ 次不是偶然——它重新定义了「AI 能不能写代码」这件事的评估方式,以及「AI 怎么写代码才靠谱」的工程范式。
三个标题变体
- 让 AI 写 100 次代码然后选一个能跑的——OpenAI 这篇论文定义了今天的 Copilot(反直觉策略+权威钩子)
- 为什么 ChatGPT 能写出能跑的 Python?故事要从 2021 年这篇被引过万的论文说起(问答钩子+历史溯源)
- 代码 AI 的「托福考试」是怎么来的?一篇论文催生了 GitHub Copilot 也定下了行业标准(类比钩子+产业影响)
小红书风格卡片文案(可直接发布)
💻 AI 写的代码,真的能跑吗?
你以为 ChatGPT 写代码是靠「一次写对」?错了❌
2021 年 OpenAI 的这篇论文证明: 让 AI 写 100 次代码,从里面挑一个能跑通的——成功率直接飙到 70%+
📌 它讲了啥? ✅ 把 GPT 微调在 GitHub 代码上 → 得到 Codex ✅ 造了 164 道编程题 + 自动测试 → HumanEval 评测集(代码 AI 的「托福考试」) ✅ 关键发现:采样 100 次 vs 一次写对,效果天差地别
📌 它影响了啥? 🤖 直接催生 GitHub Copilot(2021 年底上线) 📊 HumanEval 成为代码 AI 事实标准(Code Llama / DeepSeek-Coder 都报这个分) 🛠️ 「采样+测试」成为代码 Agent 核心机制 🧬 「多次采样换质量」思路影响数学解题 / 蛋白质设计 / Agent 决策
📌 局限提醒 ⚠️ HumanEval 现在 90%+ 饱和,新模型要看 LiveCodeBench / SWE-bench ⚠️ 真实编程要跨文件改 bug,HumanEval 测不到 ⚠️ AI 写代码必须有沙盒,不然等于让陌生人跑命令
💡 被引 10800+ 次,直接重塑了「AI 写代码」这件事的玩法
一句话总结:AI 不需要一次写对,需要「多次试+自动筛」
你用 AI 写过最爽的一段代码是啥?评论区聊聊 👇