Benchmark · coding

RepoCoder

niche 0 resultados 0 modelos

RepoCoder evalúa la compleción de código a nivel de repositorio: dada una posición en un archivo fuente, el modelo debe predecir el código faltante usando contexto de todo el repositorio. Su benchmark RepoEval informa Exact Match y Edit Similarity para las compleciones de línea y de invocación de API, y una tasa de aprobación de pruebas unitarias para cuerpos de función completos.

Leer más
Ejemplo
Terminar una línea escrita parcialmente dentro de un archivo del repositorio que llama a una función o clase definida en otro archivo del mismo proyecto: el modelo debe usar el contexto entre archivos del repositorio para producir la compleción correcta.
Puntuación
Las compleciones de línea y de invocación de API se puntúan con Exact Match (1 si la predicción coincide exactamente con el código de referencia oculto, si no 0) y Edit Similarity (1 − distancia de Levenshtein normalizada), promediadas sobre todas las muestras en porcentaje. Las compleciones de cuerpo de función se puntúan por ejecución: el cuerpo generado reemplaza al original y debe pasar las pruebas unitarias existentes del repositorio.
Verificación
Para los ítems de línea/API, una predicción se acepta por muestra comparándola con el código de referencia oculto del repositorio fuente, ya sea exactamente (EM) o por similitud basada en distancia de edición (ES). Una compleción de función se acepta solo si las propias pruebas unitarias del repositorio pasan con el cuerpo generado. Los repositorios se eligieron recientes y de alta calidad para reducir la fuga de datos de entrenamiento.
Por qué importa
La programación real ocurre dentro de grandes bases de código existentes, no en fragmentos aislados. RepoCoder/RepoEval comprueba si un modelo puede usar las API, los símbolos y las convenciones específicas del proyecto repartidos por muchos archivos, una medida más realista de los asistentes de código que la síntesis de funciones aisladas.
Ejemplo resuelto
Tarea
Compleción a nivel de línea (RepoEval). En el repositorio, utils/config.py define un ayudante load_config(path) y trainer.py empieza con from .utils.config import load_config. Dado el código de abajo más el contexto entre archivos recuperado del repositorio, predice la única línea siguiente oculta dentro de __init__: ```python class Trainer: def __init__(self, path): ```
Solución
self.config = load_config(path)
Explicación
Correcto porque load_config es el ayudante propio del repositorio, importado al inicio de trainer.py; solo el contexto entre archivos del repositorio lo revela, así que una conjetura genérica (como incrustar una lectura de JSON) fallaría. La línea se califica con Exact Match frente a la referencia oculta, y Edit Similarity otorga crédito parcial.

Aún no hay puntuaciones verificadas para este benchmark.