stomp ChatDev: communicatieve agenten voor softwareontwikkeling - Unite.AI
Verbind je met ons

Artificial Intelligence

ChatDev: communicatieve agenten voor softwareontwikkeling

mm
Bijgewerkt on
ChatDev: AI-ondersteunde softwareontwikkeling

De softwareontwikkelingsindustrie is een domein dat vaak afhankelijk is van zowel overleg als intuïtie, en wordt gekenmerkt door ingewikkelde besluitvormingsstrategieën. Bovendien vereisen de ontwikkeling, het onderhoud en de exploitatie van software een gedisciplineerde en methodische aanpak. Het is gebruikelijk dat softwareontwikkelaars beslissingen baseren op intuïtie in plaats van op overleg, afhankelijk van de complexiteit van het probleem. In een poging om de efficiëntie van software-engineering te verbeteren, inclusief de effectiviteit van software en lagere ontwikkelingskosten, onderzoeken wetenschappers het gebruik van op deep-learning gebaseerde raamwerken om verschillende taken binnen het softwareontwikkelingsproces aan te pakken. Met recente ontwikkelingen en vooruitgang in de deep learning- en AI-sectoren zoeken ontwikkelaars naar manieren om softwareontwikkelingsprocessen en -praktijken te transformeren. Ze doen dit door gebruik te maken van geavanceerde ontwerpen die in verschillende stadia van het softwareontwikkelingsproces zijn geïmplementeerd.

Vandaag gaan we ChatDev bespreken, een op het Large Language Model (LLM) gebaseerde, innovatieve aanpak die tot doel heeft een revolutie teweeg te brengen op het gebied van softwareontwikkeling. Dit paradigma probeert de behoefte aan gespecialiseerde modellen tijdens elke fase van het ontwikkelingsproces te elimineren. Het ChatDev-framework maakt gebruik van de mogelijkheden van LLM-frameworks en maakt gebruik van natuurlijke taalcommunicatie om belangrijke softwareontwikkelingsprocessen te verenigen en te stroomlijnen.

In dit artikel zullen we ChatDev verkennen, een virtueel aangedreven bedrijf dat gespecialiseerd is in softwareontwikkeling. ChatDev hanteert het watervalmodel en verdeelt het softwareontwikkelingsproces nauwgezet in vier hoofdfasen.

  1. Ontwerpen. 
  2. Coding. 
  3. Testing. 
  4. Documentatie. 

Bij elk van deze fasen wordt een team van virtuele agenten ingezet, zoals codeprogrammeurs of testers, die met elkaar samenwerken via dialogen die resulteren in een naadloze workflow. De chatketen werkt als een facilitator en verdeelt elke fase van het ontwikkelingsproces in atomaire subtaken, waardoor dubbele rollen mogelijk worden en voorstellen en validatie van oplossingen mogelijk worden gemaakt met behulp van contextbewuste communicatie waarmee ontwikkelaars de gespecificeerde subtaken effectief kunnen oplossen. 

ChatDev: AI-ondersteunde softwareontwikkeling

De instrumentele analyse van ChatDev toont aan dat het ChatDev-framework niet alleen uiterst effectief is bij het voltooien van het softwareontwikkelingsproces, maar dat het ook uiterst kostenefficiënt is en dat het het gehele softwareontwikkelingsproces in iets minder dan een dollar voltooit. Bovendien identificeert het raamwerk niet alleen potentiële kwetsbaarheden, maar verlicht het ook, en corrigeert het potentiële hallucinaties, terwijl de hoge efficiëntie en kosteneffectiviteit behouden blijven. 

ChatDev: een inleiding tot door LLM aangedreven softwareontwikkeling

Traditioneel is de softwareontwikkelingsindustrie er een die is gebouwd op de fundamenten van een gedisciplineerde en methodische aanpak, niet alleen voor het ontwikkelen van de applicaties, maar ook voor het onderhouden en exploiteren ervan. Traditioneel gesproken is een typisch softwareontwikkelingsproces een zeer ingewikkeld, complex en tijdrovend nauwgezet proces met lange ontwikkelingscycli, omdat er meerdere rollen bij het ontwikkelingsproces betrokken zijn, waaronder coördinatie binnen de organisatie, toewijzing van taken, schrijven van code, testen en ten slotte documentatie. 

