Debuggen wie ein Mensch: Ein Debugger für große Sprachmodelle durch schrittweise Überprüfung der Laufzeitausführung

Große Sprachmodelle (LLMs) treiben eine bedeutende Fortschrittsentwicklung im Bereich der Codegenerierung voran. Neben der einstufigen Codeerzeugung integrieren neuere Ansätze zusätzliche Einheiten wie Einheitstests und Programmverifikatoren in LLMs, um die generierten Programme iterativ zu verfeinern. Allerdings betrachten diese Ansätze die generierten Programme als untrennbare Einheiten, was für LLMs bei der Fehlersuche, insbesondere bei Programmen mit komplexen Logikflüssen und Datenaufbereitungen, erhebliche Einschränkungen mit sich bringt. Im Gegensatz dazu setzen menschliche Entwickler bei der Fehlersuche typischerweise Breakpoints und untersuchen selektiv die Laufzeitausführungsinformationen. Dabei spielen der Ausführungsfluss und die Zwischenvariablen eine entscheidende Rolle, werden in der bestehenden Literatur zur Codegenerierung jedoch bisher untergenutzt. In dieser Studie stellen wir Large Language Model Debugger (LDB) vor, einen neuartigen Debugging-Framework, der LLMs ermöglicht, ihre generierten Programme mithilfe von Laufzeit-Ausführungsdaten zu verfeinern. Konkret zerlegt LDB Programme in Basisblöcke und verfolgt die Werte der Zwischenvariablen nach jedem Block während der gesamten Laufzeitausführung. Dadurch können LLMs sich auf einfachere Codeeinheiten innerhalb des Gesamtausführungsflusses konzentrieren, deren Korrektheit schrittweise anhand der Aufgabenbeschreibung prüfen und potenzielle Fehler effizient identifizieren. Experimente zeigen, dass LDB die Baseline-Leistung in den Benchmarks HumanEval, MBPP und TransCoder konsequent um bis zu 9,8 % steigert und damit neue State-of-the-Art-Ergebnisse in der Code-Debugging-Fähigkeit verschiedener LLM-Auswahlvarianten erzielt.