talon ChatDev : Agents Communicatifs pour le Développement Logiciel - Unite.AI
Suivez nous sur

Intelligence artificielle

ChatDev : Agents Communicatifs pour le Développement Logiciel

mm
Le kit de préparation mis à jour on
ChatDev : Développement de logiciels assisté par IA

L'industrie du développement de logiciels est un domaine qui repose souvent à la fois sur la consultation et l'intuition, caractérisé par des stratégies décisionnelles 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 fondent leurs décisions 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é du génie logiciel, notamment 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 en profondeur pour accomplir diverses tâches du processus de développement logiciel. Avec les développements et avancées récents dans les secteurs de l’apprentissage profond et de l’IA, les développeurs cherchent des moyens de transformer les processus et les pratiques de développement de logiciels. Pour ce faire, ils utilisent des conceptions sophistiquées mises en œuvre à différentes étapes du processus de développement logiciel.

Aujourd'hui, nous allons discuter de ChatDev, une approche innovante basée sur un grand modèle de langage (LLM) qui vise à révolutionner le domaine du développement logiciel. Ce paradigme cherche à éliminer le besoin de modèles spécialisés à chaque phase du processus de développement. Le framework ChatDev exploite les capacités des frameworks LLM, en utilisant la communication en langage naturel pour unifier et rationaliser les processus de développement de logiciels clés.

Dans cet article, nous explorerons ChatDev, une entreprise virtuelle spécialisée dans le développement de logiciels. ChatDev adopte le modèle en cascade et divise méticuleusement le processus de développement logiciel en quatre étapes principales.

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

Chacune de ces étapes déploie une équipe d'agents virtuels tels que des programmeurs de code ou des testeurs qui collaborent les uns avec les autres à l'aide de dialogues qui aboutissent à un flux de travail transparent. La chaîne de discussion fonctionne comme un facilitateur et décompose chaque étape du processus de développement en sous-tâches atomiques, permettant ainsi un double rôle, permettant des propositions et la validation de solutions à l'aide de communications contextuelles qui permettent aux développeurs de résoudre efficacement les sous-tâches spécifiées. 

ChatDev : Développement de logiciels assisté par IA

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

ChatDev : une introduction au développement de logiciels basé sur LLM

Traditionnellement, le secteur du développement de logiciels repose sur 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 logiciel typique est un processus méticuleux très complexe, long et long avec de longs cycles de développement, car de multiples rôles sont impliqués dans le processus de développement, notamment la coordination au sein de l'organisation, l'attribution des tâches, l'écriture du code, les tests et enfin la documentation. 

Ces dernières années, avec l'aide de LLM ou grands modèles de langage, la communauté de l'IA a franchi des étapes importantes dans les domaines de la vision par ordinateur et du traitement du langage naturel, et suite à une formation sur les paradigmes de « prédiction du mot suivant », les grands modèles linguistiques ont bien démontré leur capacité à fournir des performances efficaces sur un large éventail de tâches en aval. comme la traduction automatique, la réponse aux questions et la génération de code. 

Bien que les grands modèles de langage puissent écrire du code pour l'ensemble du logiciel, ils présentent un inconvénient majeur : hallucinations codées, ce qui est assez similaire aux hallucinations auxquelles sont confrontés 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 existe deux causes principales aux hallucinations codées. 

  • Absence de spécification des tâches : Lors de la génération du code logiciel en une seule étape, le fait de ne pas définir les spécificités de la tâche confond les LLM avec des tâches du processus de développement logiciel, comme l'analyse des besoins des utilisateurs ou la sélection du langage de programmation préféré, qui fournissent souvent une réflexion guidée, ce qui manque dans le haut niveau. -tâches de niveau gérées par ces LLM. 
  • Absence de contre-interrogatoire : Des risques importants surviennent lorsqu'un contre-interrogatoire n'est pas effectué, en particulier pendant les processus décisionnels. 

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

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