In de afgelopen jaren, met de hulp van LLM of grote taalmodellenheeft de AI-gemeenschap belangrijke mijlpalen bereikt op het gebied van computervisie en natuurlijke taalverwerking, en na training over paradigma's voor 'volgende woordvoorspelling' hebben grote taalmodellen goed aangetoond dat ze in staat zijn om efficiënte prestaties te leveren bij een breed scala aan downstream-taken zoals machinevertaling, het beantwoorden van vragen en het genereren van code. 

Hoewel Large Language Models code voor de gehele software kunnen schrijven, hebben ze een groot nadeel: codeer hallucinaties, wat vrij gelijkaardig is aan de hallucinaties waarmee raamwerken voor natuurlijke taalverwerking worden geconfronteerd. Codehallucinaties kunnen problemen omvatten zoals onontdekte bugs, ontbrekende afhankelijkheden en onvolledige functie-implementaties. Er zijn twee belangrijke oorzaken van codehallucinaties. 

  • Gebrek aan taakspecificatie: Wanneer de softwarecode in één enkele stap wordt gegenereerd, verwart het niet definiëren van de specificiteit van de taak de LLM's, omdat taken in het softwareontwikkelingsproces, zoals het analyseren van gebruikersvereisten of het selecteren van de gewenste programmeertaal, vaak geleid denken bieden, iets dat ontbreekt in de hoge kwaliteit van de software. Taken op niveau die door deze LLM's worden afgehandeld. 
  • Gebrek aan kruisverhoor : Er ontstaan ​​aanzienlijke risico's als er geen kruisverhoor wordt uitgevoerd, vooral tijdens de besluitvormingsprocessen. 

ChatDev streeft ernaar deze problemen op te lossen en LLM's te faciliteren met de kracht om state-of-the-art en effectieve softwareapplicaties te creëren door een virtueel aangedreven bedrijf voor softwareontwikkeling op te richten dat het watervalmodel opzet en het softwareontwikkelingsproces nauwgezet in vier primaire delen verdeelt: stadia,

  1. Ontwerpen. 
  2. Coding. 
  3. Testing. 
  4. Documentatie. 

Bij elk van deze fasen wordt een team van virtuele agenten ingezet, zoals codeprogrammeurs of testers, die met elkaar samenwerken via dialogen die resulteren in een naadloze workflow. Bovendien maakt ChatDev gebruik van een chatketen die als facilitator werkt en elke fase van het ontwikkelingsproces opsplitst in atomaire subtaken, waardoor dubbele rollen mogelijk worden gemaakt en voorstellen en validatie van oplossingen mogelijk worden gemaakt met behulp van contextbewuste communicatie waarmee ontwikkelaars effectief kunnen communiceren. de opgegeven subtaken oplossen. De chatketen bestaat uit verschillende knooppunten waarbij elk afzonderlijk knooppunt een specifieke subtaak vertegenwoordigt, en deze twee rollen voeren contextbewuste discussies met meerdere beurten om niet alleen de oplossingen voor te stellen, maar ook te valideren. 

Bij deze aanpak analyseert het ChatDev-framework eerst de vereisten van een klant, genereert het creatieve ideeën, ontwerpt en implementeert prototypesystemen, identificeert en adresseert potentiële problemen, creëert aantrekkelijke afbeeldingen, legt de foutopsporingsinformatie uit en genereert de gebruikershandleidingen. Ten slotte levert het ChatDev-framework de software aan de gebruiker, samen met de broncode, gebruikershandleidingen en specificaties van de afhankelijkheidsomgeving. 

ChatDev: architectuur en werken

Nu we een korte introductie hebben over ChatDev, laten we eens kijken naar de architectuur en werking van het ChatDev-framework, te beginnen met de Chat Chain. 

Chatketen

Zoals we in de vorige sectie hebben vermeld, gebruikt het ChatDev-framework een watervalmethode voor softwareontwikkeling die het softwareontwikkelingsproces in vier fasen verdeelt, waaronder ontwerpen, coderen, testen en documentatie. Elk van deze fasen speelt een unieke rol in het ontwikkelingsproces, en er is behoefte aan effectieve communicatie tussen hen, en er zijn potentiële uitdagingen bij het identificeren van individuen om mee om te gaan, en het bepalen van de volgorde van interacties. 

