AgentCoder : Génération de code basée sur des multi-agents avec test itératif et optimisation

L'avancement du traitement du langage naturel (NLP) a été considérablement accéléré par le développement des grands modèles linguistiques basés sur l'architecture des transformateurs (LLM). Ces modèles ont révolutionné les tâches du NLP, en particulier dans la génération de code, en aidant les développeurs à concevoir des logiciels avec une efficacité accrue. Malgré leurs progrès, des défis subsistent quant à l'équilibre entre la génération de fragments de code et la génération efficace ainsi que l'exécution de cas de test. Pour répondre à ces enjeux, ce papier présente une nouvelle solution, appelée Multi-Agent Assistant Code Generation (AgentCoder), fondée sur un cadre multi-agents comprenant trois agents spécialisés : l'agent programmeur, l'agent concepteur de tests et l'agent exécuteur de tests. Au cours du processus de codage, l'agent programmeur se concentre sur la génération et la révision du code en se basant sur les retours fournis par l'agent exécuteur de tests. L'agent concepteur de tests génère alors des cas de test pour le code produit, tandis que l'agent exécuteur exécute ce code avec ces cas de test et transmet les retours à l'agent programmeur. Ce système collaboratif garantit une génération robuste du code, dépassant les limites des modèles à agent unique et des méthodologies traditionnelles. Nos expérimentations approfondies sur 9 modèles de génération de code et 12 approches d'amélioration démontrent que AgentCoder surpasse de manière significative les modèles existants de génération de code ainsi que les techniques d'ingénierie de prompts sur diverses benchmarks. Par exemple, AgentCoder (GPT-4) atteint des taux de réussite de 96,3 % et 91,8 % en pass@1 sur les jeux de données HumanEval et MBPP, avec une surcharge totale de tokens de 56,9 K et 66,3 K respectivement, tandis que les méthodes de pointe atteignent seulement 90,2 % et 78,9 % en pass@1, avec une surcharge totale de 138,2 K et 206,5 K de tokens.