Codex 讲解
论文解决了什么问题
2021 年年中,GPT-3 已经证明规模带来上下文学习,写代码仍是附属现象:GPT-3 在 HumanEval 上约为 0%。BLEU 分不清「形似」与「功能正确」,而程序合成要求的正是功能正确。
Codex 做了两件后来被当作默认做法的事:在公开代码上继续训练 GPT,把下一个 token 对准源代码分布;用手写题目与单元测试定义对错,并给出无偏的 pass@(k)。手写是为了减少训练语料泄漏。多采样被写成对「尝试多种写法」的近似。限度写得很明确:长操作链指数变差,会编造不存在的符号,会建议不安全的配置。沙箱是为了安全地运行这些样本,不是给 Agent 用的执行环境产品。
对象是函数级合成,不是在仓库里修改缺陷、提交 PR。164 道题、平均 7.7 个测试,尺度故意很小,为的是可复现。
对后续 LLM 的影响
代码成为语言模型的一等模态。此后 GPT-3.5、GPT-4 与 Claude 把代码能力做进基座,不再单独称为 Codex。评测从「形似」转为「功能正确」:HumanEval、MBPP、LiveCodeBench 沿用功能正确。pass@(k) 也解释了产品里常见的「再生成一次」。文档字符串与代码之间是同一套补全。泄漏与手写基准这一问题,一直传到 SWE-bench 的去污染讨论。
它没有解决指令跟随是否稳定,也没有解决「在真实代码库中定位、修改、验证」,后者是 2023 至 2024 年编码 Agent 的评测对象。
对 AI Agent 的影响
编码 Agent 的前提是:决策核心能够写出可执行的代码,并且有办法知道写得对不对。Codex 提供模型侧的首证,尺子见 HumanEval。没有能够运行的代码,后来就不会有「让模型在仓库里把测试跑绿」的循环。核心不是运行时:一次补全一个函数,由人在 IDE 里接受或拒绝。
| 论文里的机制 | 后来在 Agent 里对应的物理事实 |
|---|---|
| 文档字符串条件生成 | 任务说明、issue、测试名可以充当提示;模型产出补丁或脚本 |
| 单测定义正确 | 循环中「行动」的反馈可以是测试退出码 |
| pass@(k) / 多采样 | 同一步可以尝试多种补丁;后来的重试与 best-of-n 是同一逻辑放大到仓库 |
| 隔离评测环境 | 为评测而隔离;2023 年之后沙箱变成 Agent 基础设施,对象从「跑 164 道题」变成「不要在用户机器上乱执行」 |
| 函数级、独立文件 | 远窄于 SWE-bench 与多文件重构。HumanEval 通过不代表能修真实 issue |
时间线标成底层能力里的首证:行动第一次可以是被机器执行、又被机器检验的代码。