跳转至

LibEvoBench: Probing Temporal Knowledge Stratification in Code Generation Models

会议: NeurIPS 2026
arXiv: 2606.25402
OpenReview: https://openreview.net/forum?id=OPA18h84hd
代码: https://github.com/danielecipollone/LibEvoBench
领域: 代码智能
关键词: 代码大模型, 库版本演化, API生成, 知识分层, 幻觉分类学

一句话总结

提出跨多版本演化评测基准 LibEvoBench 与综合指标 SEUS,系统揭示前沿代码大模型在演化 API 上存在严重的“版本遗忘”与年代倒错(anachronistic)错误,且对版本显式约束几乎脱敏。

研究背景与动机

现代软件开发高度依赖第三方库生态,大型工程项目往往因为向下兼容约束与高昂的迁移成本,将数百个依赖包长期锁定在历史版本。然而,库生态本身以独立且高频的迭代节奏演进,新入口增加、函数签名变更以及废弃符号随处可见。这就要求代码大语言模型在辅助编程时,必须具备版本特异性(version-specific)的开发上下文理解能力——即生成的 API 调用、参数组合与用法必须严格符合项目依赖清单所声明的特定版本,而非盲目给出最新或全局最高频的写法。

然而,现有代码大模型的预训练范式普遍采用跨时间混合的代码与文档语料,训练目标将不同历史时期的异构实现压缩进同一套权重中,缺乏显式的机制来对时间与版本知识进行分层管理。这种范式导致模型极易产生年代倒错错误(anachronistic errors),即输出了在某个版本合法但在当前指定目标版本中不可用或已变更的 API 调用。以往的代码生成基准要么仅关注少量人工整理的破坏性变更(breaking changes),要么依赖启发式字符串匹配而缺乏跨版本演化的确定性真值,无法诊断模型时间知识分层的本质瓶颈。

为了系统解耦并量化代码模型的时间知识分层缺陷,本文构建了一个基于真实仓库依赖清单、结合官方文档库存与运行时动态内省的完整评测框架。本文的核心 idea 是:构建多任务演化基准 LibEvoBench 与软件演化理解指标 SEUS,将 API 严格区分为稳定与演化两类,通过确定性矩阵查找建立首个细粒度年代倒错幻觉分类学,定量探究前沿模型在不同版本演化压力下的行为模式。

方法详解

整体框架

LibEvoBench 覆盖 PyTorch、NumPy 与 SciPy 三大核心 Python 科学计算库,横跨 29 个版本历史,包含超过 12.5 万个评测样本。该基准从真实 GitHub 仓库中挖掘固定版本声明的依赖项目,结合官方 Sphinx 文档清单与隔离环境下的运行时模块内省,构建出确定性的 API 兼容性矩阵与签名兼容性矩阵。评测体系围绕三大互补任务展开:端到端上下文代码补全(API Calling, API-C)、声明性 API 检索识别(API Identification, API-I)以及无上下文参数签名回忆(Signature Recall, SR)。同时,通过两级细粒度的确定性幻觉分类学与 SEUS 综合指标,全面刻画模型跨版本演化的鲁棒性。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["真实代码仓库与Sphinx文档<br/>70k requirements.txt + 官方objects.inv"] --> B["双重视角API表面重构与兼容性矩阵<br/>文档库存与运行时内省交叉验证"]
    B --> C["三项分级评估任务体系<br/>API调用 (API-C) / 识别 (API-I) / 签名回忆 (SR)"]
    C --> D["确定性年代倒错幻觉分类学<br/>Correct / Invalid / Anachronistic / Unknown"]
    D --> E["软件演化理解评分 (SEUS)<br/>调和平均性能 - 跨版本方差惩罚 - 倒错率惩罚"]

关键设计

1. 双重视角 API 表面重构与兼容性矩阵构建:消除真值歧义 针对文档滞后(如部分公开符号多年未收录文档)与运行时存在内部私有符号的矛盾,方法引入文档与运行时的交叉验证机制。一方面利用 sphobjinv 解析官方发布伴随的 Sphinx objects.inv 确定作者意图公开的符号;另一方面在由 uv 搭建的独立虚拟环境中安装对应版本库,利用 pkgutil 遍历模块树并反射获取规范符号与完整参数签名。只有当两者同时确认时,API 状态才被标记为存在(Present);若某一符号曾被确认但在后续版本文档中下架,则判定为废弃(Absent)。由此构建 API 兼容性矩阵 \(\mathbf{A} \in \{0,1,\text{na}\}^{|\mathcal{F}| \times |\mathcal{V}|}\) 与签名兼容性矩阵 \(\mathbf{S} \in \{0,1,\text{na}\}^{|\mathcal{P}| \times |\mathcal{V}|}\)。模糊未决的单元格仅占 3.4%,从而为全库划分出稳定 API(跨版本签名完全恒定)与演化 API(生命周期内增删或签名变更)。

