TypyBench: Evaluating LLM Type Inference for Untyped Python Repositories

📄 arXiv: 2507.22086v1 📥 PDF

作者: Honghua Dong, Jiacheng Yang, Xun Deng, Yuhe Jiang, Gennady Pekhimenko, Fan Long, Xujie Si

分类: cs.SE, cs.AI, cs.PL

发布日期: 2025-07-28

期刊: Proceedings of the 42nd International Conference on Machine Learning, Vancouver, Canada. PMLR 267, 2025

🔗 代码/项目: GITHUB


💡 一句话要点

TypyBench:评估LLM在无类型Python仓库中的类型推断能力

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 类型推断 大型语言模型 Python 基准测试 代码理解 类型一致性 软件工程

📋 核心要点

  1. 动态类型语言的类型推断是软件工程的难题,现有方法难以兼顾准确性和可扩展性。
  2. TypyBench通过构建基准测试,并提出TypeSim和TypeCheck指标,来评估LLM在Python仓库中的类型推断能力。
  3. 实验表明,LLM在类型相似度上表现尚可,但在复杂类型和类型一致性方面存在明显不足,未来研究应关注后者。

📝 摘要(中文)

针对Python等动态语言的类型推断是软件工程中一个长期存在的挑战。尽管大型语言模型(LLMs)在代码理解方面展现出潜力,但其类型推断能力仍未得到充分探索。我们推出了TypyBench,这是一个旨在评估LLMs在整个Python仓库中进行类型推断的基准。TypyBench引入了两个新的指标:TypeSim,它捕捉预测类型和真实类型之间细微的语义关系;TypeCheck,它评估代码库中的类型一致性。我们对50个高质量Python仓库的精选数据集进行了评估,结果表明,尽管LLMs获得了不错的TypeSim分数,但它们在处理复杂的嵌套类型时表现不佳,并且存在显著的类型一致性错误。这些发现表明,未来的研究应该将重点从提高类型相似性转移到解决仓库级别的类型一致性问题。TypyBench为这个新方向提供了基础,提供了对不同类型复杂性和使用环境下的模型性能的见解。我们的代码和数据可在https://github.com/typybench/typybench上找到。

🔬 方法详解

问题定义:论文旨在解决大型Python代码库中,利用LLM进行自动类型推断的问题。现有方法要么依赖于静态分析,难以处理动态特性;要么依赖于人工标注,成本高昂且难以扩展。LLM虽然在代码理解方面展现出潜力,但其类型推断能力缺乏系统性的评估和优化,尤其是在大型代码库的类型一致性方面。

核心思路:论文的核心思路是构建一个全面的基准测试TypyBench,用于评估LLM在真实Python代码库中的类型推断能力。通过设计新的评估指标,TypeSim和TypeCheck,更细粒度地衡量LLM的类型推断质量,并发现现有LLM在类型一致性方面的不足。这为后续研究提供了明确的方向,即如何提升LLM在大型代码库中的类型一致性。

技术框架:TypyBench的技术框架主要包含以下几个部分:1) 数据集构建:收集了50个高质量的开源Python仓库,作为评估的基础。2) 类型推断:利用不同的LLM对这些仓库进行类型推断,生成预测的类型信息。3) 评估指标:设计了TypeSim和TypeCheck两个指标,TypeSim用于衡量预测类型和真实类型之间的语义相似度,TypeCheck用于衡量整个代码库中类型使用的一致性。4) 实验分析:对不同LLM的类型推断结果进行分析,找出其优势和不足。

关键创新:论文的关键创新在于提出了TypeSim和TypeCheck两个新的评估指标。TypeSim能够更准确地衡量预测类型和真实类型之间的语义关系,克服了传统精确匹配的局限性。TypeCheck则关注整个代码库的类型一致性,这在之前的研究中较少被关注,但对于大型代码库的类型推断至关重要。

关键设计:TypeSim指标的设计考虑了类型之间的层次关系和语义相似性,例如,将intfloat视为相似的类型。TypeCheck指标则通过检查函数调用、变量赋值等操作中类型使用的一致性来评估类型推断的质量。具体实现细节未知,论文可能使用了某种形式的类型检查器或规则引擎来自动化评估过程。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,尽管LLM在TypeSim指标上表现尚可,但在TypeCheck指标上表现较差,表明LLM在大型代码库的类型一致性方面存在明显不足。例如,某些LLM在TypeSim上取得了超过80%的相似度,但在TypeCheck上只有不到50%的一致性。这说明未来的研究需要更加关注如何提升LLM在类型一致性方面的能力。

🎯 应用场景

该研究成果可应用于自动化代码分析、代码补全、代码重构等领域。通过提升LLM的类型推断能力,可以帮助开发者更好地理解和维护Python代码,减少类型错误,提高开发效率。未来,该研究还可以扩展到其他动态类型语言,例如JavaScript和Ruby。

📄 摘要(原文)

Type inference for dynamic languages like Python is a persistent challenge in software engineering. While large language models (LLMs) have shown promise in code understanding, their type inference capabilities remain underexplored. We introduce TypyBench, a benchmark designed to evaluate LLMs' type inference across entire Python repositories. TypyBench features two novel metrics: TypeSim, which captures nuanced semantic relationships between predicted and ground truth types, and TypeCheck, which assesses type consistency across codebases. Our evaluation of various LLMs on a curated dataset of 50 high-quality Python repositories reveals that, although LLMs achieve decent TypeSim scores, they struggle with complex nested types and exhibit significant type consistency errors. These findings suggest that future research should shift focus from improving type similarity to addressing repository-level consistency. TypyBench provides a foundation for this new direction, offering insights into model performance across different type complexities and usage contexts. Our code and data are available at https://github.com/typybench/typybench.