Les tests de code à appel automatique vous aident à décider quel LLM utiliser pour vos tâches de programmation
Rejoignez nos newsletters quotidiennes et hebdomadaires pour obtenir les dernières mises à jour et du contenu exclusif sur la couverture de l’IA de pointe. Plus d’informations
À mesure que les grands modèles de langage (LLM) continuent de s’améliorer en matière de codage, les critères utilisés pour évaluer leurs performances deviennent de moins en moins utiles.
En effet, même si de nombreux LLM obtiennent des scores tout aussi élevés sur ces critères, il peut être difficile de comprendre lesquels utiliser dans des entreprises et des projets de développement de logiciels spécifiques.
Un nouvel article de l’Université de Yale et de l’Université Tsinghua présente une nouvelle méthode pour tester la capacité des modèles à répondre “génération de code auto-invoquée“Problèmes qui nécessitent un raisonnement, la génération de code et la réutilisation du code existant pour résoudre des problèmes.
La génération de code invoquée automatiquement ressemble beaucoup plus à des scénarios de programmation réalistes qu’à des tests de référence, et permet de mieux comprendre la capacité des LLM actuels à résoudre des problèmes de codage du monde réel.
Génération de code auto-invoquée
Deux benchmarks populaires utilisés pour évaluer les capacités de codage des LLM sont évaluation humaine et MBPP (Principalement des problèmes de base avec Python). Il s’agit d’ensembles de données problématiques créés à la main qui nécessitent que le modèle écrive du code pour des tâches simples.
Cependant, ces benchmarks ne couvrent qu’un sous-ensemble des défis auxquels les développeurs de logiciels sont confrontés dans le monde réel. Dans des scénarios pratiques, les développeurs de logiciels ne se contentent pas d’écrire du nouveau code : ils doivent également comprendre et réutiliser le code existant et créer des composants réutilisables pour résoudre des problèmes complexes.
“La capacité de comprendre et ensuite d’exploiter son propre code généré (en d’autres termes, la génération de code auto-invoquée) joue un rôle important pour que les LLM puissent exploiter leurs capacités de raisonnement pour la génération de code que les benchmarks actuels ne parviennent pas à capturer”, écrivent les chercheurs.
Pour tester la capacité des LLM à générer du code auto-invoquant, les chercheurs ont créé deux nouveaux benchmarks, HumanEval Pro et MBPP Proqui élargissent les ensembles de données existants. Chaque problème dans HumanEval Pro et MBPP Pro s’appuie sur un exemple existant dans l’ensemble de données d’origine et introduit des éléments supplémentaires qui nécessitent que le modèle résolve le problème de base et invoque cette solution pour résoudre un problème plus complexe.
Par exemple, le problème initial peut être quelque chose de simple, comme écrire une fonction qui remplace toutes les occurrences d’un caractère donné dans une chaîne par un nouveau caractère.
Le problème étendu serait d’écrire une fonction qui modifie les occurrences de plusieurs caractères dans une chaîne avec leurs remplacements donnés. Cela nécessiterait que le modèle écrive une nouvelle fonction qui invoque la fonction précédente qu’il a générée dans le problème simple.
“Cette évaluation de la génération de code auto-invoquant offre des informations plus approfondies sur les capacités de programmation des LLM, qui vont au-delà de la portée de la génération de code à problème unique”, écrivent les chercheurs.
Les LLM fonctionnent mal dans la génération de code auto-invoquant
Les chercheurs ont testé HumanEval Pro et MBPP Pro sur plus de 20 modèles ouverts et privés, dont GPT-4o, OpenAI o1-mini et Claude 3.5 Sonnet, ainsi que les séries Qwen, DeepSeek et Codestral.
Leurs résultats montrent une disparité significative entre les tests de codage traditionnels et les tâches de génération de code auto-invoquées. “Bien que les LLM de pointe excellent dans la génération d’extraits de code individuels, ils ont souvent du mal à (utiliser) efficacement leur propre code généré pour résoudre des problèmes plus complexes”, écrivent les chercheurs.
Par exemple, avec une seule génération (pass@1), o1-mini atteint 96,2 % dans HumanEval mais seulement 76,2 % dans HumanEval Pro.
Une autre découverte intéressante est que, même si le réglage des instructions apporte des améliorations significatives dans les tâches de codage simples, il présente des rendements décroissants dans la génération de code auto-invoquant. Les chercheurs notent que « les approches actuelles de réglage basées sur les instructions ne sont pas assez efficaces pour les tâches de génération de code auto-invoquées plus complexes », ce qui suggère que nous devons repenser la façon dont nous formons les modèles de base pour les tâches de codage et de raisonnement.
Pour faire progresser la recherche sur la génération de code auto-invoquant, les chercheurs proposent une technique permettant de réutiliser automatiquement les références de codage existantes pour la génération de code auto-invoquant. L’approche utilise le LLM frontière pour générer des problèmes auto-invoqués basés sur les problèmes d’origine. Ils génèrent ensuite des solutions candidates et vérifient leur exactitude en exécutant le code et en exécutant des cas de test sur celles-ci. Le pipeline minimise le besoin de révision manuelle du code pour aider à générer plus d’exemples avec moins d’effort.
Un paysage complexe
Cette nouvelle famille de benchmarks arrive à un moment où les modèles de pointe conquièrent rapidement les anciens benchmarks de codage. Les modèles frontières actuels tels que GPT-4o, o1 et Claude 3.5 Sonnet ont déjà des scores très élevés dans HumanEval et MBPP, ainsi que leurs versions plus avancées, HumanEval+ et MBPP+.
Parallèlement, il existe des points de référence plus complexes, tels que Banque SWEqui évaluent les capacités des modèles dans des tâches d’ingénierie logicielle de bout en bout qui nécessitent un large éventail de compétences, telles que l’utilisation de bibliothèques et de fichiers externes et la gestion d’outils DevOps. SWE-Bench est une référence très difficile et même les modèles les plus avancés affichent des performances modestes. Par exemple, OpenAI o1 est incohérent dans SWE-Bench Verified.
La génération de code invoquée automatiquement se situe quelque part entre les simples benchmarks et SWE-Bench. Il permet d’évaluer un type très spécifique de capacité de raisonnement : utiliser le code existant dans un module pour résoudre des problèmes complexes. Les tests de code auto-invoquants peuvent être un indicateur très pratique de l’utilité des LLM dans des environnements réels, où les programmeurs humains contrôlent et où les copilotes d’IA les aident à effectuer des tâches de codage spécifiques dans le processus de développement de logiciels.
“HumanEval Pro et MBPP Pro sont positionnés pour servir de références précieuses pour les évaluations liées au code et inspirer le futur développement LLM en mettant en lumière les lacunes du modèle actuel et en encourageant l’innovation dans les méthodologies de formation”, écrivent les chercheurs des auteurs.
Share this content:
Post Comment