Benchmark · coding
RepoBench
O RepoBench é um benchmark de autocompletar código em nível de repositório para Python e Java que mede se um sistema consegue prever a próxima linha de código usando tanto o contexto dentro do arquivo quanto o contexto entre arquivos de outros arquivos do mesmo repositório. Tem três tarefas — recuperação (RepoBench-R), conclusão da próxima linha (RepoBench-C) e o pipeline de ponta a ponta (RepoBench-P) — avaliadas principalmente por Exact Match e Edit Similarity, e pela acurácia de recuperação na tarefa de recuperação.
Saiba mais
- Exemplo
- Dadas as linhas anteriores de um arquivo-fonte mais trechos de código extraídos de outros arquivos do mesmo repositório (por exemplo, um módulo que define uma função ou classe auxiliar), prever a única próxima linha de código — normalmente uma linha que chama ou referencia algo definido em outro arquivo.
- Pontuação
- Conclusão (RepoBench-C e -P): a próxima linha prevista é comparada com a linha de referência por Exact Match (porcentagem de linhas idênticas) e Edit Similarity (pontuação 0–100 = 1 − distância de edição de Levenshtein normalizada); o CodeBLEU também é reportado. Recuperação (RepoBench-R): accuracy@k — a fração de itens cujo trecho entre arquivos de referência está entre os k candidatos mais bem recuperados.
- Verificação
- A avaliação é automática e baseada em referência (sem execução de código): a linha de saída do modelo é normalizada e comparada como string com a verdadeira próxima linha reservada do repositório original. Sob Exact Match, uma conclusão conta como correta apenas se for idêntica caractere a caractere à linha de referência; Edit Similarity dá crédito parcial; uma recuperação é aceita quando o trecho de referência aparece entre os k primeiros.
- Por que importa
- Assistentes de código reais precisam raciocinar sobre um repositório inteiro, não apenas sobre o arquivo aberto. O RepoBench isola a modelagem do contexto entre arquivos — recuperar o contexto certo e prever a próxima linha que depende dele — por isso se tornou um campo de testes padrão para modelos de código cientes do repositório e de contexto longo.
Exemplo resolvido
Tarefa
Contexto entre arquivos (helpers/formatting.py):
def to_title(text):
return text.strip().title()
Contexto dentro do arquivo (report.py):
from helpers.formatting import to_title
def make_heading(raw):
Preveja a próxima linha.
Solução
return to_title(raw)
Explicação
A próxima linha reservada chama to_title — a função auxiliar definida no trecho entre arquivos e importada no topo — sobre o argumento da função, que é exatamente o que o código original do repositório fazia aqui; um modelo que ignorasse o outro arquivo não teria como saber que to_title é a chamada certa. Avaliação: Exact Match contra a linha de referência, com Edit Similarity dando crédito parcial para correspondências próximas.
Ainda não há pontuações verificadas para este benchmark.