Chacune de ces étapes déploie une équipe d'agents virtuels tels que des programmeurs de code ou des testeurs qui collaborent les uns avec les autres à l'aide de dialogues qui aboutissent à un flux de travail transparent. De plus, ChatDev utilise une chaîne de discussion qui fonctionne comme un facilitateur et décompose chaque étape du processus de développement en sous-tâches atomiques, permettant ainsi un double rôle, permettant des propositions et la validation de solutions à l'aide de communications contextuelles qui permettent aux développeurs de communiquer efficacement. résoudre les sous-tâches spécifiées. La chaîne de discussion se compose de plusieurs nœuds où chaque nœud individuel représente une sous-tâche spécifique, et ces deux rôles s'engagent dans des discussions contextuelles à plusieurs tours pour non seulement proposer, mais également valider les solutions. 

Dans cette approche, le framework 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 prototypes, identifie et résout 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 framework ChatDev fournit le logiciel à l'utilisateur avec le code source, les manuels d'utilisation et les spécifications de l'environnement de dépendance. 

ChatDev : Architecture et Fonctionnement

Maintenant que nous avons une brève introduction à ChatDev, examinons l'architecture et le fonctionnement du framework ChatDev en commençant par Chat Chain. 

Chaîne de discussion

Comme nous l'avons mentionné dans la section précédente, le framework ChatDev utilise une méthode en cascade pour le développement logiciel qui divise le processus de développement logiciel en quatre phases, notamment 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 existe un besoin d'une communication efficace entre elles, et des défis potentiels sont rencontrés lors de l'identification des individus avec lesquels s'engager et de la détermination de la séquence des interactions. 

Pour résoudre ce problème, le framework ChatDev utilise Chat Chain, une architecture généralisée qui décompose chaque phase en une discussion subatomique, chacune de ces phases se concentrant sur un jeu de rôle orienté tâche qui implique des rôles doubles. Le résultat souhaité pour le chat constitue un élément essentiel pour le logiciel cible et est obtenu grâce à la collaboration et à l'échange d'instructions entre les agents participant au processus de développement. Le paradigme de la chaîne de discussion pour la résolution de tâches intermédiaires est illustré dans l'image ci-dessous. 

Pour chaque conversation individuelle, un instructeur lance d'abord les instructions, puis guide le dialogue vers l'achèvement de la tâche. Pendant ce temps, les assistants suivent les instructions données par l'instructeur, proposent des solutions idéales et engagent des discussions sur la faisabilité. de la solution. L'instructeur et l'agent engagent alors des dialogues à plusieurs tours jusqu'à ce qu'ils parviennent à un consensus et considèrent que la tâche est accomplie avec succès. La chaîne de chaîne offre aux utilisateurs une vue transparente du processus de développement, éclaire le chemin à suivre pour prendre des décisions et offre des opportunités de débogage des erreurs lorsqu'elles surviennent, ce qui permet aux utilisateurs finaux d'analyser et de diagnostiquer les erreurs, d'inspecter les résultats intermédiaires, et intervenir dans le processus si cela est jugé nécessaire. En incorporant une chaîne de discussion, le framework ChatDev est capable de se concentrer sur chaque sous-tâche spécifique à une échelle granulaire, ce qui facilite non seulement une collaboration efficace entre les agents, mais permet également d'atteindre rapidement les résultats requis. 

Conception

Dans la phase de conception, le framework ChatDev nécessite une idée initiale comme contribution du client humain, et il y a trois rôles prédéfinis à cette étape. 

  1. PDG ou président-directeur général. 
  2. CPO ou Chief Product Officer. 
  3. CTO ou directeur technique. 

