Benchmark · coding
Aider Polyglot
Aider Polyglot 是来自 Aider 编程工具的代码编辑基准,用于测试 LLM 在多种编程语言中编辑现有代码的能力。得分是编辑后能产生正确代码并通过该任务测试的任务所占的百分比。
了解更多
- 示例
- 一个典型题目是采用 Exercism 风格的编程练习,使用 Python、Rust、Go、Java、JavaScript 或 C++ 等多种语言之一,模型需要编辑所提供的源文件,实现所要求的函数,使其测试通过。
- 评分方式
- 指标是解决任务的百分比:只有当编辑后的代码通过该任务的全部自动化测试时,该任务才算完成。Aider 还会跟踪编辑以正确、可应用格式返回的频率。
- 验证方式
- 结果由自动方式判定:编辑后的文件针对每个练习的单元测试套件运行,只有全部测试通过,该任务才算通过——没有人工投票,也没有精确匹配比较。
- 为何重要
- 它反映了真实的开发者工作流程——在多种语言中编辑现有文件,而不是从零编写片段——因此能切实反映一个模型作为编程助手有多大用处。
示例解析
任务
Aider Polyglot 从 Exercism 抽取涵盖 6 种语言的练习:模型拿到题目说明和一个桩文件(例如含
def abbreviate(words): ... 的 acronym.py),必须编辑它使隐藏的 pytest 测试套件通过。示例题目:将短语转换为其首字母缩写——'Portable Network Graphics' → 'PNG',把空格、连字符和下划线视为分隔符并忽略其他标点。解答
import re
def abbreviate(words):
return "".join(w[0].upper() for w in re.findall(r"[A-Za-z']+", words))
解析
正则表达式提取单词记号(字母加词内撇号),取每个记号的首字母,转为大写并拼接,于是 'Portable Network Graphics' → 'PNG'。评分会运行该练习隐藏的单元测试;只有全部测试通过该题才得分(aider 在整个套件上报告 pass@2)。