Introduction
Les modèles de langage sont de plus en plus utilisés pour créer des logiciels complets à partir de zéro. Cependant, les benchmarks existants ne mesurent que des tâches spécifiques et limitées, telles que la correction d'un bug ou le développement d'une fonctionnalité particulière. C'est pourquoi ProgramBench a été introduit pour mesurer la capacité des agents de génie logiciel à développer des logiciels de manière holistique.
Contexte Technique
ProgramBench présente 200 tâches qui vont des outils de ligne de commande compacts aux logiciels largement utilisés tels que FFmpeg, SQLite et l'interpréteur PHP. Les agents doivent architecturer et implémenter une base de code qui correspond au comportement d'un exécutable de référence, en utilisant uniquement le programme et sa documentation. Les tests de comportement de bout en bout sont générés via un fuzzing piloté par agent, ce qui permet d'évaluer les modèles sans prescrire de structure d'implémentation.
Analyse et Implications
Les résultats montrent que aucun des 9 modèles de langage évalués n'a pu résoudre complètement une tâche, le meilleur modèle ayant passé 95% des tests sur seulement 3% des tâches. Les modèles favorisent des implémentations monolithiques et en un seul fichier, qui s'écartent fortement des codes écrits par des humains. Cela soulève des questions sur la capacité des modèles de langage à prendre des décisions d'architecture logicielle de haut niveau et à développer des logiciels de manière holistique.
Perspective
Il est important de surveiller les limites et les prochaines étapes de la recherche sur les modèles de langage et leur application en génie logiciel. Les résultats de ProgramBench soulignent la nécessité de développer des benchmarks plus complets et plus réalistes pour évaluer les capacités des modèles de langage en génie logiciel. De plus, il est essentiel de prendre en compte les implications de l'utilisation de modèles de langage pour le développement de logiciels, notamment en termes de sécurité, de maintenabilité et de qualité du code.