Modèles et plateformes d’IA

ChatDev : Agents de communication pour le développement de logiciels

mm
Ajouter Unite.AI à vos sources préférées sur Google
ChatDev : AI Assisted Software Development

L’industrie du développement de logiciels est un domaine qui repose souvent sur la consultation et l’intuition, caractérisé par des stratégies de prise de décision complexes. De plus, le développement, la maintenance et l’exploitation de logiciels nécessitent une approche disciplinée et méthodique. Il est courant que les développeurs de logiciels prennent des décisions basées sur l’intuition plutôt que sur la consultation, en fonction de la complexité du problème. Dans le but d’améliorer l’efficacité de l’ingénierie logicielle, y compris l’efficacité des logiciels et la réduction des coûts de développement, les scientifiques explorent l’utilisation de cadres basés sur l’apprentissage automatique pour traiter diverses tâches au sein du processus de développement de logiciels. Avec les récents développements et les progrès dans les secteurs de l’apprentissage automatique et de l’IA, les développeurs cherchent à transformer les processus et les pratiques de développement de logiciels en utilisant des conceptions sophistiquées mises en œuvre à différents stades du processus de développement de logiciels.

Aujourd’hui, nous allons discuter de ChatDev, une approche innovante basée sur les modèles de langage à grande échelle (LLM) qui vise à révolutionner le domaine du développement de logiciels. Ce paradigme cherche à éliminer la nécessité de modèles spécialisés lors de chaque phase du processus de développement. Le cadre ChatDev utilise les capacités des cadres LLM, en utilisant la communication par langage naturel pour unifier et rationaliser les processus de développement de logiciels clés.

Dans cet article, nous allons explorer ChatDev, une entreprise virtuelle spécialisée dans le développement de logiciels. ChatDev adopte le modèle en cascade et divise méthodiquement le processus de développement de logiciels en quatre phases principales.

  1. Conception.
  2. Codage.
  3. Test.
  4. Documentation.

Chacune de ces phases déploie une équipe d’agents virtuels comme des programmeurs ou des testeurs qui collaborent les uns avec les autres en utilisant des dialogues qui aboutissent à un flux de travail sans heurt. La chaîne de conversation fonctionne comme un facilitateur et divise chaque phase du processus de développement en tâches sous-atomiques, permettant ainsi des rôles doubles, autorisant des propositions et des validations de solutions en utilisant des communications sensibles au contexte qui permettent aux développeurs de résoudre efficacement les tâches sous-atomiques spécifiées.

ChatDev : Développement de logiciels assisté par l'IA

L’analyse instrumentale de ChatDev démontre que non seulement le cadre ChatDev est extrêmement efficace pour compléter le processus de développement de logiciels, mais qu’il est également extrêmement rentable, car il complète l’ensemble du processus de développement de logiciels pour moins d’un dollar. De plus, le cadre non seulement identifie, mais également atténue les vulnérabilités potentielles, rectifie les hallucinations potentielles, tout en maintenant une grande efficacité et une rentabilité.

ChatDev : Introduction au développement de logiciels basé sur les LLM

Traditionnellement, l’industrie du développement de logiciels est un domaine qui repose sur les fondements d’une approche disciplinée et méthodique, non seulement pour développer les applications, mais également pour les maintenir et les exploiter. Traditionnellement, un processus de développement de logiciels typique est un processus complexe et long, avec des cycles de développement longs, car il y a de multiples rôles impliqués dans le processus de développement, y compris la coordination au sein de l’organisation, l’allocation de tâches, la rédaction de code, les tests et, enfin, la documentation.

Au cours des dernières années, avec l’aide des LLM ou Modèles de Langage à Grande Échelle, la communauté de l’IA a réalisé des progrès importants dans les domaines de la vision par ordinateur et du traitement du langage naturel, et, après une formation sur des paradigmes de prédiction de mots suivants, les Modèles de Langage à Grande Échelle ont bien démontré leur capacité à retourner des performances efficaces sur une large gamme de tâches en aval, telles que la traduction automatique, la réponse aux questions et la génération de code.

Bien que les Modèles de Langage à Grande Échelle puissent écrire du code pour l’ensemble du logiciel, ils ont un inconvénient majeur : les hallucinations de code, qui sont similaires aux hallucinations rencontrées par les cadres de traitement du langage naturel. Les hallucinations de code peuvent inclure des problèmes tels que des bogues non découverts, des dépendances manquantes et des implémentations de fonctions incomplètes. Il y a deux causes majeures d’hallucinations de code.

  • Manque de spécification de tâche : Lors de la génération de code de logiciel en une seule étape, ne pas définir les spécificités de la tâche confond les LLM, car les tâches du processus de développement de logiciels, telles que l’analyse des exigences des utilisateurs ou la sélection du langage de programmation préféré, fournissent souvent une réflexion guidée, quelque chose qui manque aux tâches de niveau élevé traitées par ces LLM.
  • Manque d’examen croisé : Des risques importants surviennent lorsqu’un examen croisé n’est pas effectué, en particulier lors des processus de prise de décision.

