Benchmark · coding

Aider Polyglot

0 resultados 0 modelos

Aider Polyglot é um benchmark de edição de código da ferramenta Aider que avalia o quão bem um LLM edita código existente em muitas linguagens de programação. A pontuação é a porcentagem de tarefas cujas edições produzem código correto que passa nos testes da tarefa.

Saiba mais
Exemplo
Um item típico é um exercício de programação no estilo Exercism em uma de várias linguagens (Python, Rust, Go, Java, JavaScript ou C++), no qual o modelo precisa editar os arquivos-fonte fornecidos para implementar a função exigida e passar nos testes.
Pontuação
A métrica é a porcentagem de tarefas resolvidas: uma tarefa só conta quando o código editado passa em todos os seus testes automáticos. O Aider também acompanha com que frequência as edições voltam no formato correto e aplicável.
Verificação
Os resultados são verificados automaticamente: os arquivos editados são executados contra o conjunto de testes unitários do exercício, e uma tarefa passa apenas se todos os testes passarem — sem votos humanos nem comparação por correspondência exata.
Por que importa
Ele espelha o fluxo de trabalho real de um desenvolvedor — editar arquivos existentes em muitas linguagens em vez de escrever trechos do zero —, sendo um sinal prático de quão útil um modelo é como assistente de programação.
Exemplo resolvido
O Aider Polyglot reúne 225 dos exercícios de programação mais difíceis do Exercism, distribuídos entre C++, Go, Java, JavaScript, Python e Rust; o modelo recebe as instruções e um arquivo base e precisa devolver uma edição (no formato de bloco SEARCH/REPLACE do aider) que faça os testes unitários ocultos passarem, com uma nova tentativa automática caso a primeira falhe. Um item representativo em Python, "Acronym", pede para converter uma frase em sua sigla pegando a primeira letra de cada palavra em maiúscula, tratando espaços e hífens como separadores e ignorando a demais pontuação: dado `acronym.py` contendo `def abbreviate(text): pass`, é preciso fazer passar testes como `abbreviate("Portable Network Graphics") == "PNG"` e `abbreviate("Ruby on Rails") == "ROR"`. Uma solução correta substitui o esqueleto por um bloco SEARCH/REPLACE: ``` acronym.py <<<<<<< SEARCH def abbreviate(text): pass ======= import re def abbreviate(text): words = re.split(r"[^A-Za-z']+", text) return "".join(word[0].upper() for word in words if word) >>>>>>> REPLACE ``` Raciocínio: divide-se o texto em qualquer sequência de caracteres que não sejam letras, para que tanto espaços quanto hífens delimitem palavras, descartam-se os fragmentos vazios e então concatena-se a primeira letra maiúscula de cada palavra restante — resultando em "ROR" para "Ruby on Rails". O item só é contado como resolvido quando todos os testes unitários passam, e o benchmark reporta a porcentagem dos 225 exercícios resolvidos dessa forma.

Ainda não há pontuações verificadas para este benchmark.