【AI系列】LoCoMo介绍
LoCoMo是一个专门评估代码生成模型在代码修改和迭代任务能力的基准测试套件。它关注AI模型理解和修改现有代码的能力,相比传统代码生成基准更贴近真实开发场景。LoCoMo支持Python等4种语言,包含缺陷修复、功能添加等4类任务,要求模型处理多文件、长上下文代码库(平均上万行)。评估采用完全匹配率和测试通过率两个严格指标。该基准填补了AI模型代码演进能力评估的空白,对推动AI编程助手发展具有重要

博客目录
1. LoCoMo 是什么?
LoCoMo 是一个专门为评估和比较 代码生成模型在代码修改和迭代任务上的能力 而设计的基准测试套件。它的核心目标是回答一个问题:“当需求发生变化或需要修复 bug 时,AI 模型能多好地理解和修改现有代码?”
- 名称含义:LoCoMo 代表 Long Context Modification。它强调了模型处理长上下文(即整个代码库或多个文件)并进行精准修改的能力。
- 核心思想:与传统的“从零开始生成代码片段”的基准(如 HumanEval)不同,LoCoMo 关注的是“在现有代码基础上进行演进”。这是一种更贴近真实软件开发场景(维护、重构、添加功能、修复 Bug)的评估方式。
- 关键特点:
- 多语言:支持 Python, JavaScript, Java, Go 四种主流语言。
- 真实场景:任务基于真实的开源项目历史提交记录构建,确保了修改任务的真实性和复杂性。
- 多文件修改:大多数任务需要同时理解并修改多个文件(平均约 5 个文件),考验模型的跨文件推理能力。
- 长上下文:需要处理的代码库平均包含上万行代码,测试模型处理长上下文信息的效率和质量。
- 精确评估:不仅检查生成的代码语法是否正确,更重要的是通过执行测试用例或与目标版本代码的精确匹配来判断修改是否正确。

2. LoCoMo 包含哪些任务类型?
LoCoMo 主要包含四大类任务,覆盖了代码迭代的核心场景:
- 缺陷修复:给定一个带有 Bug 的代码版本和对应的测试用例,要求模型修改代码,使其通过测试。
- 功能添加:在现有代码库中添加一个新的、要求明确的功能。
- 代码重构:改进现有代码的结构、设计或性能,而不改变其外部行为。
- 测试生成:为给定的代码实现生成缺失的测试用例。
3. LoCoMo 怎么用?
使用 LoCoMo 主要分为两个角度:作为研究者/开发者来评估模型,以及作为模型使用者来理解其能力。
角度一:使用 LoCoMo 评估一个代码模型
如果你是研究人员或想对比不同模型(如 GPT-4, Claude, DeepSeek-Coder, CodeLlama 等)在代码修改上的能力,步骤如下:
-
获取基准数据:
- 访问 LoCoMo 的项目页面(通常在 GitHub 上,例如
github.com/面向-AI-编程/LoCoMo)。 - 按照说明下载数据集。数据集通常包含每个任务的:
初始版本代码库:需要被修改的代码。问题描述:需要做什么修改(自然语言或测试用例)。目标版本代码库:修改后正确的代码(用于评估)。
- 访问 LoCoMo 的项目页面(通常在 GitHub 上,例如
-
准备待测模型:
- 你需要有一个能接受提示(Prompt)并生成代码的模型 API 或本地部署。
-
构建提示与调用模型:
- 按照 LoCoMo 规定的提示模板,将任务描述、相关代码文件内容等组织成一个清晰的提示(Prompt),发送给模型。
- 由于涉及长上下文,需要确保模型的上下文窗口足够大(如 128K+),并能有效处理大量代码。
- 典型的 Prompt 结构:
你是一个资深的软件工程师。请根据以下用户请求修改给定的代码库。 # 代码库根目录结构 ... # 相关文件 1 的内容 ... # 相关文件 2 的内容 ... # 用户请求 ... # 指令 请输出一个完整的、修改后的代码文件列表,只包含发生了改变的文件,并确保修改精确满足要求。
-
评估模型输出:
- 主要评估指标:完全匹配率 和 测试通过率。
- 完全匹配:将模型生成的修改与“目标版本代码库”进行精确对比。如果所有需要修改的文件都与标准答案完全一致,则算通过。这是最严格的指标。
- 测试通过:将模型生成的代码放入原始环境中运行测试用例(对于缺陷修复和功能添加任务)。如果所有测试都通过,则算成功。这更接近实际效果。
- 使用 LoCoMo 官方提供的评估脚本来自动化这个过程。
- 主要评估指标:完全匹配率 和 测试通过率。
角度二:解读 LoCoMo 排行榜结果
如果你想了解某个模型(例如,最近发布的某款大模型)的代码修改能力,可以:
- 查找公布的 LoCoMo 评测结果:许多模型的技术报告或第三方评测会引用 LoCoMo 分数。
- 理解分数含义:
- 关注“完全匹配”分数:它直接反映了模型理解修改要求、并在复杂代码库中准确定位和精确实施修改的“执行力”。分数越高,能力越强。
- 对比不同模型:在同一基准下比较不同模型的分数。例如,GPT-4 Turbo 可能在 LoCoMo 上达到 45% 的完全匹配率,而一个较小的开源模型可能只有 20%。这直观地展示了能力差距。
- 关注不同任务类型的得分:看模型在“缺陷修复”和“功能添加”上哪个更强,这有助于你将其应用到合适的场景。
4. 为什么 LoCoMo 很重要?
- 更贴近现实:软件工程大部分时间是在维护和演进现有代码,而非从零开始。LoCoMo 填补了评估模型“迭代能力”的空白。
- 衡量关键能力:它综合考验了模型的:长代码理解能力、推理能力、精确输出能力和对软件开发工作流的理解。
- 推动模型发展:它为模型开发者提供了一个明确的优化目标,促使他们改进模型的代码修改能力,而不仅仅是代码生成能力。
总结
LoCoMo 是一个评估 AI 模型在真实、多文件、长上下文代码库中进行准确修改能力的权威基准。 它的使用方式主要是为模型提供基于真实提交的代码修改任务,并通过“完全匹配”和“测试通过”两个核心指标来量化模型的性能。对于开发者而言,关注模型在 LoCoMo 上的表现,是判断其能否真正成为“AI 编程助手”而不仅仅是“代码补全工具”的关键依据。
觉得有用的话点个赞
👍🏻呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
更多推荐




所有评论(0)