La chaîne de discussion entre alors en jeu en divisant la phase de conception en tâches de discussion subatomiques séquentielles qui incluent le langage de programmation (CTO et PDG) et la modalité du logiciel cible (CPO 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 l'auto-réflexion. 

Attribution des rôles

Chaque agent du framework Chat Dev se voit attribuer un rôle à l'aide de messages spéciaux ou d'invites spéciales pendant le processus de jeu de rôle. Contrairement à d’autres modèles de langage conversationnel, le framework ChatDev se limite uniquement à initier 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 assume les responsabilités du PDG et s'engage dans une planification interactive tandis que les responsabilités du CPO sont assumées par l'agent qui exécute les tâches et fournit les réponses requises. Le cadre utilise «incitation à la création» pour une spécialisation des rôles qui permet aux agents de remplir efficacement leurs rôles. Les invites de l'assistant et de l'instructeur contiennent des détails essentiels concernant les rôles et tâches désignés, les critères de terminaison, les protocoles de communication et plusieurs contraintes visant à empêcher les comportements indésirables tels que les boucles infinies, les réponses non informatives et la redondance des instructions. 

Flux de mémoire

Le flux de mémoire est un mécanisme utilisé par le framework ChatDev qui conserve un enregistrement conversationnel complet des dialogues précédents d'un agent et aide au processus de prise de décision qui s'ensuit, en tenant compte des énoncés. Le framework 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 comme ( : Application de bureau"). Pour garantir le respect du format désigné, le cadre surveille en permanence et permet finalement au dialogue en cours de parvenir à une conclusion. 

Réflexion sur soi

Les développeurs du framework ChatDev ont observé des situations dans lesquelles les deux parties impliquées étaient parvenues à un consensus mutuel, mais les protocoles de communication prédéfinis n'étaient pas déclenchés. Pour résoudre ces problèmes, le Le framework ChatDev introduit un mécanisme d'auto-réflexion cela aide à la récupération et à l’extraction des souvenirs. Pour mettre en œuvre le mécanisme d'auto-réflexion, le framework ChatDev lance une nouvelle et nouvelle discussion en enrôlant le « pseudo-moi » comme nouveau questionneur. Le « pseudo-moi » analyse les dialogues précédents et les enregistrements historiques, et informe l'assistant actuel, après quoi il demande un résumé des informations concluantes et dignes d'action, comme le montre la figure ci-dessous. 

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

Codage

Il existe trois rôles prédéfinis dans la phase de codage, à savoir le CTO, le programmeur et le concepteur artistique. Comme d'habitude, le mécanisme de chaîne de discussion divise la phase de codage en tâches subatomiques individuelles comme la génération de codes (programmeur et CTO) ou la conception d'une interface graphique. ou une interface utilisateur graphique (programmeur et concepteur). Le CTO demande ensuite au programmeur d'utiliser le format markdown pour implémenter un système logiciel, après quoi le concepteur artistique propose une interface graphique conviviale et interactive qui utilise des icônes graphiques pour interagir avec les utilisateurs plutôt que de s'appuyer sur des commandes textuelles traditionnelles. 

Gestion de code

Le framework ChatDev utilise des langages de programmation orientés objet comme Python, Java et C++ pour gérer des systèmes logiciels complexes, car la modularité de ces langages de programmation permet l'utilisation d'objets autonomes qui facilitent non seulement le dépannage, mais également le développement collaboratif. , et aide également à supprimer les 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 conduisent 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 LLM, et cela peut devenir un problème difficile. Pour résoudre ce problème, le framework ChatDev introduit le mécanisme « d'instructions de pensée » qui s'inspire des invites de chaîne de pensée. Le mécanisme des « instructions de pensée » aborde explicitement les pensées individuelles de résolution de problèmes incluses dans les instructions, de la même manière que pour résoudre des tâches de manière séquentielle et organisée. 

Essais

Écrire un code sans erreur du premier coup est un défi non seulement pour LLM, mais aussi pour les programmeurs humains, et plutôt que d'éliminer complètement le code incorrect, les programmeurs analysent leur code pour identifier les erreurs et les rectifier. La phase de test dans le framework ChatDev est divisée en trois rôles : programmeur, testeur et réviseur. Le processus de test est divisé en deux tâches subatomiques séquentielles : Examen par les pairs ou débogage statique (réviseur et programmeur), et Test système ou débogage dynamique (Programmeur et Testeur). Le débogage statique ou examen par les pairs analyse le code source pour identifier les erreurs, tandis que le débogage dynamique ou les tests système vérifient l'exécution du logiciel à travers divers tests effectués à l'aide d'un interpréteur par le programmeur. Le débogage dynamique se concentre principalement sur les tests en boîte noire pour évaluer les applications. 

Documentation

Une fois que le framework ChatDev a terminé les phases de conception, de codage et de test, il emploie quatre agents, à savoir le PDG, le CTO, le CPO et le programmeur, pour générer la documentation du projet logiciel. Le framework ChatDev utilise des LLM pour exploiter des invites succinctes avec des exemples contextuels pour générer les documents. Le CTO demande au programmeur de fournir les instructions de configuration des dépendances environnementales et de créer un document tel que « Dependency Requirements.txt ». Simultanément, les exigences et la conception du système sont communiquées au CPO par le PDG, pour générer le manuel d'utilisation du produit. 

Résultats

Statistiques du logiciel

Pour analyser les performances du framework ChatDev, l'équipe de développeurs a effectué une analyse statistique sur les applications logicielles générées par le framework sur la base de quelques indicateurs clés, notamment les jetons consommés, le nombre total de tours de dialogue, les ressources d'image, les fichiers logiciels, les mises à jour de version et quelques autres, et les résultats sont démontré dans le tableau ci-dessous. 

Analyse de durée

Pour examiner le temps de production de ChatDev pour les logiciels pour différentes 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érentes invites reflète la clarté et la complexité variables des tâches assignées, et les résultats sont démontrés dans la figure ci-dessous. . 

Étude de cas

La figure suivante montre ChatDev développant un jeu Five in a Row ou Gomoku. 

La figure la plus à gauche montre le logiciel de base créé par le framework sans utiliser d'interface graphique. Comme on peut le voir clairement, l'application sans aucune interface graphique offre une interactivité limitée et les utilisateurs peuvent jouer à ce jeu uniquement via le terminal de commande. La figure suivante montre un jeu plus attrayant créé à l'aide d'une interface graphique, offre une meilleure expérience utilisateur et une interactivité améliorée pour un environnement de jeu engageant qui peut être beaucoup plus apprécié par les utilisateurs. L'agent concepteur crée ensuite des graphiques supplémentaires pour améliorer encore la convivialité et l'esthétique du gameplay sans affecter aucune fonctionnalité. Cependant, si les utilisateurs humains ne sont pas satisfaits de l'image générée par le concepteur, ils peuvent remplacer les images une fois que le framework ChatDev a terminé le logiciel. La flexibilité offerte par le framework ChatDev pour remplacer manuellement les images permet aux utilisateurs de personnaliser les applications selon leurs préférences pour une interactivité et une expérience utilisateur améliorées sans affecter en aucune façon la fonctionnalité du logiciel. 

Réflexions finales

Dans cet article, nous avons parlé de ChatDev, un LLM ou grand modèle de langage paradigme innovant basé sur un paradigme innovant qui vise à révolutionner le domaine du développement logiciel en éliminant le besoin de modèles spécialisés à chaque phase du processus de développement. Le framework ChatDev vise à exploiter les capacités des frameworks LLM en utilisant la communication en langage naturel pour unifier et rationaliser les processus de développement de logiciels clés. Le framework ChatDev utilise le mécanisme de chaîne de discussion pour diviser le processus de développement logiciel en tâches subatomiques séquentielles, permettant ainsi une concentration granulaire et promouvant les résultats souhaités pour chaque tâche subatomique. 

« Ingénieur de profession, écrivain de cœur ». Kunal est un rédacteur technique avec un amour et une compréhension profonds de l'IA et du ML, dédié à la simplification de concepts complexes dans ces domaines grâce à sa documentation engageante et informative.