Benchmark · coding
Aider Polyglot
Aider Polyglot es un benchmark de edición de código de la herramienta Aider que evalúa qué tan bien un LLM edita código existente en muchos lenguajes de programación. La puntuación es el porcentaje de tareas cuyas ediciones producen código correcto que pasa las pruebas de la tarea.
Leer más
- Ejemplo
- Un ítem típico es un ejercicio de programación al estilo de Exercism en uno de varios lenguajes (Python, Rust, Go, Java, JavaScript o C++), donde el modelo debe editar los archivos fuente proporcionados para implementar la función requerida y pasar las pruebas.
- Puntuación
- La métrica es el porcentaje de tareas resueltas: una tarea cuenta solo cuando el código editado pasa todas sus pruebas automáticas. Aider también mide con qué frecuencia las ediciones llegan en el formato correcto y aplicable.
- Verificación
- Los resultados se verifican de forma automática: los archivos editados se ejecutan contra el conjunto de pruebas unitarias del ejercicio, y una tarea se aprueba solo si pasan todas las pruebas, sin votos humanos ni comparación por coincidencia exacta.
- Por qué importa
- Refleja el flujo de trabajo real de un desarrollador —editar archivos existentes en muchos lenguajes en vez de escribir fragmentos desde cero—, por lo que es una señal práctica de cuán útil es un modelo como asistente de programación.
Ejemplo resuelto
Aider Polyglot toma 225 de los ejercicios de programación más difíciles de Exercism repartidos entre C++, Go, Java, JavaScript, Python y Rust; al modelo se le dan las instrucciones y un archivo base, y debe devolver una edición (en el formato de bloque SEARCH/REPLACE de aider) que haga pasar las pruebas unitarias ocultas, con un reintento automático si el primer intento falla. Un ítem representativo en Python, «Acronym», pide convertir una frase en su acrónimo tomando la primera letra de cada palabra en mayúscula, tratando los espacios y los guiones como separadores e ignorando el resto de la puntuación: dado `acronym.py` con `def abbreviate(text): pass`, hay que hacer que pasen pruebas como `abbreviate("Portable Network Graphics") == "PNG"` y `abbreviate("Ruby on Rails") == "ROR"`. Una solución correcta reemplaza el esqueleto con un bloque 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
```
Razonamiento: se divide el texto en cualquier secuencia de caracteres que no sean letras para que tanto los espacios como los guiones delimiten palabras, se descartan los fragmentos vacíos y luego se concatena la primera letra en mayúscula de cada palabra restante, obteniendo «ROR» para «Ruby on Rails». El ítem se cuenta como resuelto solo cuando pasan todas las pruebas unitarias, y el benchmark informa el porcentaje de los 225 ejercicios resueltos de esta manera.
Aún no hay puntuaciones verificadas para este benchmark.