ChatDev vise à résoudre ces problèmes et à faciliter les LLM pour créer des applications logicielles efficaces et de pointe en créant une entreprise virtuelle pour le développement de logiciels qui établit le modèle en cascade et divise méthodiquement le processus de développement de logiciels en quatre phases principales,

  1. Conception.
  2. Codage.
  3. Test.
  4. Documentation.

Chacune de ces phases déploie une équipe d’agents virtuels comme des programmeurs ou des testeurs qui collaborent les uns avec les autres en utilisant des dialogues qui aboutissent à un flux de travail sans heurt. De plus, ChatDev utilise une chaîne de conversation qui fonctionne comme un facilitateur et divise chaque phase du processus de développement en tâches sous-atomiques, permettant ainsi des rôles doubles, autorisant des propositions et des validations de solutions en utilisant des communications sensibles au contexte qui permettent aux développeurs de résoudre efficacement les tâches sous-atomiques spécifiées. La chaîne de conversation est composée de plusieurs nœuds où chaque nœud individuel représente une tâche sous-atomique spécifique, et ces deux rôles engagent des discussions à plusieurs tours sensibles au contexte pour ne pas seulement proposer, mais également valider les solutions.

Dans cette approche, le cadre ChatDev analyse d’abord les exigences d’un client, génère des idées créatives, conçoit et met en œuvre des systèmes de prototype, identifie et traite les problèmes potentiels, crée des graphiques attrayants, explique les informations de débogage et génère les manuels d’utilisation. Enfin, le cadre ChatDev livre le logiciel à l’utilisateur, ainsi que le code source, les manuels d’utilisation et les spécifications d’environnement de dépendance.

ChatDev : Architecture et fonctionnement

Maintenant que nous avons une brève introduction à ChatDev, examinons l’architecture et le fonctionnement du cadre ChatDev, en commençant par la chaîne de conversation.

Chaîne de conversation

Comme nous l’avons mentionné dans la section précédente, le cadre ChatDev utilise une méthode en cascade pour le développement de logiciels qui divise le processus de développement de logiciels en quatre phases, y compris la conception, le codage, les tests et la documentation. Chacune de ces phases a un rôle unique dans le processus de développement, et il y a un besoin de communication efficace entre elles, et il y a des défis potentiels lors de l’identification des individus à engager et de la détermination de la séquence des interactions.

Pour résoudre ce problème, le cadre ChatDev utilise la chaîne de conversation, une architecture généralisée qui divise chaque phase en une conversation sous-atomique, avec chacune de ces phases se concentrant sur des rôles orientés vers les tâches qui impliquent des rôles doubles. La sortie souhaitée pour la conversation constitue un élément essentiel pour le logiciel cible, et elle est obtenue à la suite d’une collaboration et d’un échange d’instructions entre les agents participant au processus de développement. Le paradigme de la chaîne de conversation pour la résolution de tâches intermédiaires est illustré dans l’image ci-dessous.

Pour chaque conversation individuelle, un instructeur initie d’abord les instructions, puis guide le dialogue vers l’achèvement de la tâche, et, entre-temps, les assistants suivent les instructions données par l’instructeur, fournissent des solutions idéales et engagent des discussions sur la faisabilité de la solution. L’instructeur et l’agent engagent ensuite des dialogues à plusieurs tours jusqu’à ce qu’ils arrivent à un consensus et estiment que la tâche est accomplie avec succès. La chaîne de conversation fournit aux utilisateurs une vue transparente du processus de développement, éclaire le chemin de la prise de décision et offre des opportunités de débogage des erreurs lorsqu’elles surviennent, ce qui permet aux utilisateurs finals d’analyser et de diagnostiquer les erreurs, d’inspecter les sorties intermédiaires et d’intervenir dans le processus si nécessaire. En incorporant une chaîne de conversation, le cadre ChatDev est capable de se concentrer sur chaque tâche sous-atomique à une échelle granulaire qui non seulement facilite une collaboration efficace entre les agents, mais également aboutit à l’obtention rapide des sorties requises.

Conception

Dans la phase de conception, le cadre ChatDev nécessite une idée initiale en tant qu’entrée provenant du client humain, et il y a trois rôles prédéfinis dans cette phase.

  1. PDG ou Directeur général.
  2. DPO ou Directeur du produit.
  3. DTO ou Directeur technique.

