论文
打破依赖混乱:具有选择性 LLM 插补的约束驱动的 Python 依赖解析策略
Breaking the Dependency Chaos: A Constraint-Driven Python Dependency Resolution Strategy with Selective LLM Imputation
摘要
依赖关系解析是选择可以一起安装而不会发生冲突的包版本的任务。它在现代软件项目中造成构建失败的很大一部分。在 Python 生态系统中,由于 Python 2/3 不兼容、不推荐使用的包以及普遍缺失的元数据,这项任务尤其具有挑战性。最近的工作(例如 PLLM)通过使用 大语言模型 (LLM) 从代码推断 Python 和包版本并根据构建错误迭代修复它们来解决此问题。我们提出了 SMT-LLM,这是一种混合系统,它用形式约束求解取代了仅 LLM 的版本猜测。 SMT-LLM 通过抽象语法树 (AST) 分析使用确定性导入提取和 Python 版本检测、推断最低 Python 版本的害虫工具以及在任何 LLM 调用之前查询 PyPI 的五层导入包解析器。我们根据 PyPI 元数据和 LLM 估算的缺少元数据的包的依赖关系构建约束图,然后使用 Z3 可满足性模理论 (SMT) 求解器求解一致的版本分配。在使用 Gemma2:9B (10 GB VRAM) 的 HG2.9K 基准测试中,SMT-LLM 解析了 83.6% 的片段,而 PLLM 的解析率为 54.8%,同时将中值解析时间从 151.5 秒减少到 23.9 秒(快 6.3 倍),平均 LLM 调用从每次约 24.9 次减少到 2.26 次片段(减少 11 倍)。