<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>AI Agent 学习笔记 – Codex</title>
    <link>https://skyao.net/learning-ai-agent/timeline/before2022/codex/</link>
    <description>Recent content in Codex on AI Agent 学习笔记</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-cn</language>
    <lastBuildDate>Mon, 14 Sep 2026 00:00:00 +0000</lastBuildDate>
    
	  <atom:link href="https://skyao.net/learning-ai-agent/timeline/before2022/codex/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Timeline: Evaluating Large Language Models Trained on Code（论文）</title>
      <link>https://skyao.net/learning-ai-agent/timeline/before2022/codex/paper/</link>
      <pubDate>Mon, 14 Sep 2026 00:00:00 +0000</pubDate>
      
      <guid>https://skyao.net/learning-ai-agent/timeline/before2022/codex/paper/</guid>
      <description>
        
        
        &lt;p&gt;Mark Chen, Jerry Tworek, Heewoo Jun, Qiming Yuan 等（OpenAI；部分作者标注工作完成于 OpenAI）。&lt;em&gt;Evaluating Large Language Models Trained on Code&lt;/em&gt;。2021-07。&lt;a href=&#34;https://arxiv.org/abs/2107.03374&#34;&gt;arXiv:2107.03374&lt;/a&gt;。Chen、Tworek、Jun、Yuan 为通讯作者。正文写明：若干早期 Codex 模型的后代驱动 GitHub Copilot 与 OpenAI API 中的 Codex。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;摘要&#34;&gt;摘要&lt;/h2&gt;
