stub ChatDev : Kommunikative agenter til softwareudvikling - Unite.AI
Følg os

Kunstig intelligens

ChatDev: Kommunikative agenter til softwareudvikling

mm
Opdateret on
ChatDev: AI-assisteret softwareudvikling

Softwareudviklingsindustrien er et domæne, der ofte er afhængig af både konsultation og intuition, præget af indviklede beslutningsstrategier. Desuden kræver udvikling, vedligeholdelse og drift af software en disciplineret og metodisk tilgang. Det er almindeligt, at softwareudviklere baserer beslutninger på intuition frem for konsultation, afhængigt af problemets kompleksitet. I et forsøg på at øge effektiviteten af ​​software engineering, herunder effektiviteten af ​​software og reducerede udviklingsomkostninger, udforsker forskere brugen af ​​deep-learning-baserede rammer til at tackle forskellige opgaver inden for softwareudviklingsprocessen. Med den seneste udvikling og fremskridt inden for deep learning og AI-sektoren søger udviklere måder at transformere softwareudviklingsprocesser og -praksis. De gør dette ved at bruge sofistikerede designs implementeret på forskellige stadier af softwareudviklingsprocessen.

I dag skal vi diskutere ChatDev, en Large Language Model (LLM) baseret, innovativ tilgang, der har til formål at revolutionere området for softwareudvikling. Dette paradigme søger at eliminere behovet for specialiserede modeller i hver fase af udviklingsprocessen. ChatDev-rammeværket udnytter mulighederne i LLM-rammeværker, ved at bruge naturligt sprogkommunikation til at forene og strømline vigtige softwareudviklingsprocesser.

I denne artikel vil vi udforske ChatDev, et virtuelt drevet firma, der specialiserer sig i softwareudvikling. ChatDev adopterer vandfaldsmodellen og opdeler omhyggeligt softwareudviklingsprocessen i fire primære faser.

  1. Design. 
  2. Kodning. 
  3. Testing. 
  4. Dokumentation. 

Hvert af disse stadier implementerer et team af virtuelle agenter som kodeprogrammører eller testere, der samarbejder med hinanden ved hjælp af dialoger, der resulterer i en problemfri arbejdsgang. Chatkæden fungerer som en facilitator og opdeler hvert trin i udviklingsprocessen i atomare underopgaver, hvilket muliggør dobbeltroller, hvilket giver mulighed for forslag og validering af løsninger ved hjælp af kontekstbevidst kommunikation, der giver udviklere mulighed for effektivt at løse de specificerede underopgaver. 

ChatDev: AI-assisteret softwareudvikling

ChatDevs instrumentelle analyse viser, at ChatDev-rammen ikke kun er ekstremt effektiv til at fuldføre softwareudviklingsprocessen, men den er ekstremt omkostningseffektiv, ligesom den fuldender hele softwareudviklingsprocessen på lige under en dollar. Ydermere identificerer rammen ikke kun, men afhjælper også potentielle sårbarheder, retter op på potentielle hallucinationer, alt imens høj effektivitet og omkostningseffektivitet opretholdes. 

ChatDev: En introduktion til LLM-drevet softwareudvikling

Traditionelt er softwareudviklingsindustrien en, der er bygget på grundlaget for en disciplineret og metodisk tilgang, ikke kun til udvikling af applikationerne, men også til vedligeholdelse og drift af dem. Traditionelt set er en typisk softwareudviklingsproces en meget indviklet, kompleks og tidskrævende minutiøs proces med lange udviklingscyklusser, da der er flere roller involveret i udviklingsprocessen, herunder koordinering i organisationen, tildeling af opgaver, skrivning af kode, test og endelig dokumentation. 

I de sidste par år, ved hjælp af LLM eller store sprogmodellerAI-fællesskabet har opnået betydelige milepæle inden for computersyn og naturlig sprogbehandling, og efter træning i "næste ord-forudsigelse"-paradigmer har store sprogmodeller godt demonstreret deres evne til at levere effektiv ydeevne på en bred vifte af downstream-opgaver som maskinoversættelse, besvarelse af spørgsmål og kodegenerering. 

Selvom store sprogmodeller kan skrive kode til hele softwaren, har de en stor ulempe: kode hallucinationer, hvilket er ret lig de hallucinationer, som naturlige sprogbehandlingsrammer møder. Kodehallucinationer kan omfatte problemer som uopdagede fejl, manglende afhængigheder og ufuldstændige funktionsimplementeringer. Der er to hovedårsager til kodehallucinationer. 

  • Manglende opgavespecifikation: Når du genererer softwarekoden i et enkelt trin, forvirrer det ikke at definere opgavens specifikke, LLM'erne som opgaver i softwareudviklingsprocessen som at analysere brugerkrav eller vælge det foretrukne programmeringssprog giver ofte guidet tænkning, noget der mangler i den høje opgaver på niveau, der varetages af disse LLM'er. 
  • Manglende krydsforhør : Der opstår betydelige risici, når en krydsundersøgelse ikke udføres, især under beslutningsprocesserne. 