La chaîne de conversation intervient ensuite en divisant la phase de conception en tâches de conversation sous-atomiques qui incluent le langage de programmation (DTO et PDG) et la modalité du logiciel cible (DPO et PDG). La phase de conception implique trois mécanismes clés : l’attribution de rôles ou la spécialisation de rôles, le flux de mémoire et la réflexion personnelle.

Attribution de rôles

Chaque agent dans le cadre ChatDev est attribué un rôle en utilisant des messages spéciaux ou des invites spéciales pendant le processus de jeu de rôle. Contrairement à d’autres modèles de langage conversationnel, le cadre ChatDev se limite à l’initiation des scénarios de jeu de rôle entre les agents. Ces invites sont utilisées pour attribuer des rôles aux agents avant les dialogues.

Initialement, l’instructeur prend les responsabilités du PDG et engage une planification interactive, tandis que les responsabilités du DPO sont gérées par l’agent qui exécute les tâches et fournit les réponses requises. Le cadre utilise des invites d’« amorçage » pour la spécialisation de rôles, ce qui permet aux agents de remplir leurs rôles de manière efficace. Les invites de l’assistant et de l’instructeur contiennent des informations essentielles concernant les rôles et les tâches désignés, les critères de terminaison, les protocoles de communication et plusieurs contraintes qui visent à prévenir les comportements indésirables, tels que les boucles infinies, les réponses non informatives et la redondance d’instructions.

Flux de mémoire

Le flux de mémoire est un mécanisme utilisé par le cadre ChatDev qui maintient un enregistrement conversationnel complet des dialogues précédents d’un agent et aide dans le processus de prise de décision qui suit de manière sensible au contexte. Le cadre ChatDev utilise des invites pour établir les protocoles de communication requis. Par exemple, lorsque les parties impliquées parviennent à un consensus, un message de fin qui satisfait à une exigence de formatage spécifique, telle que (<MODALITÉ> : Application de bureau). Pour garantir la conformité avec le format désigné, le cadre surveille en permanence et permet finalement à la conversation actuelle d’aboutir à une conclusion.

Réflexion personnelle

Les développeurs du cadre ChatDev ont observé des situations où les deux parties impliquées avaient atteint un consensus mutuel, mais les protocoles de communication prédéfinis n’avaient pas été déclenchés. Pour résoudre ces problèmes, le cadre ChatDev introduit un mécanisme de réflexion personnelle qui aide à la récupération et à l’extraction de mémoires. Pour mettre en œuvre le mécanisme de réflexion personnelle, le cadre ChatDev initie une nouvelle conversation en inscrivant « pseudo-soi » en tant que nouvelle question. Le « pseudo-soi » analyse les dialogues et les archives historiques précédents et informe l’assistant actuel, puis demande un résumé d’informations concluantes et dignes d’action, comme le montre la figure ci-dessous.

Avec l’aide du mécanisme d’auto-réflexion, l’assistant ChatDev est encouragé à réfléchir et à analyser les décisions qu’il a proposées.

Codage

Il y a trois rôles prédéfinis dans la phase de codage, à savoir le DTO, le programmeur et le concepteur d’art, comme d’habitude, la chaîne de conversation divise la phase de codage en tâches sous-atomiques individuelles, telles que la génération de code (programmeur et DTO) ou la conception d’une interface graphique utilisateur (programmeur et concepteur). Le DTO instruit ensuite le programmeur d’utiliser le format de mise en page pour mettre en œuvre un système de logiciel, après quoi le concepteur d’art propose une interface graphique utilisateur conviviale et interactive qui utilise des icônes graphiques pour interagir avec les utilisateurs plutôt que de s’appuyer sur des commandes basées sur du texte.

Gestion de code

Le cadre ChatDev utilise des langages de programmation orientés objet, tels que Python, Java et C++, pour gérer des systèmes de logiciels complexes, car la modularité de ces langages de programmation permet l’utilisation d’objets auto-contenus qui ne seulement aident à la débogage, mais également à la collaboration de développement et également à l’élimination des redondances en réutilisant les objets grâce au concept d’héritage.

Instructions de pensée

Les méthodes traditionnelles de réponse aux questions mènent souvent à des informations non pertinentes ou à des inexactitudes, en particulier lors de la génération de code, car fournir des instructions naïves peut conduire à des hallucinations de LLM et peut devenir un problème difficile. Pour résoudre ce problème, le cadre ChatDev introduit le mécanisme d’« instructions de pensée » qui s’inspire des invites de réflexion en chaîne. Le mécanisme d’« instructions de pensée » aborde explicitement les pensées de résolution de problèmes individuelles incluses dans les instructions, similaires à la résolution de tâches de manière séquentielle et organisée.

