GitChameleon 2.0: Evaluating AI Code Generation Against Python Library Version Incompatibilities
Idea
GitChameleon 2.0 把 library version 当作代码生成必须满足的显式条件,提供 328 个 Python completion 问题及独立执行环境、可见测试和隐藏测试。它研究模型面对多个版本的已知 API 时,能否选择指定版本的正确调用和行为。
Research Problem
通用 coding 分数无法直接表示 version-conditioned generation;代码迁移 benchmark 多关注从旧项目升级,另一些评测不执行候选。即使模型知道某功能,也可能混用已废弃参数或不同版本语义,因此问题不是单纯获取最新知识。
Insight
在 prompt 明示版本并安装同一版本才能把“遵循版本要求”落到可运行证据。可见测试允许自我调试,但隐藏测试才检验是否泛化到其他输入;作者发现 self-debug 提高隐藏正确率的同时扩大 visible–hidden gap,说明修好已见反馈不等于完整掌握 API。
Method
- 选取有充分 changelog 的热门 Python library,人工查找函数弃用、参数、行为和新增功能变化;忽略不影响表面 API 用法的 backend 优化,覆盖 26 库、2014–2023 版本。
- 针对每处变化编写问题、starter code、reference solution、简洁 visible test,并整理版本相关文档供 RAG;由 coding agent 辅助生成 hidden tests,经运行反馈修正和人工核验,使用精确依赖版本的 Docker 验证参考实现。
- 所有方法收到目标版本约束,执行环境安装相应版本;主指标为 hidden test success,API Hit Rate 仅检查是否调用参考 API,允许功能等价解因使用其他 API 而 hit 较低。
- 比较 greedy、zero-shot CoT、基于 visible test 的 self-debug、RAG、multi-step agent 和 CLI/IDE assistant,并对 agent 是否能访问 sandbox 作对照,测试文档与执行反馈各自贡献。
- 按版本变化类别、模型及反馈设置分析错误,特别检查过时属性/参数和 visible–hidden 差距;版本有意落在多数模型训练时间范围内,目标是版本消歧而非纯粹未知版本泛化。
Sources & Reading Scope
阅读依据:官方 PDF 正文。核读页码按 PDF 页序计数,可能与 proceedings 页码不同。
p. 1 · p. 3 · p. 4 · p. 5 · p. 13
核读章节:Dataset Structure · Evaluation Metrics · Statistics · Experimental Setup · LLM Self-Debugging · Multi-Step Agent · Dataset Construction Process · Dataset Validation · Hidden Test Construction
已核读任务设计、执行双控制、测试生成和 self-debug 分析。本文参考测试可检查功能和版本,不将通过有限测试等同于任意程序行为正确。