Amazon revela los límites reales de los asistentes de codificación con IA a través de su nuevo benchmark multilingüe

Droids

Updated on:

Amazon revela los límites reales de los asistentes de codificación con IA a través de su nuevo benchmark multilingüe

Amazon Web Services (AWS) ha introducido un innovador marco de evaluación para asistentes de codificación impulsados por inteligencia artificial, exponiendo importantes limitaciones que hasta ahora habían pasado desapercibidas. El nuevo benchmark, denominado SWE-PolyBench, representa un avance significativo en la forma de evaluar estas herramientas cada vez más populares.

Este lanzamiento llega en un momento en que las herramientas de programación basadas en IA están experimentando un auge sin precedentes, con grandes empresas tecnológicas integrándolas en entornos de desarrollo y productos independientes. Sin embargo, evaluar su rendimiento real ha sido un desafío persistente, especialmente cuando se trata de diferentes lenguajes de programación y tareas de complejidad variable.

Un nuevo estándar para evaluar asistentes de codificación

SWE-PolyBench contiene más de 2.000 desafíos de codificación cuidadosamente seleccionados y derivados de problemas reales en GitHub. A diferencia de marcos de evaluación anteriores, este nuevo benchmark abarca cuatro lenguajes de programación: Java (165 tareas), JavaScript (1.017 tareas), TypeScript (729 tareas) y Python (199 tareas).

"La diversidad de tareas y la diversidad de lenguajes de programación era algo que faltaba", explicó Anoop Deoras, Director de Ciencias Aplicadas para Aplicaciones de IA Generativa y Experiencias de Desarrollador en AWS, en una entrevista con VentureBeat. "En SWE-Bench actual, solo hay un único lenguaje de programación, Python, y un único tipo de tarea: corrección de errores. En PolyBench, a diferencia de SWE-Bench, hemos ampliado este benchmark para incluir tres lenguajes adicionales".

El benchmark también incluye un subconjunto estratificado de 500 problemas (SWE-PolyBench500) diseñado para permitir una experimentación más rápida.

Esta iniciativa aborda directamente las limitaciones de SWE-Bench, que se había convertido en el estándar de facto para la evaluación de agentes de codificación con más de 50 presentaciones en su tabla de clasificación. A pesar de su papel pionero, SWE-Bench se centra únicamente en repositorios Python, presenta predominantemente tareas de corrección de errores y está significativamente sesgado hacia un solo código base: el repositorio Django representa más del 45% de todas las tareas.

"Intencionadamente, decidimos tener una representación ligeramente mayor para JavaScript y TypeScript, porque ya tenemos SWE-Bench que contiene tareas de Python", señaló Deoras. "Así que, en lugar de sobrerepresentar Python, nos aseguramos de tener suficiente representación para JavaScript y TypeScript además de Java".

Más allá de la simple tasa de éxito: nuevas métricas de evaluación

Una innovación clave en SWE-PolyBench es la introducción de métricas de evaluación más sofisticadas que van más allá de la tradicional "tasa de éxito", que simplemente mide si un parche generado resuelve con éxito un problema de codificación.

"La evaluación de estos agentes de codificación se ha realizado principalmente a través de la métrica llamada tasa de éxito", comentó Deoras. "La tasa de éxito, en resumen, es básicamente solo una proporción de las tareas que se ejecutan con éxito tras la aplicación del parche que los agentes están produciendo. Pero este número es una estadística muy agregada y de alto nivel. No te cuenta los detalles minuciosos y, en particular, no te dice cómo el agente llegó a esa resolución".

Las nuevas métricas incluyen la localización a nivel de archivo, que evalúa la capacidad de un agente para identificar qué archivos necesitan modificación dentro de un repositorio, y la recuperación a nivel de nodo de Árbol de Sintaxis Concreta (CST), que evalúa con qué precisión un agente puede identificar estructuras de código específicas que requieren cambios.

