AutoDev : GPT-4 en agent autonome de développement logiciel

AutoDev

Avec AutoDev, les labos de Microsoft donnent à voir un système de développement logiciel autonome. Comment se structure-t-il ?

Vers des systèmes de développement logiciel totalement autonomes, tests et validations compris ? Microsoft y tend avec AutoDev.

Six de ses chercheurs ont développé ce framework qui s’inspire notamment d’Auto-GPT, de LATS et de Reflexion.

Auto-GPT associe GPT-3.5 et GPT-4 à un « bot compagnon » qui s’appuie sur eux pour réaliser les étapes nécessaires à l’accomplissement d’un objectif.
Le framework LATS (Language Agent Tree Search) exploite l’algorithme de recherche arborescente Monte-Carlo pour mutualiser les capacités de planification, de raisonnement et d’action de LLM.
La méthode Reflexion établit un système de « feedback linguistique » sans modification de poids : un agent réfléchit verbalement à partir de signaux et conserve cette réflexion dans une mémoire épisodique.

AutoDev synthétise ces éléments et les adapte au développement logiciel en les intégrant dans le flux des IDE. Il se compose de quatre grandes briques : un gestionnaire de conversation, une bibliothèque d’outils, un planificateur d’agents et un environnement d’évaluation.

architecture AutoDev

AutoDev s’appuie sur Docker…

Les règles du système (nombre d’agents, responsabilités, commandes qui leur sont accessibles…) se configurent par des fichiers YAML.

Une fois l’objectif défini, le gestionnaire de conversation prend le relais. Il interprète les réponses que génèrent les agents, en extrayant commandes et arguments. Puis il les valide (syntaxe, sémantique, respect des permissions…) et, le cas échéant, invoque la bibliothèque d’outils pour déclencher les actions correspondantes.

Les résultats de l’évaluation (dans un environnement Docker) reviennent vers le gestionnaire de conversation. Celui-ci sélectionne les éléments importants, les résume éventuellement et ajoute un message structuré à la conversation, garantissant une forme d’explicabilité.

La boucle reprend jusqu’à ce que le gestionnaire détermine qu’il peut conclure la conversation. Cela peut se produire lorsqu’un agent signale que la tâche est accomplie. Mais aussi quand des problèmes sont détectés ou qu’on a atteint le nombre maximal d’itérations ou de tokens autorisé.

Le planificateur utilise trois algorithmes :

– Round-Robin (invocation séquentielle des agents, chacun pouvant exécuté un nombre prédéterminé d’opérations)
– Basé sur les tokens (un agent peut effectuer des opérations jusqu’à ce qu’il émette un token signifiant qu’il a accompli une tâche)
– Basé sur un ordre de priorité prédéfini

La bibliothèque d’outils donne accès à des commandes :

– D’édition (write, edit, insert, delete)
– De récupération (grep, find, ls)
– De build, run, test et validation
– D’opérations Git (commit, push, merge)
– De communication (talk pour envoyer des messages ; ask pour demander du feedback utilisateur)

… et sur GPT-4

L’évaluation des performances d’AutoDev s’est faite à partir du benchmark HumanEval. Celui-ci regroupe 164 problèmes contenant chacun une signature de fonction, un docstring et des tests unitaires (7,7 en moyenne).

Pour évaluer les performances en génération de code, on fournit à AutoDev un fichier contenant signature et docstring, l’objectif étant d’implémenter la méthode.
Pour la génération de tests, on enlève ceux du dataset et on demande à AutoDev de les recréer.

Les équipes de Microsoft ont opté pour une comparaison avec les méthodes LATS et Reflexion, en reprenant les données du leaderboard HumanEval. Ils y ont ajouté une baseline GPT-4 – issue du rapport technique d’OpenAI pour la partie code et déterminée à la main pour la partie test.

L’évaluation se fait avec une seule commande de communication : stop, avec laquelle un agent peut signaler qu’il a accompli une tâche. Donc sans feedback humain. Les résultats sont pris à la première tentative (Pass @1).

résultats code

résultats test

Combien ça coûte en tokens ?

La génération de code implique en moyenne 5,5 commandes, pour une conversation de 1656 tokens. Ces valeurs sont un peu plus élevées pour la génération de tests (environ 6,5 commandes et 1863 tokens).
Pour comparaison, la baseline GPT-4 consomme 200 tokens en génération de code et 373 en génération de tests. C’est l’environnement d’exécution qui entraîne les plus gros coûts de fonctionnement pour AutoDev. Exécuter les commandes CLI dans l’environnement utilisateur aurait économisé des ressources, mais les chercheurs ont privilégié la sécurité.

nombre de commandes

Le nombre un peu plus élevé d’actions nécessaires pour générer des tests tient, en particulier, à l’invocation de commandes indisponibles ou au format incorrect. La raison : une tendance des agents à mélanger langage naturel, code et commandes.

Vu la relative simplicité du dataset HumanEval, l’expérimentation s’est limitée à un seul agent GPT-4. On nous assure toutefois que « des résultats préliminaires indiquent l’impact positif d’une collaboration multiagents », Entre autres par l’implication d’un modèle réviseur, capable de suggérer des modifications au modèle développeur avant l’exécution de la validation.

En l’état, AutoDev s’utilise comme commande CLI, la conversation étant accessible dans VS Code. L’idée est d’intégrer complètement le système dans les IDE, sous forme de chatbot. Puis de viser l’intégration dans les pipelines CI/CD et les outils de révision de PR.

Illustration principale © Siqarus – Adobe Stock