Paper2Code: Automating Code Generation from Scientific Papers in Machine Learning¶
会议: ICLR 2026
arXiv: 2504.17192
代码: github.com/going-doer/Paper2Code
领域: 代码智能
关键词: 论文转代码, 多智能体框架, 仓库级代码生成, 科学可复现性, LLM
一句话总结¶
提出 PaperCoder——一个多智能体 LLM 框架,通过规划(Planning)、分析(Analysis)、生成(Coding)三阶段流水线,将机器学习论文自动转化为可运行的代码仓库,其中 88% 的生成仓库被论文作者评为最佳,且在 PaperBench 基准上大幅超越基线。
研究背景与动机¶
- 可复现性是科学进步的核心,但顶会论文的代码可用率仅约 19.5%(2024 年),研究者常需从论文逆向工程方法和实验结果,极为耗时。
- LLM 已展现出卓越的科学文档理解和高质量代码生成能力,但现有科学工作流自动化方法(如 ideation、实验改进)通常依赖预先存在的代码实现。
- 仓库级代码生成远比单文件代码生成复杂,需要架构设计、模块结构和跨文件依赖的协调。
- 论文的写作目的是向人传达思想,包含高层动机、叙事等内容,从软件工程角度看是嘈杂、松散和模糊的。
- 现有多智能体代码生成框架(ChatDev、MetaGPT)采用自底向上策略,从短需求描述出发逐步扩展,不适合处理长篇科学文档。
- 核心挑战:仅从论文(无代码、API 或补充材料)出发,能否生成忠实的代码实现?
方法详解¶
整体框架¶
论文的写作目的是把思想讲给人听,从软件工程角度看是松散、模糊、缺少可执行结构的;而像 ChatDev、MetaGPT 这类多智能体框架走的是自底向上路线,从一句短需求逐步扩展,面对一篇完整论文很容易迷失。PaperCoder 反其道而行,模拟一个人类开发者拿到论文后的真实工作流:先通读全文做规划,再逐文件做分析,最后才动手写代码。整套系统拆成三个串联阶段,前一阶段的输出作为后一阶段的输入,让非结构化的论文 \(R\) 逐步收敛到可运行的仓库 \(C\):
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400, 'subGraphTitleMargin': {'top': 8, 'bottom': 16}}}%%
flowchart TD
R["论文 R<br/>(无代码/API/补充材料)"]
subgraph PLAN["规划阶段(Planning)→ 施工图 P"]
direction TB
P1["Overall Plan<br/>提炼核心功能摘要"] --> P2["Architecture Design<br/>文件列表 + 类图 + 序列图"]
P2 --> P3["Logic Design<br/>文件依赖与执行顺序"]
P3 --> P4["Configuration Generation<br/>合成 config.yaml"]
end
ANA["分析阶段(Analysis)→ 文件级规范 A<br/>逐文件生成功能/输入输出/依赖/算法分析"]
COD["编码阶段(Coding)<br/>按依赖顺序逐文件生成<br/>每步感知已生成文件"]
OUT["可运行代码仓库 C"]
R --> PLAN
PLAN --> ANA
ANA --> COD
COD --> OUT
关键设计¶
1. 规划阶段(Planning):把整篇论文先拆成一份可执行的施工图
直接让 LLM 从论文一把生成整个仓库,等于跳过了人类开发者最关键的"先想清楚再动手"。规划阶段用四个顺序子组件,把模糊的论文内容逐级收敛成实现级抽象。先是 Overall Plan,提炼出模型组件、训练目标、数据处理、评估协议这些核心功能的高层摘要,相当于先读懂论文到底要做什么;接着 Architecture Design 定义仓库级架构,产出文件列表、刻画静态结构的类图和刻画动态交互的序列图;然后 Logic Design 指定文件之间的依赖关系和执行顺序——这一步看似琐碎,却是后续编码不出错的前提,因为只有先确定"B 依赖 A 的模块"才能保证生成时先 A 后 B;最后 Configuration Generation 合成一份 config.yaml,把超参数、模型设置、运行时选项集中起来,方便研究者后续直接改实验配置。
2. 分析阶段(Analysis):在写每个文件之前,先把它该干什么逐字想明白
规划给出了文件清单,但每个文件具体怎么实现仍是空白。分析阶段对规划中识别出的每个文件 \(f_i\) 单独生成一份文件级分析 \(a_i\),内容覆盖这个文件的功能目标、输入输出行为、文件内与文件间的依赖关系,以及从论文正文反推出来的算法规范。等于在编码前先为每个文件写好一份详细需求说明,把论文里散落各处的细节归拢到对应文件上。
3. 编码阶段(Coding):按依赖顺序逐文件生成,每一步都看得见仓库的当前状态
有了规划的施工图和每个文件的分析,编码阶段才动手写代码。它严格按 Logic Design 给出的执行顺序逐个生成文件,且第 \(i\) 个文件的生成不是孤立的——它同时拿到原始论文 \(R\)、整体规划 \(P\)、自己的文件信息 \(f_i\) 和分析 \(a_i\),以及前面所有已生成文件 \(\{c_1, ..., c_{i-1}\}\):
这样每写一个新文件,模型都充分感知到已有的依赖和仓库的当前状态,跨文件调用才能对得上,避免自底向上方法常见的"后写的代码和先写的接口对不齐"。
损失函数/训练策略¶
- 非训练框架,基于提示工程的多智能体系统
- 默认使用 o3-mini-high 作为骨干 LLM
- 支持 Self-Refine 验证-精炼步骤,可进一步提升各阶段输出质量
- 评估:reference-based(有作者代码时)+ reference-free(无代码时)+ human evaluation(论文一作打分)
实验关键数据¶
主实验¶
Paper2CodeBench(90 篇论文,ICLR/ICML/NeurIPS 2024):
| 方法 | Ref-Based (ICLR) | Ref-Based (ICML) | Ref-Based (NeurIPS) | Ref-Free (ICLR) | Ref-Free (ICML) | Ref-Free (NeurIPS) |
|---|---|---|---|---|---|---|
| ChatDev | 2.70 | 2.97 | 2.96 | 4.00 | 4.12 | 4.01 |
| MetaGPT | 2.48 | 2.75 | 2.95 | 3.52 | 3.63 | 3.59 |
| Paper (one-shot) | 3.08 | 3.28 | 3.22 | 4.15 | 4.30 | 4.08 |
| PaperCoder | 3.68 | 3.72 | 3.83 | 4.73 | 4.73 | 4.77 |
| Oracle (作者代码) | N/A | N/A | N/A | 4.84 | 4.80 | 4.83 |
PaperBench Code-Dev(20 篇 ICML 2024):
| 方法 | Replication Score (o3-mini) | Replication Score (Claude 3.5) |
|---|---|---|
| BasicAgent | 5.1% | 35.4% |
| IterativeAgent | 16.4% | 27.5% |
| PaperCoder | 45.14% | 51.14% |
消融实验¶
| 组件累积 | Ref-Based | Ref-Free |
|---|---|---|
| Paper only | 3.28 | 4.30 |
| + Overall Plan | 3.40 | 4.34 |
| + Arch. Design | 3.13 (↓) | 4.07 (↓) |
| + Logic Design | 3.60 | 4.50 |
| + Config File | 3.66 | 4.45 |
| + Analysis (Full) | 3.72 | 4.73 |
关键发现¶
- PaperCoder 接近作者水平:Ref-Free 评分(~4.74)与 Oracle(~4.82)无统计显著差异。
- 自顶向下策略的优势:先系统分析全文再生成代码,优于 ChatDev/MetaGPT 的自底向上扩展策略。
- Logic Design 是关键转折点:单独加入 Architecture Design 反而降分(无执行顺序导致混乱),但加入 Logic Design 后性能大幅回升。
- 人类评估一致性:88% 的 PaperCoder 生成仓库被一作评为最佳,92% 表示"确实有帮助"。
- 可执行性:平均仅需修改 0.81% 的代码行即可成功执行。
亮点与洞察¶
- 定义并系统化了"论文到代码"这一新任务,构建了完整的评估体系(Paper2CodeBench)。
- 三阶段流水线设计精巧——模拟人类开发者的 Plan → Analyze → Code 工作流,每阶段由专门智能体执行。
- 评估框架全面:reference-based + reference-free + 论文一作人类评估三位一体,且验证了 model-based 与 human evaluation 的高相关性(r=0.79)。
- Self-Refine 实验表明早期规划输出的精炼可传导至下游编码质量提升(Config File 提升幅度最大 +1.00)。
局限与展望¶
- 强依赖骨干 LLM 能力——开源模型(DS-Coder、Qwen-Coder)性能显著低于 o3-mini-high,实用性受限于 API 成本。
- 数据处理覆盖率最低——论文通常对数据格式、预处理步骤描述不足,是生成错误的主要来源。
- 仅评估 ML 领域论文,对其他科学领域(物理、生物)的泛化性未知。
- 评估指标以 LLM 判断为主,虽与人类评分相关性高但仍非完全替代。
相关工作与启发¶
- ChatDev / MetaGPT:多智能体代码开发框架,自底向上策略,不适合处理长篇论文输入。
- PaperBench (Starace et al.):并发工作,提供带人类标注 rubric 的评估基准(20 篇 ICML 论文),侧重评估而非方法。
- Self-Refine (Madaan et al.):验证-精炼范式,被整合到 PaperCoder 的规划和分析阶段。
- 启发:论文到代码的自动化可大幅加速科学可复现性,但需要"先理解全局再编码"的自顶向下方法论。
评分¶
- ⭐ 新颖性: 4/5 — 新任务定义(Paper2Code)+ 结构化三阶段框架 + 完整评估体系
- ⭐ 实验充分度: 4.5/5 — 90 篇论文自动评估 + 21 篇人类评估 + PaperBench 外部验证 + 丰富消融
- ⭐ 写作质量: 4.5/5 — 论文结构清晰,形式化准确,图表质量高
- ⭐ 价值: 4.5/5 — 直接解决 ML 社区的可复现性痛点,代码已开源,具有广泛影响力