CodeT : Génération de code avec des tests générés

La génération de solutions de code pour un problème de programmation donné peut bénéficier de l’utilisation de modèles linguistiques pré-entraînés tels que Codex, capables de produire plusieurs échantillons diversifiés. Toutefois, un défi majeur réside dans le choix de la solution la plus appropriée parmi les multiples échantillons générés par ces modèles pré-entraînés. Une approche naturelle pour évaluer la qualité et la correction d’une solution de code consiste à l’exécuter sur un ensemble de cas de test, mais la création manuelle de tels cas de test est souvent coûteuse et chronophage. Dans cet article, nous proposons une méthode novatrice, appelée CodeT, qui exploite les mêmes modèles linguistiques pré-entraînés pour générer automatiquement des cas de test à partir des échantillons de code, réduisant ainsi l’effort humain et augmentant la couverture des scénarios de test. CodeT exécute ensuite les échantillons de code à l’aide des cas de test générés, puis effectue une vérification d’accord par exécution double, prenant en compte à la fois la cohérence des sorties par rapport aux cas de test générés et l’accord entre les sorties produites par différents échantillons de code. Nous menons des expériences approfondies sur quatre benchmarks : HumanEval, MBPP, APPS et CodeContests, en utilisant cinq modèles linguistiques pré-entraînés aux tailles et capacités variées. Nos résultats montrent que CodeT améliore significativement la performance de sélection des solutions de code par rapport aux méthodes antérieures, obtenant des gains remarquables et constants sur différents modèles et benchmarks. Par exemple, CodeT améliore le métrique pass@1 sur HumanEval à 65,8 %, soit une amélioration absolue de 18,8 % par rapport au modèle code-davinci-002, et une amélioration absolue de plus de 20 % par rapport aux résultats précédents de l’état de l’art.