Om dit probleem aan te pakken, maakt het ChatDev-framework gebruik van Chat Chain, een algemene architectuur die elke fase opsplitst in een subatomaire chat, waarbij elk van deze fasen zich richt op taakgericht rollenspel waarbij dubbele rollen betrokken zijn. De gewenste output voor de chat vormt een essentieel onderdeel voor de doelsoftware en wordt bereikt als resultaat van samenwerking en uitwisseling van instructies tussen de agenten die deelnemen aan het ontwikkelingsproces. Het chatketenparadigma voor het oplossen van tussentijdse taken wordt geïllustreerd in de onderstaande afbeelding. 

Voor elke individuele chat initieert een instructeur eerst de instructies en begeleidt vervolgens de dialoog naar de voltooiing van de taak. Ondertussen volgen de assistenten de instructies van de instructeur op, bieden ze ideale oplossingen en voeren ze discussies over de haalbaarheid. van de oplossing. De instructeur en de agent voeren vervolgens dialogen met meerdere beurten totdat ze tot een consensus komen en zij van mening zijn dat de taak met succes is volbracht. De ketenketen biedt gebruikers een transparant beeld van het ontwikkelingsproces, werpt licht op het pad voor het nemen van beslissingen en biedt mogelijkheden voor het debuggen van de fouten wanneer deze zich voordoen, waardoor de eindgebruikers de fouten kunnen analyseren en diagnosticeren, tussentijdse outputs kunnen inspecteren, en ingrijpen in het proces als dat nodig wordt geacht. Door een chatketen op te nemen, kan het ChatDev-framework zich op elke specifieke subtaak op een gedetailleerde schaal concentreren, wat niet alleen een effectieve samenwerking tussen de agenten mogelijk maakt, maar ook resulteert in het snel bereiken van de vereiste output. 

Het ontwerpen van

In de ontwerpfase vereist het ChatDev-framework een eerste idee als input van de menselijke klant, en er zijn drie vooraf gedefinieerde rollen in deze fase. 

  1. CEO of Chief Executive Officer. 
  2. CPO of Chief Product Officer. 
  3. CTO of Chief Technical Officer. 

De chatketen komt dan in actie en verdeelt de ontwerpfase in opeenvolgende subatomaire chattaken die de programmeertaal (CTO en CEO) en de modaliteit van de doelsoftware (CPO en CEO) omvatten. De ontwerpfase omvat drie belangrijke mechanismen: roltoewijzing of rolspecialisatie, geheugenstroom en zelfreflectie. 

Roltoewijzing

Elke agent in het Chat Dev-framework krijgt een rol toegewezen met behulp van speciale berichten of speciale aanwijzingen tijdens het rollenspelproces. In tegenstelling tot andere conversatietaalmodellen beperkt het ChatDev-framework zich uitsluitend tot het initiëren van rollenspelscenario's tussen de agenten. Deze aanwijzingen worden gebruikt om voorafgaand aan de dialogen rollen aan de agenten toe te wijzen. 

In eerste instantie neemt de instructeur de verantwoordelijkheden van de CEO op zich en houdt hij zich bezig met interactieve planning, terwijl de verantwoordelijkheden van de CPO worden afgehandeld door de agent die de taken uitvoert en de vereiste antwoorden geeft. Het raamwerk maakt gebruik van “aanvangsvraag”voor rolspecialisatie waarmee agenten hun rollen effectief kunnen vervullen. De assistent- en instructeursprompts bestaan ​​uit essentiële details over de toegewezen rollen en taken, beëindigingscriteria, communicatieprotocollen en verschillende beperkingen die tot doel hebben ongewenst gedrag te voorkomen, zoals oneindige lussen, niet-informatieve reacties en instructie-redundantie. 

Geheugenstroom

