Dal Codice alla Correttezza: Chiudere l'Ultimo Miglio della Generazione del Codice con il Debugging Gerarchico
From Code to Correctness: Closing the Last Mile of Code Generation with Hierarchical Debugging
October 2, 2024
Autori: Yuling Shi, Songsong Wang, Chengcheng Wan, Xiaodong Gu
cs.AI
Abstract
Sebbene i grandi modelli linguistici abbiano compiuto progressi significativi nella generazione di codice, il tasso di superamento del codice generato è ostacolato da errori sottili, spesso richiedendo l'intervento umano per superare i test, specialmente per problemi complessi. I sistemi di debug basati su LLM esistenti trattano i programmi generati come unità monolitiche, non riuscendo a risolvere i bug a diversi livelli di granularità, dagli errori di sintassi a basso livello alle imperfezioni algoritmiche ad alto livello. In questo articolo, presentiamo Multi-Granularity Debugger (MGDebugger), un debugger di codice gerarchico che isola, identifica e risolve i bug a vari livelli di granularità. MGDebugger scompone il codice problematico in una struttura ad albero gerarchica di sottofunzioni, con ciascun livello che rappresenta una particolare granularità dell'errore. Durante il debug, analizza ciascuna sottofunzione e risolve iterativamente i bug in modo ascendente. Per testare efficacemente ciascuna sottofunzione, proponiamo un esecutore Python simulato da LLM, che traccia l'esecuzione del codice e tiene traccia degli stati delle variabili importanti per individuare gli errori con precisione. Estesi esperimenti dimostrano che MGDebugger supera i sistemi di debug esistenti, ottenendo un miglioramento del 18,9% nell'accuratezza rispetto alle generazioni seed in HumanEval e un tasso di successo nella riparazione del 97,6% in HumanEvalFix. Inoltre, MGDebugger corregge efficacemente bug in diverse categorie e livelli di difficoltà, dimostrando la sua robustezza ed efficacia.
English
While large language models have made significant strides in code generation,
the pass rate of the generated code is bottlenecked on subtle errors, often
requiring human intervention to pass tests, especially for complex problems.
Existing LLM-based debugging systems treat generated programs as monolithic
units, failing to address bugs at multiple levels of granularity, from
low-level syntax errors to high-level algorithmic flaws. In this paper, we
introduce Multi-Granularity Debugger (MGDebugger), a hierarchical code debugger
by isolating, identifying, and resolving bugs at various levels of granularity.
MGDebugger decomposes problematic code into a hierarchical tree structure of
subfunctions, with each level representing a particular granularity of error.
During debugging, it analyzes each subfunction and iteratively resolves bugs in
a bottom-up manner. To effectively test each subfunction, we propose an
LLM-simulated Python executor, which traces code execution and tracks important
variable states to pinpoint errors accurately. Extensive experiments
demonstrate that MGDebugger outperforms existing debugging systems, achieving
an 18.9% improvement in accuracy over seed generations in HumanEval and a 97.6%
repair success rate in HumanEvalFix. Furthermore, MGDebugger effectively fixes
bugs across different categories and difficulty levels, demonstrating its
robustness and effectiveness.