2. 三项互补任务与渐进去噪阶梯:剥离检索干扰与参数记忆 基准设计了三大任务以探测不同模态的知识表征能力。API-C 从具有星标过滤和宽松开源协议的项目中挖掘真实调用点,采用 Jedi 静态分析引擎在对应版本的虚拟环境中解析真实调用入口,并设计从 L0 到 L3 的 4 级渐进提示阶梯:L0 仅提供原始代码上下文;L1 引入屏蔽了名称的目标函数 docstring;L2 进一步增加显式版本约束注释(# requires: lib==ver);L3 给出函数名与目标版本,要求预测实参。API-I 则直接由兼容性矩阵驱动,给定模块路径与脱敏功能描述要求识别 API 名称,检验声明式知识。SR 则在完全不提供上下文的前提下,仅根据完整 API 名与版本号要求复现形参名、默认值与参数顺序,精确测试参数级历史演变记忆。

3. 确定性两级幻觉分类学:分离年代倒错与无中生有 依托构建的兼容矩阵,评测无需人工标注或易漂移的 LLM-as-a-Judge,即可对每个输出进行确定性矩阵索引归类。在 API 级别,预测结果划分为四类:正确(Correct)、无效但存在(Invalid,属于当前版本合法符号但非预期目标,代表检索混淆)、年代倒错(Anachronistic,在库的历史版本中存在但目标版本不存在,代表时序混淆)以及未知(Unknown,任何版本均未出现过,代表凭空捏造)。在参数级别,将参数同样分为 Correct、Anachronistic 和 Unknown。这一机制首次将时间年代倒错从一般的幻觉概念中解耦出来,使研究人员能够量化模型究竟是“缺乏知识”还是“混淆了版本上下文”。

4. 软件演化理解评分 (SEUS):惩罚跨版本不稳定性与年代倒错 为了避免模型仅靠稳定 API 刷高总体均分而掩盖对版本演化适应能力的溃败,提出综合指标 SEUS。设某版本 \(v\) 下模型在稳定 API 上的评分为 \(S_v\),在演化 API 上的评分为 \(E_v\)。首先采用调和平均数平衡两类表现,迫使模型在两端均保持高水准: $\(B_v = \frac{2 S_v E_v}{S_v + E_v}\)$ 最终在所有库与任务集合 \(\mathcal{L} \times \mathcal{T}\) 上综合计算跨版本期望,并扣除跨版本波动惩罚项与年代倒错惩罚项: $\(\mathrm{SEUS} = \frac{1}{N} \sum_{(\ell, t) \in \mathcal{L} \times \mathcal{T}} \left( \mathbb{E}_v [B_v] - \lambda \cdot \mathrm{Std}_v(E_v) - \gamma \cdot A_{\ell, t} \right)\)$ 其中 \(\lambda = \gamma = 0.5\),\(A_{\ell, t}\) 表示演化 API 上的年代倒错错误率。方差惩罚针对 \(E_v\) 而非 \(B_v\),精准约束演化知识的跨版本一致性;年代倒错惩罚则直指模型的时序混淆缺陷。

实验关键数据

主实验

评测涵盖 OpenAI、Anthropic、Google 及 Qwen3.5 多个代际的前沿与开源模型(全量贪婪解码,zero temperature)。下表展示各模型族最具代表性模型在 SEUS 指标及稳定/演化切分下的表现(数值来自论文主表):

模型 SEUS 稳定API评分 (Stable) 演化API评分 (Evolving) 演化保留率 (Retention, %) 稳定性惩罚 (pp) 年代倒错惩罚 (pp)
GPT-5.4 86.0 92.0 86.4 94.1 2.0 1.0
GPT-5.5 85.1 92.3 86.1 93.5 2.7 0.9
Sonnet 4.6 81.0 89.3 82.4 92.4 3.4 1.0
Sonnet 4 77.6 87.8 78.5 89.6 3.7 1.1
Gemini-3-flash 77.3 87.8 78.5 89.4 3.9 1.2
GPT-5.1 70.7 83.8 71.6 85.3 4.2 1.5
GPT-4.1 70.6 84.3 71.7 85.0 4.5 1.5
Gemini-2.5-flash 68.9 81.6 69.8 85.4 4.1 1.5
Qwen3.5 397B 67.9 80.2 68.9 85.9 3.9 1.4
Qwen3.5 122B 60.3 70.5 62.3 87.8 3.5 1.6
Qwen3.5 35B 52.6 63.3 54.7 85.9 3.4 1.8

消融与诊断实验:API-C 提示阶梯与幻觉分布

针对 API-C 任务的不同提示上下文阶梯(L0 到 L3)以及错误类型在不同库与任务中的分布,消融与诊断结果如下:

提示阶梯配置 输入包含信息 平均性能变化趋势 机制诊断与说明
L0 (Raw Code) 仅原始代码上下文 基线水平 (较低) 仅依赖上下文推断目标 API 调用,检索与语法复合挑战
L1 (+Docstring) 原始代码 + 脱敏文档描述 +10 到 +20 pp 显著跃升 显式语义文档大幅降低检索歧义,验证模型具备语义定位能力
L2 (+Version) 代码 + 文档 + 显式版本号 性能无统计显著变化 (≤0.5 pp) 显式指定版本号无法激活有效时序知识,模型对版本标记“脱敏”
L3 (+Name+Ver) 提供 API 名称 + 版本号 转移至参数召回率测试 聚焦参数演变,模型常保守输出高置信子集以规避幻觉

关键发现

  • 演化 API 表现随版本更新系统性崩塌:所有模型在跨版本的稳定 API 上准确率曲线均保持平直,而在演化 API 上呈现一致的向近期版本持续恶化趋势。最强模型如 GPT-5.5 与 Sonnet 4.6 在稳定与演化 API 之间仍存在 5-10 个百分点的硬性差距。
  • 参数规模提升无法扭转时序退化曲线:Qwen3.5 家族在 35B、122B 和 397B 三个尺寸下的演化 API 衰减斜率几乎平行,表明参数规模仅能平移性能基准线,无法从根本上解决缺乏时间知识分层的结构性缺陷。
  • 参数级别年代倒错显著高于符号选择级别:在 API-I 和 API-C 任务中,模型选错时倾向于回退到同库中跨版本通用的高频有效符号(Invalid),年代倒错占比极低;然而在签名回忆(SR)任务中,迫使模型显式写出全部形参时,年代倒错错误率激增至 6%–14%,暴露出模型深层的时序记忆交织与混淆。
  • SEUS 指标对版本一致性的敏感性:GPT-5.5 在稳定 API 上略高于 GPT-5.4(92.3 vs 92.0),但由于跨版本稳定性方差更大(2.7 pp vs 2.0 pp),最终 SEUS 得分被 GPT-5.4 反超,体现出 SEUS 对演化鲁棒性而非单点峰值能力的有效筛选。

亮点与洞察

  • 构建了基于编译器与运行时的确定性幻觉判定标准:绕过了依赖 LLM 判别或静态文本匹配的传统手段,利用真实环境反射与 Sphinx 文档清单构建真值矩阵,使评测完全确定化且可完全复现。
  • 揭示了“版本提示无效”的代码模型认知盲区:实验清晰证明直接在 prompt 中给出版本号(如 # requires: pytorch==2.1)对前沿模型毫无正向增益,表明当前自回归预训练未能让模型学会将版本标记与特定时序权重绑定。
  • SEUS 指标对版本演化一致性的数学刻画:采用调和平均数结合双重惩罚项的设计理念,不仅适用于代码库演化评测,对于法律条文修订、知识图谱时序更新等所有具有“动态演进-部分恒定”特征的知识库评测均有很强的迁移借鉴价值。

局限与展望

  • 零思考预算(Zero-Thinking)设置:评测为了剥离推理计算并直接探查纯参数记忆,对所有模型采用了零思考预算与贪婪解码。在实际工程落地中,结合长思维链(Chain-of-Thought)或外部代码检查器可能会在参数回忆上带来局部改善,但论文认为其仍难解决底层权重层面的知识交织。
  • 目标库覆盖受限于生态规范度:当前基准仅涵盖了文档健全、测试与版本规范极高的大型数据科学库(PyTorch、NumPy、SciPy)。对于长尾第三方包或缺乏标准 Sphinx 清单与依赖版本固定的库,基准构建流水线的扩展性存在挑战。
  • 污染(Contamination)排查难以绝对消除:由于闭源模型训练集不公开,开源 GitHub 数据可能被爬取进入预训练集。尽管论文通过跨版本系统性衰减趋势与 L0→L1 语义跃升排除了纯死记硬背假说,更严格的抗污染评测仍需进一步探索。

相关工作与启发

  • vs GitChameleon / CodeUpdateArena: 现有破坏性变更基准通常依赖人工精选(仅覆盖数百个孤立的 breaking change 样例);LibEvoBench 实现了全自动化挖掘与矩阵构建,覆盖 29 个版本、超 1.6 万个 API 与 12.5 万个评测实例,规模与覆盖面呈数量级提升。
  • vs VersiCode / LibEvolutionEval: VersiCode 依赖启发式文本匹配,缺乏编译器级别的可运行确定性真值;LibEvolutionEval 评测集中在未变化的静态 API 上,且使用粗粒度 F1 指标掩盖了版本错误与通用幻觉。LibEvoBench 通过兼容矩阵将稳定与演化 API 精确解耦,并开创性地分离出年代倒错(Anachronistic)这一独立错误维度。

评分

  • 新颖性: ⭐⭐⭐⭐⭐ 首次提出针对代码模型时间与版本知识分层的大规模全自动评测,并形式化定义了年代倒错幻觉指标。
  • 实验充分度: ⭐⭐⭐⭐⭐ 覆盖前沿商业与开源大模型共 13 款,三项互补任务且包含大量细粒度统计假设检验与参数敏感度分析。
  • 写作质量: ⭐⭐⭐⭐⭐ 问题定义清晰锐利,实验设计抽丝剥茧,图表完备且论证严密。
  • 价值: ⭐⭐⭐⭐⭐ 指出了当前代码大模型预训练机制在时序与版本知识管理上的根本性结构瓶颈,为后续持续学习与知识检索机制指明了方向。