Benchmark · coding

RepoCoder

niche 0 resultados 0 modelos

O RepoCoder avalia a compleção de código em nível de repositório: dada uma posição em um arquivo-fonte, o modelo deve prever o código ausente usando contexto de todo o repositório. Seu benchmark RepoEval reporta Exact Match e Edit Similarity para compleções de linha e de invocação de API, e uma taxa de aprovação em testes unitários para corpos de função completos.

Saiba mais
Exemplo
Terminar uma linha escrita pela metade dentro de um arquivo do repositório que chama uma função ou classe definida em outro arquivo do mesmo projeto — o modelo precisa usar o contexto entre arquivos do repositório para produzir a compleção correta.
Pontuação
Compleções de linha e de invocação de API são pontuadas com Exact Match (1 se a previsão for idêntica ao código de referência oculto, senão 0) e Edit Similarity (1 − distância de Levenshtein normalizada), com média sobre todas as amostras em porcentagem. Compleções de corpo de função são pontuadas por execução: o corpo gerado substitui o original e deve passar nos testes unitários existentes do repositório.
Verificação
Para itens de linha/API, uma previsão é aceita por amostra comparando-a ao código de referência oculto do repositório-fonte, de forma exata (EM) ou por similaridade baseada em distância de edição (ES). Uma compleção de função é aceita apenas se os próprios testes unitários do repositório passarem com o corpo gerado. Os repositórios foram escolhidos recentes e de alta qualidade para reduzir o vazamento de dados de treino.
Por que importa
A programação real acontece dentro de grandes bases de código existentes, não em trechos isolados. O RepoCoder/RepoEval verifica se um modelo consegue usar APIs, símbolos e convenções específicos do projeto espalhados por muitos arquivos — uma medida mais realista de assistentes de código do que a síntese de funções isoladas.
Exemplo resolvido
Tarefa
Compleção em nível de linha (RepoEval). No repositório, utils/config.py define um auxiliar load_config(path), e trainer.py começa com from .utils.config import load_config. Dado o código abaixo mais o contexto entre arquivos recuperado do repositório, preveja a única linha seguinte oculta dentro de __init__: ```python class Trainer: def __init__(self, path): ```
Solução
self.config = load_config(path)
Explicação
Correto porque load_config é o auxiliar do próprio repositório, importado no topo de trainer.py; apenas o contexto entre arquivos do repositório o revela, então um palpite genérico (como embutir uma leitura de JSON) erraria. A linha é avaliada por Exact Match contra a referência oculta, com Edit Similarity dando crédito parcial.

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