CodeT: Codegenerierung mit generierten Tests

Die Aufgabe der Generierung von Code-Lösungen für ein gegebenes Programmierproblem kann von der Nutzung vortrainierter Sprachmodelle wie Codex profitieren, die mehrere diverse Lösungsansätze produzieren können. Ein zentrales Hindernis für diese Aufgabe besteht jedoch darin, die passendste Lösung aus den mehreren von vortrainierten Modellen generierten Varianten auszuwählen. Eine naheliegende Methode zur Bewertung der Qualität und Korrektheit einer Code-Lösung besteht darin, sie anhand einer Reihe von Testfällen auszuführen. Die manuelle Erstellung solcher Testfälle ist jedoch oft kostspielig und zeitaufwändig. In diesem Paper stellen wir eine neuartige Methode namens CodeT vor, die dieselben vortrainierten Sprachmodelle nutzt, um Testfälle automatisch für die generierten Code-Samples zu erstellen. Dadurch wird der menschliche Aufwand reduziert und die Abdeckung der Test-Szenarien erhöht. CodeT führt anschließend die Code-Samples mit den generierten Testfällen aus und wendet eine doppelte Ausführungsübereinstimmung (dual execution agreement) an, die sowohl die Konsistenz der Ausgaben gegenüber den generierten Testfällen als auch die Übereinstimmung der Ausgaben mit anderen Code-Samples berücksichtigt. Wir führen umfassende Experimente auf vier Benchmarks durch: HumanEval, MBPP, APPS und CodeContests, wobei fünf verschiedene vortrainierte Sprachmodelle unterschiedlicher Größe und Fähigkeiten eingesetzt werden. Unsere Ergebnisse zeigen, dass CodeT die Leistung der Code-Lösungsauswahl gegenüber vorherigen Ansätzen erheblich verbessert und dabei bemerkenswerte und konsistente Verbesserungen über verschiedene Modelle und Benchmarks hinweg erzielt. Beispielsweise steigert CodeT die Pass@1-Metrik auf HumanEval auf 65,8 %, was einer absoluten Verbesserung von 18,8 Prozentpunkten gegenüber dem Code-davinci-002-Modell und mehr als 20 Prozentpunkten gegenüber den vorherigen State-of-the-Art-Ergebnissen entspricht.