"Además de la tasa de éxito, tenemos la precisión y el recall. Y para llegar a la métrica de precisión y recall, estamos mirando una herramienta de análisis de programas llamada árbol de sintaxis concreta", explicó Deoras. "Te dice cómo está compuesta la estructura de tu archivo principal, para que puedas ver cuál es el nodo de clase, y dentro de esa clase, cuáles son los nodos de función y las variables".

Python sigue dominando, mientras las tareas complejas exponen limitaciones

La evaluación de Amazon de varios agentes de codificación de código abierto en SWE-PolyBench reveló varios patrones significativos. Python sigue siendo el lenguaje más fuerte para todos los agentes probados, probablemente debido a su prevalencia en los datos de entrenamiento y en benchmarks existentes. El rendimiento se degrada a medida que aumenta la complejidad de las tareas, particularmente cuando se requieren modificaciones en tres o más archivos.

Diferentes agentes muestran diversas fortalezas en distintas categorías de tareas. Mientras que el rendimiento en tareas de corrección de errores es relativamente consistente, hay más variabilidad entre agentes cuando se trata de manejar solicitudes de funciones y refactorización de código.

El benchmark también descubrió que la informatividad de los enunciados de los problemas afecta significativamente a las tasas de éxito, lo que sugiere que las descripciones claras de los problemas siguen siendo cruciales para una asistencia de IA efectiva.

"Con el tiempo, no solo han evolucionado las capacidades de los LLM, sino que al mismo tiempo, las tareas se han vuelto cada vez más complejas", observó Deoras. "Existe la necesidad de que los desarrolladores resuelvan tareas cada vez más complejas de manera sincrónica utilizando estos agentes".

Implicaciones para desarrolladores empresariales

SWE-PolyBench llega en un momento crítico en el desarrollo de asistentes de codificación basados en IA. A medida que estas herramientas pasan de entornos experimentales a entornos de producción, la necesidad de benchmarks rigurosos, diversos y representativos se ha intensificado.

El soporte ampliado de lenguajes del benchmark lo hace particularmente valioso para entornos empresariales donde el desarrollo políglota es común. Java, JavaScript, TypeScript y Python se clasifican constantemente entre los lenguajes de programación más populares en entornos empresariales, lo que hace que la cobertura de SWE-PolyBench sea altamente relevante para escenarios de desarrollo del mundo real.

Para los responsables de la toma de decisiones empresariales que evalúan herramientas de codificación con IA, SWE-PolyBench ofrece algo invaluable: una forma de separar el bombo publicitario del marketing de la capacidad técnica genuina. Después de todo, la verdadera prueba de un asistente de codificación de IA no es cuán bien se desempeña en demostraciones simplificadas, sino si puede manejar la complejidad desordenada y multilingüe de los proyectos de software reales, el tipo con el que los desarrolladores lidian todos los días.

Disponibilidad y acceso al benchmark

Amazon ha hecho que todo el marco SWE-PolyBench esté disponible públicamente. El conjunto de datos es accesible en Hugging Face, y el arnés de evaluación está disponible en GitHub. Se ha establecido una tabla de clasificación dedicada para seguir el rendimiento de varios agentes de codificación en el benchmark.

"Extendimos el pipeline de adquisición de datos de SWE-Bench para admitir estos tres lenguajes adicionales", dijo Deoras. "La esperanza es que podamos extrapolar este proceso aún más en el futuro y extenderlo más allá de cuatro lenguajes, más allá de las tres tareas de las que hablé, para que este benchmark se vuelva aún más completo".

A medida que el mercado de asistentes de codificación con IA se calienta con ofertas de todas las principales empresas tecnológicas, SWE-PolyBench proporciona una comprobación crucial de sus capacidades reales. El diseño del benchmark reconoce que el desarrollo de software en el mundo real exige más que simples correcciones de errores en Python; requiere trabajar en varios lenguajes, comprender bases de código complejas y abordar diversos desafíos de ingeniería.

Este avance no solo beneficia a los investigadores y desarrolladores de herramientas de IA, sino que también proporciona a las empresas y equipos de desarrollo una forma más precisa de evaluar qué soluciones se adaptan mejor a sus necesidades específicas en un campo que evoluciona rápidamente.

Deja un comentario