ChatPaper.aiChatPaper

Una Evaluación Estática de la Completación de Código mediante Modelos de Lenguaje a Gran Escala

A Static Evaluation of Code Completion by Large Language Models

June 5, 2023
Autores: Hantian Ding, Varun Kumar, Yuchen Tian, Zijian Wang, Rob Kwiatkowski, Xiaopeng Li, Murali Krishna Ramanathan, Baishakhi Ray, Parminder Bhatia, Sudipta Sengupta, Dan Roth, Bing Xiang
cs.AI

Resumen

Los grandes modelos de lenguaje entrenados con código han demostrado un gran potencial para aumentar la productividad de los desarrolladores de software. Se han propuesto varios puntos de referencia basados en ejecución para evaluar la corrección funcional del código generado por modelos en problemas de programación simples. Sin embargo, es costoso realizar la misma evaluación en proyectos complejos del mundo real, considerando el costo de ejecución. Por el contrario, las herramientas de análisis estático, como los linters, que pueden detectar errores sin ejecutar el programa, no han sido bien exploradas para evaluar modelos de generación de código. En este trabajo, proponemos un marco de evaluación estática para cuantificar errores estáticos en completaciones de código Python, aprovechando los Árboles de Sintaxis Abstracta. En comparación con la evaluación basada en ejecución, nuestro método no solo es más eficiente, sino también aplicable a código en entornos reales. Para los experimentos, recopilamos contexto de código de repositorios de código abierto para generar un millón de cuerpos de funciones utilizando modelos públicos. Nuestro análisis estático revela que los errores más comunes entre otros cometidos por los modelos de lenguaje son Nombre No Definido y Variable No Utilizada. A través de estudios exhaustivos, también mostramos el impacto de la temperatura de muestreo, el tamaño del modelo y el contexto en los errores estáticos en las completaciones de código.
English
Large language models trained on code have shown great potential to increase productivity of software developers. Several execution-based benchmarks have been proposed to evaluate functional correctness of model-generated code on simple programming problems. Nevertheless, it is expensive to perform the same evaluation on complex real-world projects considering the execution cost. On the contrary, static analysis tools such as linters, which can detect errors without running the program, haven't been well explored for evaluating code generation models. In this work, we propose a static evaluation framework to quantify static errors in Python code completions, by leveraging Abstract Syntax Trees. Compared with execution-based evaluation, our method is not only more efficient, but also applicable to code in the wild. For experiments, we collect code context from open source repos to generate one million function bodies using public models. Our static analysis reveals that Undefined Name and Unused Variable are the most common errors among others made by language models. Through extensive studies, we also show the impact of sampling temperature, model size, and context on static errors in code completions.
PDF30December 15, 2024