Test

Écrire un code sans erreur à la première tentative est un défi non seulement pour les LLM, mais également pour les programmeurs humains, et plutôt que de rejeter complètement le code incorrect, les programmeurs analysent leur code pour identifier les erreurs et les corriger. La phase de test dans le cadre ChatDev est divisée en trois rôles : programmeur, testeur et réviseur. Le processus de test est ensuite divisé en deux tâches sous-atomiques séquentielles : Examen par les pairs ou débogage statique (réviseur et programmeur), et Test de système ou débogage dynamique (programmeur et testeur). Le débogage statique ou l’examen par les pairs analyse le code source pour identifier les erreurs, tandis que le débogage dynamique ou le test de système vérifie l’exécution du logiciel à travers divers tests qui sont effectués à l’aide d’un interpréteur par le programmeur. Le débogage dynamique se concentre principalement sur les tests de boîte noire pour évaluer les applications.

Documentation

Après que le cadre ChatDev ait terminé les phases de conception, de codage et de test, il emploie quatre agents, à savoir le PDG, le DTO, le DPO et le programmeur, pour générer la documentation du projet de logiciel. Le cadre ChatDev utilise les LLM pour exploiter les invites à quelques exemples avec des exemples de contexte pour générer les documents. Le DTO instruit le programmeur de fournir les instructions pour la configuration des dépendances environnementales et de créer un document tel que « dépendances requises.txt ». Simultanément, les exigences et la conception du système sont communiquées au DPO par le PDG pour générer le manuel d’utilisation du produit.

Résultats

Statistiques de logiciel

Pour analyser les performances du cadre ChatDev, l’équipe de développeurs a effectué une analyse statistique sur les applications logicielles générées par le cadre sur la base de quelques métriques clés, notamment les jetons consommés, les tours de dialogue totaux, les ressources d’image, les fichiers de logiciel, les mises à jour de version et quelques autres, et les résultats sont présentés dans le tableau ci-dessous.

Analyse de durée

Pour examiner le temps de production de logiciels de ChatDev pour différents invites de requête, les développeurs ont également effectué une analyse de durée, et la différence dans le temps de développement pour différents invites reflète la clarté et la complexité variables des tâches assignées, et les résultats sont présentés dans la figure ci-dessous.

Étude de cas

La figure suivante montre ChatDev développant un jeu de cinq en ligne ou de Gomoku.

La figure la plus à gauche montre le logiciel de base créé par le cadre sans utiliser d’interface graphique utilisateur. Comme on peut le voir clairement, l’application sans interface graphique utilisateur offre une interactivité limitée, et les utilisateurs ne peuvent jouer à ce jeu qu’à travers le terminal de commande. La figure suivante montre un jeu plus attrayant créé avec l’utilisation d’une interface graphique utilisateur, offre une meilleure expérience utilisateur et une interactivité améliorée pour un environnement de jeu engageant qui peut être apprécié davantage par les utilisateurs. L’agent concepteur crée ensuite des graphiques supplémentaires pour améliorer encore l’utilisabilité et l’esthétique du jeu sans affecter la fonctionnalité du logiciel. Cependant, si les utilisateurs humains ne sont pas satisfaits des images générées par le concepteur, ils peuvent remplacer les images après que le cadre ChatDev ait terminé le logiciel. La flexibilité offerte par le cadre ChatDev pour remplacer manuellement les images permet aux utilisateurs de personnaliser les applications en fonction de leurs préférences pour une interactivité et une expérience utilisateur améliorées sans affecter la fonctionnalité du logiciel.

Pensées finales

Dans cet article, nous avons discuté de ChatDev, un paradigme innovant basé sur les LLM qui vise à révolutionner le domaine du développement de logiciels en éliminant la nécessité de modèles spécialisés lors de chaque phase du processus de développement. Le cadre ChatDev vise à exploiter les capacités des cadres LLM en utilisant la communication par langage naturel pour unifier et rationaliser les processus de développement de logiciels clés. Le cadre ChatDev utilise la chaîne de conversation pour diviser le processus de développement de logiciels en tâches sous-atomiques séquentielles, permettant ainsi une focalisation granulaire et promouvant les sorties souhaitées pour chaque tâche sous-atomique.

Un ingénieur de profession, un écrivain de cœur. Kunal est un rédacteur technique avec une profonde affection et une compréhension de l'IA et du ML, dédié à simplifier les concepts complexes dans ces domaines grâce à sa documentation engageante et informative.