ChatDev sigter mod at løse disse problemer og lette LLM'er med magten til at skabe state of the art og effektive softwareapplikationer ved at skabe et virtuelt drevet firma til softwareudvikling, der etablerer vandfaldsmodellen og omhyggeligt opdeler softwareudviklingsprocessen i fire primære niveauer,

  1. Design. 
  2. Kodning. 
  3. Testing. 
  4. Dokumentation. 

Hvert af disse stadier implementerer et team af virtuelle agenter som kodeprogrammører eller testere, der samarbejder med hinanden ved hjælp af dialoger, der resulterer i en problemfri arbejdsgang. Derudover gør ChatDev brug af en chatkæde, der fungerer som en facilitator, og opdeler hvert trin i udviklingsprocessen i atomare underopgaver, hvilket muliggør dobbeltroller, hvilket giver mulighed for forslag og validering af løsninger ved hjælp af kontekstbevidst kommunikation, der giver udviklere mulighed for effektivt at løse de angivne underopgaver. Chatkæden består af flere noder, hvor hver enkelt node repræsenterer en specifik underopgave, og disse to roller indgår i multi-turn kontekstbevidste diskussioner for ikke kun at foreslå, men også validere løsningerne. 

I denne tilgang analyserer ChatDev-rammen først en klients krav, genererer kreative ideer, designer og implementerer prototypesystemer, identificerer og adresserer potentielle problemer, skaber tiltalende grafik, forklarer fejlfindingsoplysningerne og genererer brugervejledningerne. Endelig leverer ChatDev-rammerne softwaren til brugeren sammen med kildekoden, brugermanualer og afhængighedsmiljøspecifikationer. 

ChatDev: Arkitektur og arbejde

Nu hvor vi har en kort introduktion til ChatDev, lad os tage et kig på arkitekturen og virkemåden af ​​ChatDev-rammen startende med Chat-kæden. 

Chat kæde

Som vi har nævnt i det foregående afsnit, bruger ChatDev-rammen en vandfaldsmetode til softwareudvikling, der opdeler softwareudviklingsprocessen i fire faser, herunder design, kodning, test og dokumentation. Hver af disse faser har en unik rolle i udviklingsprocessen, og der er behov for effektiv kommunikation mellem dem, og der er potentielle udfordringer, når man identificerer individer at engagere sig i og bestemmer rækkefølgen af ​​interaktioner. 

For at løse dette problem bruger ChatDev-rammen Chat Chain, en generaliseret arkitektur, der nedbryder hver fase i en subatomisk chat, hvor hver af disse faser fokuserer på opgaveorienteret rollespil, der involverer dobbeltroller. Det ønskede output for chatten udgør en vital komponent for målsoftwaren, og det opnås som et resultat af samarbejde og udveksling af instruktioner mellem de agenter, der deltager i udviklingsprocessen. Chatkædeparadigmet for mellemliggende opgaveløsning er illustreret på billedet nedenfor. 

For hver enkelt chat sætter en instruktør først instruktionerne i gang og guider derefter dialogen hen imod færdiggørelsen af ​​opgaven, og i mellemtiden følger assistenterne instruktionerne fra instruktøren, giver ideelle løsninger og deltager i diskussioner om gennemførligheden. af løsningen. Instruktøren og agenten indgår derefter i dialoger med flere sving, indtil de når til enighed, og de vurderer, at opgaven er løst med succes. Kædekæden giver brugerne et gennemskueligt overblik over udviklingsprocessen, kaster lys over vejen til at træffe beslutninger og giver mulighed for at fejlsøge fejlene, når de opstår, der giver slutbrugerne mulighed for at analysere og diagnosticere fejlene, inspicere mellemudgange, og gribe ind i processen, hvis det skønnes nødvendigt. Ved at inkorporere en chatkæde er ChatDev-rammen i stand til at fokusere på hver specifik delopgave i en granulær skala, der ikke kun letter effektivt samarbejde mellem agenterne, men det resulterer også i hurtig opnåelse af de nødvendige output. 

Design

I designfasen kræver ChatDev-rammen en indledende idé som input fra den menneskelige klient, og der er tre foruddefinerede roller i denne fase. 

  1. administrerende direktør eller administrerende direktør. 
  2. CPO eller Chief Product Officer. 
  3. CTO eller Chief Technical Officer. 