&lt;p&gt;引入 Codex：在 GitHub 公开代码上微调的 GPT 语言模型，并研究其写 Python 的能力。独立的生产版本驱动 GitHub Copilot。新评测集 &lt;strong&gt;HumanEval&lt;/strong&gt; 衡量「根据文档字符串合成程序」的功能正确性：本模型解出 28.8% 的题目，GPT-3 为 0%，GPT-J 为 11.4%。反复从模型采样是应对难题的有效策略：每题 100 个样本可解出 70.2%。限度包括：长操作链的文档字符串；把操作绑定到变量。最后讨论部署强大代码生成技术的更广泛影响：安全、安保与经济。&lt;/p&gt;
&lt;h2 id=&#34;1-引言&#34;&gt;1 引言&lt;/h2&gt;
&lt;p&gt;序列预测模型已成为多模态的通法。代码出现在大规模数据集里之后，语言模型开始推进程序合成。GPT-3 已能从 Python 文档字符串生成简单程序，尽管并未为代码生成专门训练。假设专门的 GPT（Codex）能擅长多种编码任务。&lt;/p&gt;
&lt;p&gt;本文聚焦：&lt;strong&gt;根据文档字符串生成独立的 Python 函数，用单元测试自动判对错&lt;/strong&gt;。这与自然语言生成靠启发式或人工打分不同。为此手写 164 道带单测的编程题，覆盖语言理解、算法与简单数学，部分接近初级面试题。数据与评测框架发布于 &lt;a href=&#34;https://github.com/openai/human-eval&#34;&gt;https://github.com/openai/human-eval&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;单样本：12B Codex 解 28.8%，300M 解 13.2%；6B GPT-J 11.4%；各档 GPT 接近 0%。再在「正确实现的独立函数」上微调得到 Codex-S，单样本 37.7%。每题 100 个样本并选出能过单测的，Codex-S 达 77.5%；若不能跑单测、只取平均 log 概率最高的样本，为 44.5%。真实编程通常是迭代与修复缺陷，多采样是对这一过程的近似。&lt;/p&gt;
&lt;h2 id=&#34;2-评测框架&#34;&gt;2 评测框架&lt;/h2&gt;
&lt;h3 id=&#34;21-功能正确性与-passk&#34;&gt;2.1 功能正确性与 pass@(k)&lt;/h3&gt;
&lt;p&gt;代码生成主流曾用与参考解的精确或模糊匹配（BLEU）。匹配无法覆盖「功能等价但写法不同」的大空间。本文采用功能正确：样本通过一组单元测试即算对。这与测试驱动开发、合并代码前先通过单元测试的工程习惯一致。&lt;/p&gt;
&lt;p&gt;pass@(k)：每题生成 (k) 个样本，任一通过则该题算解出，再报解出比例。直接用 (k) 个样本方差大。改为每题生成 (n\ge k) 个（本文 (n=200)，(k\le 100)），设 (c) 个通过，用无偏估计&lt;/p&gt;
&lt;p&gt;[
\mathrm{pass@}k=\mathbb{E}_{\text{Problems}}\left[1-\frac{\binom{n-c}{k}}{\binom{n}{k}}\right]
]&lt;/p&gt;
&lt;p&gt;用 (1-(1-\hat p)^k) 是有偏的。后文显示：功能不等价的错误解与正确解的 BLEU 分布大量重叠，优化 BLEU 不等于优化功能正确。&lt;/p&gt;
&lt;h3 id=&#34;22-humaneval&#34;&gt;2.2 HumanEval&lt;/h3&gt;
&lt;p&gt;164 道手写题。每题含签名、文档字符串、函数体与若干单测，平均 7.7 个测试。必须手写：模型训在 GitHub 很大一部分上，网上已有各种题解（例如 APPS 所用的 Codeforces）。&lt;/p&gt;
&lt;h3 id=&#34;23-沙箱&#34;&gt;2.3 沙箱&lt;/h3&gt;
&lt;p&gt;公开程序意图未知，生成程序常是错的，执行有安全风险。因此评测在隔离环境里执行，并限制网络访问。目标：防止修改宿主机、持久化、访问敏感资源或外泄数据。&lt;/p&gt;
&lt;h2 id=&#34;3-代码微调&#34;&gt;3 代码微调&lt;/h2&gt;
&lt;p&gt;在最多 12B 参数的 GPT 上微调得到 Codex。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;数据。&lt;/strong&gt; 2020 年 5 月，GitHub 上 5400 万个公开仓库；小于 1MB 的不重复 Python 文件 179GB。过滤可能自动生成、平均行长 &amp;gt;100、最大行长 &amp;gt;1000、字母数字比例过低的文件后，&lt;strong&gt;159GB&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方法。&lt;/strong&gt; 原假设从 GPT-3 初始化会更好；未观察到最终提升，可能因为微调数据已经很大。但从 GPT 初始化收敛更快，后续实验仍用。学习率与对应 GPT 相同；175 step 线性 warmup + 余弦衰减；共 &lt;strong&gt;1000 亿 token&lt;/strong&gt;；Adam。词表基于 GPT-3，另加不同长度空白的专用 token，代码大约少用 30% token。采样遇到 &lt;code&gt;\nclass&lt;/code&gt;、&lt;code&gt;\ndef&lt;/code&gt; 等停止，以免继续写下一个函数。nucleus (p=0.95)。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;结果。&lt;/strong&gt; 代码微调后的测试损失仍近似幂律。pass@(k) 的最优温度随 (k) 升高：多样性对大 (k) 有利。12B：表 1 中 pass@1 / 10 / 100 为 28.81% / 46.81% / 72.31%。GPT-J-6B 约等于 Codex-300M；Tabnine 免费最大模型约等于 Codex-12M。&lt;/p&gt;
&lt;p&gt;不能跑单测、只能返回一个补全时：选&lt;strong&gt;平均 token log 概率最高&lt;/strong&gt;的样本好于随机；按总和 log 概率选可能比随机更差。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;APPS。&lt;/strong&gt; Codex 未在 APPS 上微调。文档字符串末加一条输入输出示例作格式提示（文中称 1-shot）。12B 与在 APPS 上微调的 GPT-Neo 可比。竞赛题常写出正确但不够快的解。&lt;/p&gt;
&lt;h2 id=&#34;4-监督微调codex-s&#34;&gt;4 监督微调（Codex-S）&lt;/h2&gt;
&lt;p&gt;GitHub 上还有类、配置、脚本、数据文件，与「从文档字符串合成函数」分布不同。再从竞赛/面试站（约 1 万题）以及带 CI 的仓库（追踪函数调用得到输入输出）收集「正确的独立函数」，过滤掉 Codex-12B 生成 100 个样本仍无一正确的题。在这些题上再微调，得到 Codex-S。pass@1 平均高约 6.5 个百分点，pass@100 平均高约 15.1 个百分点。&lt;/p&gt;
&lt;h2 id=&#34;5-文档字符串生成codex-d&#34;&gt;5 文档字符串生成（Codex-D）&lt;/h2&gt;
&lt;p&gt;把签名 + 参考实现 + 文档字符串拼起来，训练根据代码写文档字符串，便于描述生成代码的意图。人工判「是否唯一且准确描述函数体」：Codex-D-12B 的 pass@1 / pass@10 为 20.3% / 46.5%，低于对应 Codex-S。用反向翻译（生成代码再打文档字符串似然）给多样本排序，差于平均 log 概率。&lt;/p&gt;
&lt;h2 id=&#34;6-限度&#34;&gt;6 限度&lt;/h2&gt;
&lt;p&gt;作者自己列出：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;训练样本效率极差：用了 GitHub 上公开 Python 的很大一部分；入门课学生仍应解出比 Codex-12B 更大的比例。&lt;/li&gt;
&lt;li&gt;会建议语法错误或未定义的代码，调用作用域外的函数、变量、属性。&lt;/li&gt;
&lt;li&gt;长、高层、系统级规格越来越吃力。把 13 种确定性字符串操作串进文档字符串，每多一环 pass 率大约降 2–3 倍——人若会做长度为 2 的链，应能做任意长；模型不是。&lt;/li&gt;
&lt;li&gt;操作与变量的绑定会错，尤其文档字符串里操作和变量都多的时候。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;7-更广泛影响与危害分析&#34;&gt;7 更广泛影响与危害分析&lt;/h2&gt;
&lt;p&gt;潜在用处：上手新代码库、减少上下文切换、让非程序员写规格由模型起草实现、教育。同时有对齐、误用与安全问题。危害分析不是某一产品说明书。&lt;/p&gt;
&lt;p&gt;要点：过度依赖（看起来正确，实际并未完成意图，对新手尤甚）；不对齐（下一 token 目标会模仿提示里的坏代码，规模变大时这类缺陷可能更明显）；偏见；不安全代码（附录 G：生成加密上下文时，相当比例选用明显不安全的参数，如过短 RSA、AES-ECB）；对恶意软件门槛的当前评估是「尚未实质降低」，更强模型另说。缓解：文档与 UI、代码审查、过滤、API 审核与限流。&lt;/p&gt;
&lt;h2 id=&#34;89-相关工作与结论&#34;&gt;8–9 相关工作与结论&lt;/h2&gt;
&lt;p&gt;程序合成、CodeBERT / GPT-Neo / APPS 等。结论：在代码上微调的 GPT 可用单测衡量的功能正确性写出 Python 函数；多采样显著提高解出率；限度与部署风险需要单独对待。致谢包括与 GitHub 合作构建 Copilot、Azure 训练基础设施。&lt;/p&gt;

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

      </description>
    </item>
    
  </channel>
</rss>
