Suivez nous sur

ChatDev : Agents Communicatifs pour le Développement Logiciel

Intelligence Artificielle

ChatDev : Agents Communicatifs pour le Développement Logiciel

mm
ChatDev : Développement de logiciels assisté par IA

Le développement logiciel est un secteur qui repose souvent à la fois sur la consultation et l'intuition, et qui se caractérise par des stratégies décisionnelles complexes. De plus, le développement, la maintenance et l'exploitation des logiciels requièrent une approche rigoureuse et méthodique. Il est courant que les développeurs fondent leurs décisions sur l'intuition plutôt que sur la consultation, en fonction de la complexité du problème. Afin d'améliorer l'efficacité de l'ingénierie logicielle, 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 profond pour gérer diverses tâches du processus de développement logiciel. Grâce aux récents développements et avancées 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 logiciel. Ils y parviennent en utilisant des conceptions sophistiquées mises en œuvre à différentes étapes du processus.

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

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. 

Tests

É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.