Chatkæden kommer derefter i spil og opdeler designfasen i sekventielle subatomære chatopgaver, der inkluderer programmeringssproget (CTO og CEO) og modaliteten af ​​målsoftwaren (CPO og CEO). Designfasen involverer tre nøglemekanismer: Rolletildeling eller Rollespecialisering, Memory Stream og Selvrefleksion. 

Rolle tildeling

Hver agent i Chat Dev-rammen tildeles en rolle ved hjælp af specielle beskeder eller specielle prompter under rollespilsprocessen. I modsætning til andre samtalesprogmodeller begrænser ChatDev-rammen sig udelukkende til at initiere rollespilsscenarierne mellem agenterne. Disse prompter bruges til at tildele roller til agenterne forud for dialogerne. 

I første omgang tager instruktøren ansvaret for den administrerende direktør og engagerer sig i interaktiv planlægning, hvorimod CPO'ens ansvar varetages af den agent, der udfører opgaver og giver de nødvendige svar. Rammen bruger "start tilskyndelse” for rollespecialisering, der gør det muligt for agenterne at udføre deres roller effektivt. Assistenten og underviserens prompter består af vitale detaljer vedrørende de udpegede roller og opgaver, afslutningskriterier, kommunikationsprotokoller og adskillige begrænsninger, der har til formål at forhindre uønsket adfærd som uendelige sløjfer, uinformative svar og instruktionsredundans. 

Hukommelsesstream