De geheugenstroom is een mechanisme dat wordt gebruikt door het ChatDev-framework en dat een uitgebreid gespreksverslag bijhoudt van de eerdere dialogen van een agent, en helpt bij het besluitvormingsproces dat volgt op een uitingbewuste manier. Het ChatDev-framework gebruikt aanwijzingen om de vereiste communicatieprotocollen tot stand te brengen. Wanneer de betrokken partijen bijvoorbeeld een consensus bereiken, wordt er een eindbericht weergegeven dat voldoet aan een specifieke opmaakvereiste, zoals ( : Desktop applicatie"). Om ervoor te zorgen dat het vastgestelde format wordt nageleefd, controleert het raamwerk voortdurend en zorgt het er uiteindelijk voor dat de huidige dialoog tot een conclusie komt. 

Zelfreflectie

Ontwikkelaars van het ChatDev-framework hebben situaties waargenomen waarin beide betrokken partijen een wederzijdse consensus hadden bereikt, maar de vooraf gedefinieerde communicatieprotocollen niet werden geactiveerd. Om deze problemen aan te pakken, heeft de Het ChatDev-framework introduceert een zelfreflectiemechanisme dat helpt bij het ophalen en extraheren van herinneringen. Om het zelfreflectiemechanisme te implementeren, initieert het ChatDev-framework een nieuwe en frisse chat door “pseudo-zelf” als nieuwe vraagsteller in te schakelen. Het ‘pseudo-zelf’ analyseert de eerdere dialogen en historische gegevens en informeert de huidige assistent, waarna hij om een ​​samenvatting vraagt ​​van sluitende en actiewaardige informatie, zoals weergegeven in de onderstaande afbeelding. 

Met behulp van het zelfhulpmechanisme wordt de ChatDev-assistent aangemoedigd om de door hem voorgestelde beslissingen te reflecteren en te analyseren. 

codering

Er zijn drie vooraf gedefinieerde rollen in de codeerfase, namelijk de CTO, de programmeur en de kunstontwerper. Zoals gebruikelijk verdeelt het chatketenmechanisme de codeerfase in individuele subatomaire taken, zoals het genereren van codes (programmeur en CTO), of het ontwerpen van een GUI. of grafische gebruikersinterface (programmeur en ontwerper). De CTO instrueert vervolgens de programmeur om het markdown-formaat te gebruiken om een ​​softwaresysteem te implementeren, waarna de kunstontwerper een gebruiksvriendelijke en interactieve GUI voorstelt die gebruik maakt van grafische pictogrammen om met gebruikers te communiceren in plaats van te vertrouwen op traditionele op tekst gebaseerde opdrachten. 

Codebeheer

Het ChatDev-framework maakt gebruik van objectgeoriënteerde programmeertalen zoals Python, Java en C++ om complexe softwaresystemen te verwerken, omdat de modulariteit van deze programmeertalen het gebruik van op zichzelf staande objecten mogelijk maakt die niet alleen helpen bij het oplossen van problemen, maar ook bij gezamenlijke ontwikkeling , en helpt ook bij het verwijderen van overtolligheden door de objecten opnieuw te gebruiken via het concept van overerving. 

Gedachte-instructies

Traditionele methoden voor het beantwoorden van vragen leiden vaak tot irrelevante informatie of onnauwkeurigheden, vooral bij het genereren van code, omdat het geven van naïeve instructies kan leiden tot LLM-hallucinaties, en het kan een uitdagend probleem worden. Om dit probleem aan te pakken introduceert het ChatDev-framework het ‘gedachte-instructies’-mechanisme dat inspiratie haalt uit gedachteketenprompts. Het ‘gedachte-instructies’-mechanisme richt zich expliciet op individuele probleemoplossende gedachten die in de instructies zijn opgenomen, vergelijkbaar met het op een sequentiële en georganiseerde manier oplossen van taken. 

Testen

Het schrijven van een foutloze code in de eerste poging is niet alleen een uitdaging LLM's, maar ook voor menselijke programmeurs, en in plaats van de onjuiste code volledig te negeren, analyseren programmeurs hun code om de fouten te identificeren en deze te corrigeren. De testfase in het ChatDev-framework is verdeeld in drie rollen: programmeur, tester en reviewer. Het testproces is verder onderverdeeld in twee opeenvolgende subatomaire taken: Peer Review of statische foutopsporing (recensent en programmeur), en Systeemtesten of dynamische foutopsporing (Programmeur en Tester). Statisch debuggen of peer review analyseert de broncode om fouten te identificeren, terwijl dynamisch debuggen of systeemtesten de uitvoering van de software verifieert door middel van verschillende tests die worden uitgevoerd met behulp van een tolk door de programmeur. Dynamisch debuggen richt zich primair op black-box-testen om de applicaties te evalueren. 

Documentatie

Nadat het ChatDev-framework klaar is met de ontwerp-, coderings- en testfasen, worden er vier agenten gebruikt, namelijk de CEO, CTO, CPO en programmeur, om de documentatie voor het softwareproject te genereren. Het ChatDev-framework maakt gebruik van LLM's om enkele prompts met in-contextvoorbeelden te gebruiken om de documenten te genereren. De CTO instrueert de programmeur om instructies te geven voor de configuratie van omgevingsafhankelijkheden, en een document te maken zoals “dependency requirements.txt”. Tegelijkertijd worden de vereisten en het systeemontwerp door de CEO aan de CPO gecommuniceerd, om de gebruikershandleiding voor het product te genereren. 

Resultaten

Softwarestatistieken

Om de prestaties van het ChatDev-framework te analyseren, Het team van ontwikkelaars heeft een statistische analyse uitgevoerd op de softwareapplicaties die door het raamwerk zijn gegenereerd op basis van een paar belangrijke statistieken, waaronder verbruikte tokens, totale dialoogwisselingen, afbeeldingsitems, softwarebestanden, versie-updates en nog een paar, en de resultaten zijn gedemonstreerd in de onderstaande tabel. 

Duur Analyse

Om de productietijd van ChatDev voor software voor verschillende verzoekprompts te onderzoeken, hebben de ontwikkelaars ook een duuranalyse uitgevoerd. Het verschil in de ontwikkelingstijd voor verschillende prompts weerspiegelt de variërende helderheid en complexiteit van de toegewezen taken. De resultaten worden gedemonstreerd in de onderstaande afbeelding. . 

Casestudies

De volgende afbeelding laat zien dat ChatDev een Five op a Row- of een Gomoku-spel ontwikkelt. 

De meest linkse figuur demonstreert de basissoftware die door het raamwerk is gemaakt zonder gebruik te maken van een GUI. Zoals duidelijk te zien is, biedt de applicatie zonder enige GUI beperkte interactiviteit en kunnen gebruikers dit spel alleen via de opdrachtterminal spelen. De volgende afbeelding demonstreert een visueel aantrekkelijker spel dat is gemaakt met behulp van GUI, dat een betere gebruikerservaring biedt en een verbeterde interactiviteit voor een boeiende gameplay-omgeving waar de gebruikers veel meer van kunnen genieten. De ontwerperagent maakt vervolgens extra afbeeldingen om de bruikbaarheid en esthetiek van de gameplay verder te verbeteren zonder de functionaliteit te beïnvloeden. Als de menselijke gebruikers echter niet tevreden zijn met de door de ontwerper gegenereerde afbeelding, kunnen ze de afbeeldingen vervangen nadat het ChatDev-framework de software heeft voltooid. De flexibiliteit die het ChatDev-framework biedt om de afbeeldingen handmatig te vervangen, stelt gebruikers in staat de applicaties aan te passen volgens hun voorkeuren voor een verbeterde interactiviteit en gebruikerservaring zonder de functionaliteit van de software op enigerlei wijze te beïnvloeden. 

Conclusie

In dit artikel hebben we het gehad over ChatDev, een LLM of groot taalmodel gebaseerd innovatief paradigma dat tot doel heeft een revolutie teweeg te brengen in het softwareontwikkelingsveld door de noodzaak voor gespecialiseerde modellen tijdens elke fase van het ontwikkelingsproces te elimineren. Het ChatDev-framework heeft tot doel de mogelijkheden van de LLM-frameworks te benutten door natuurlijke taalcommunicatie te gebruiken om belangrijke softwareontwikkelingsprocessen te verenigen en te stroomlijnen. Het ChatDev-framework maakt gebruik van het chatketenmechanisme om het softwareontwikkelingsproces op te splitsen in opeenvolgende subatomaire taken, waardoor granulaire focus mogelijk wordt en de gewenste output voor elke subatomaire taak wordt bevorderd. 

"Een ingenieur van beroep, een schrijver in hart en nieren". Kunal is een technisch schrijver met een diepe liefde voor en begrip van AI en ML, toegewijd aan het vereenvoudigen van complexe concepten op deze gebieden door middel van zijn boeiende en informatieve documentatie.