Screenshot 2024 08 12 At 11.10.25 Pm.png

El manejo de código parcial con posibles errores presenta un desafío importante en el desarrollo de sistemas de sugerencias de código en tiempo real. Los fragmentos de código incompletos a menudo presentan errores, lo que requiere una finalización precisa que también aborde los errores incorporados para mejorar la confiabilidad y la eficiencia de las herramientas de programación impulsadas por IA. El desafío principal implica desarrollar modelos capaces de generar finalizaciones de código y, al mismo tiempo, corregir posibles errores dentro del código parcial, produciendo así un código completamente funcional y preciso.

Los métodos actuales para completar el código generan código basado en un prefijo determinado o una descripción del problema, pero tienen problemas con el código parcial que contiene errores potenciales. Las metodologías anteriores, como la “completación de código con errores”, tienen como objetivo completar el código con elementos indeseables, pero a menudo producen resultados no funcionales debido a la incapacidad de corregir los errores de manera efectiva. Los modelos como CodeGen e InCoder generalmente se basan en estrategias de finalización lineales y sencillas que no se adaptan a las complejidades de la depuración y la corrección del código. Las principales limitaciones de estos métodos son su intensidad computacional y su inadecuación para aplicaciones en tiempo real, donde es necesaria una corrección rápida y precisa del código.

Investigadores de Amazon y la Universidad de Oxford proponen un nuevo enfoque que afina los grandes modelos de lenguaje de código (CodeLLMs) para la doble tarea de reescribir y completar código parcial. Este método propuesto trata el código parcial como “pistas de implementación”, lo que permite que el modelo se desvíe del código proporcionado para generar una finalización correcta y funcional. La innovación radica en la aplicación de dos estrategias: generación de una pasada y refinamiento iterativo de múltiples pasadas. La generación de una pasada intenta crear un programa completo a partir del código parcial en un solo paso, mientras que la estrategia de refinamiento iterativo de múltiples pasadas genera una solución inicial y luego la refina iterativamente, corrigiendo progresivamente los posibles errores para mejorar la precisión del código.

El avance técnico fundamental de este enfoque implica el ajuste fino de los CodeLLM de última generación, incluidos InCoder, CodeGen y StarCoder, en conjuntos de datos creados específicamente para esta tarea. Estos conjuntos de datos incorporan transformaciones que alteran la semántica e introducen posibles errores en fragmentos de código limpio, lo que permite que los modelos aprendan a manejar tanto el código con errores como el limpio de manera eficaz. El método de generación de una sola pasada entrena al modelo para predecir todo el programa en una sola pasada hacia adelante a partir del código parcial, mientras que el método de refinamiento iterativo de varias pasadas genera una solución y luego la refina iterativamente. El rendimiento de estos modelos se evalúa utilizando tasas de aprobación en múltiples puntos de referencia, como los conjuntos de datos b-HumanEval y b-FixEval recientemente creados, que se centran en la capacidad del modelo para gestionar prefijos de código con errores.

Los experimentos revelan que los modelos afinados superan consistentemente a los métodos de referencia en la generación de código funcional a partir de prefijos con errores. La estrategia de refinamiento iterativo de múltiples pasadas demuestra ser particularmente eficaz, logrando una mayor precisión en varias métricas de rendimiento, incluidas pass@1, pass@10 y pass@100. Estos modelos demuestran una mejora significativa en el manejo de código parcial con posibles errores, ofreciendo finalizaciones de código más confiables y precisas en comparación con los enfoques anteriores. Los resultados subrayan la eficacia práctica del método propuesto en escenarios del mundo real, donde aborda con éxito los desafíos de la sugerencia de código en tiempo real no solo completando sino también corrigiendo fragmentos de código con errores. Este avance mejora la solidez y la confiabilidad de las herramientas de programación impulsadas por IA, lo que las hace más adecuadas para la aplicación en tiempo real en diversos entornos de codificación.

En conclusión, este método propuesto hace avanzar significativamente el campo de la finalización de código impulsada por IA al permitir que los CodeLLM reescriban y completen de manera conjunta código parcial con posibles errores. La introducción y evaluación de estrategias de refinamiento iterativo de una sola pasada y de varias pasadas mejoran sustancialmente la precisión funcional del código generado, particularmente en presencia de errores. Este desarrollo promete hacer que los asistentes de programación de IA sean más robustos y confiables, especialmente en el manejo de código en progreso del mundo real.


Echa un vistazo a la PapelTodo el crédito por esta investigación corresponde a los investigadores de este proyecto. Además, no olvides seguirnos en Gorjeo y únete a nuestro Canal de Telegram y LinkedIn Gr¡Arriba!. Si te gusta nuestro trabajo, te encantará nuestro hoja informativa..

No olvides unirte a nuestro Subreddit de más de 48 000 millones de usuarios

Encuentra lo próximo Seminarios web sobre IA aquí



Aswin AK es pasante de consultoría en MarkTechPost. Está cursando su doble titulación en el Instituto Indio de Tecnología de Kharagpur. Le apasionan la ciencia de datos y el aprendizaje automático, y cuenta con una sólida formación académica y experiencia práctica en la resolución de desafíos reales interdisciplinarios.