Hukommelsesstrømmen er en mekanisme, der bruges af ChatDev-rammen, der opretholder en omfattende samtaleregistrering af en agents tidligere dialoger og hjælper med den beslutningsproces, der følger på en ytringsbevidst måde. ChatDev-rammen bruger prompter til at etablere de nødvendige kommunikationsprotokoller. For eksempel, når de involverede parter når en konsensus, en afsluttende besked, der opfylder et specifikt formateringskrav som ( : Desktop-applikation"). For at sikre overholdelse af det angivne format overvåger rammeværket løbende, og lader endelig den aktuelle dialog nå frem til en konklusion. 

Selv reflektion

Udviklere af ChatDev-rammeværket har observeret situationer, hvor begge de involverede parter havde nået en gensidig konsensus, men de foruddefinerede kommunikationsprotokoller blev ikke udløst. For at tackle disse problemer skal ChatDev framework introducerer en selvreflektionsmekanisme der hjælper med at hente og udvinde minder. For at implementere selvrefleksionsmekanismen starter ChatDev-rammen en ny og frisk chat ved at melde "pseudo-selv" som en ny spørger. "Pseudo-selvet" analyserer de tidligere dialoger og historiske optegnelser og informerer den nuværende assistent, hvorefter det anmoder om et resumé af afgørende og handlingsværdig information som vist i figuren nedenfor. 

Ved hjælp af selvhjælpsmekanismen opfordres ChatDev-assistenten til at reflektere og analysere de beslutninger, den har foreslået. 

Kodning

Der er tre foruddefinerede roller i kodningsfasen, nemlig CTO'en, programmøren og kunstdesigneren. Som sædvanlig opdeler chatkædemekanismen kodningsfasen i individuelle subatomære opgaver som at generere koder (programmør & CTO) eller at udtænke en GUI eller grafisk brugergrænseflade (programmør & designer). CTO'en instruerer derefter programmøren i at bruge markdown-formatet til at implementere et softwaresystem, hvorefter kunstdesigneren foreslår en brugervenlig og interaktiv GUI, der gør brug af grafiske ikoner til at interagere med brugere i stedet for at stole på traditionelle tekstbaserede kommandoer. 

Kodehåndtering

ChatDev-rammen bruger objektorienterede programmeringssprog som Python, Java og C++ til at håndtere komplekse softwaresystemer, fordi modulariteten af ​​disse programmeringssprog muliggør brugen af ​​selvstændige objekter, der ikke kun hjælper med fejlfinding, men også med udvikling i samarbejde. , og hjælper også med at fjerne overflødigheder ved at genbruge objekterne gennem begrebet arv. 

Tankevejledning

Traditionelle metoder til besvarelse af spørgsmål fører ofte til irrelevant information eller unøjagtigheder, især ved generering af kode, da at give naive instruktioner kan føre til LLM-hallucinationer, og det kan blive et udfordrende problem. For at løse dette problem introducerer ChatDev-rammen mekanismen "tankeinstruktioner", der henter inspiration fra tankekæde-prompter. "Tankeinstruktioner"-mekanismen adresserer eksplicit individuelle problemløsningstanker, der er inkluderet i instruktionerne, svarende til at løse opgaver på en sekventiel og organiseret måde. 

Test

At skrive en fejlfri kode i første forsøg er udfordrende ikke kun for LLM'er, men også for menneskelige programmører, og i stedet for helt at kassere den forkerte kode, analyserer programmører deres kode for at identificere fejlene og rette dem. Testfasen i ChatDev-rammen er opdelt i tre roller: programmør, tester og anmelder. Testprocessen er yderligere opdelt i to sekventielle subatomære opgaver: Peer Review eller statisk debugging (anmelder og programmør), og Systemtest eller dynamisk debugging (Programmer og Tester). Statisk debugging eller Peer review analyserer kildekoden for at identificere fejl, mens dynamisk debugging eller systemtest verificerer udførelsen af ​​softwaren gennem forskellige test, der udføres ved hjælp af en fortolker af programmøren. Dynamisk debugging fokuserer primært på black-box-test for at evaluere applikationerne. 

Dokumentation

Efter at ChatDev-rammen er færdig med design-, kodnings- og testfaser, beskæftiger den fire agenter, nemlig CEO, CTO, CPO og Programmer til at generere dokumentationen til softwareprojektet. ChatDev-rammen bruger LLM'er til at udnytte få-shot prompts med in-context eksempler til at generere dokumenterne. CTO'en instruerer programmøren i at give instruktionerne til konfiguration af miljøafhængigheder og oprette et dokument som "afhængighedskrav.txt". Samtidig kommunikeres kravene og systemdesignet til CPO'en af ​​CEO'en for at generere brugermanualen til produktet. 

Resultater

Software statistik

For at analysere ydeevnen af ​​ChatDev-rammen, teamet af udviklere kørte en statistisk analyse af softwareapplikationerne genereret af frameworket på basis af nogle få nøglemålinger, herunder forbrugte tokens, totale dialogvendinger, billedaktiver, softwarefiler, versionsopdateringer og nogle få flere, og resultaterne er vist i nedenstående tabel. 

Varighedsanalyse

For at undersøge ChatDevs produktionstid for software til forskellige anmodningsprompter, gennemførte udviklerne også en varighedsanalyse, og forskellen i udviklingstiden for forskellige prompter afspejler den varierende klarhed og kompleksitet af de tildelte opgaver, og resultaterne er vist i figuren nedenfor. . 

Case Study

Følgende figur viser, at ChatDev udvikler et fem i træk eller et Gomoku-spil. 

Figuren længst til venstre viser den grundlæggende software, der er skabt af rammen uden brug af nogen GUI. Som det tydeligt kan ses, tilbyder applikationen uden nogen GUI begrænset interaktivitet, og brugere kan kun spille dette spil via kommandoterminalen. Den næste figur viser et mere visuelt tiltalende spil skabt med brug af GUI, tilbyder en bedre brugeroplevelse og en forbedret interaktivitet for et engagerende gameplay-miljø, som kan nydes meget mere af brugerne. Designeragenten skaber derefter yderligere grafik for yderligere at forbedre brugervenligheden og æstetikken i gameplayet uden at påvirke nogen funktionalitet. Men hvis de menneskelige brugere ikke er tilfredse med det billede, der er genereret af designeren, kan de erstatte billederne, efter at ChatDev-rammeværket har fuldført softwaren. Fleksibiliteten, der tilbydes af ChatDev framework til manuelt at erstatte billederne, giver brugerne mulighed for at tilpasse applikationerne efter deres præferencer for en forbedret interaktivitet og brugeroplevelse uden at påvirke softwarens funktionalitet på nogen måde. 

Afsluttende tanker

I denne artikel har vi talt om ChatDev, en LLM eller Large Language Model baseret innovativt paradigme, der har til formål at revolutionere softwareudviklingsområdet ved at eliminere kravet om specialiserede modeller i hver fase af udviklingsprocessen. ChatDev-rammen har til formål at udnytte evnerne i LLM-rammerne ved at bruge naturligt sprogkommunikation til at forene og strømline vigtige softwareudviklingsprocesser. ChatDev-rammen bruger chatkædemekanismen til at opdele softwareudviklingsprocessen i sekventielle subatomære opgaver, hvilket muliggør granulært fokus og fremmer ønskede output for hver subatomære opgave. 

"En ingeniør af profession, en forfatter udenad". Kunal er en teknisk skribent med en dyb kærlighed og forståelse for AI og ML, dedikeret til at forenkle komplekse begreber på disse områder gennem sin engagerende og informative dokumentation.