AI-modeller og platforme

ChatDev : Kommunikative agenter til softwareudvikling

mm
Føj Unite.AI til dine foretrukne kilder på Google
ChatDev : AI Assisted Software Development

Softwareudviklingsindustrien er et område, der ofte afhænger af både konsultation og intuition, og som er karakteriseret ved komplekse beslutningsstrategier. Desuden kræver udvikling, vedligeholdelse og drift af software en disciplineret og metodisk tilgang. Det er almindeligt for softwareudviklere at tage beslutninger baseret på intuition snarere end konsultation, afhængigt af problemets kompleksitet. I et forsøg på at forbedre effektiviteten af softwareingeniørarbejde, herunder effektiviteten af software og reducerede udviklingsomkostninger, udforsker videnskabsfolk brugen af dyb-læringsbaserede rammer til at løse forskellige opgaver inden for softwareudviklingsprocessen. Med de seneste udviklinger og fremskridt i dyb-lærings- og AI-sektorerne søger udviklere at transformere softwareudviklingsprocesser og -praktikker. De gør dette ved at bruge avancerede designs, der er implementeret på forskellige stadier af softwareudviklingsprocessen.

I dag skal vi diskutere ChatDev, en Large Language Model (LLM)-baseret, innovativ tilgang, der sigter på at revolutionere softwareudviklingsfeltet. Dette paradigme søger at eliminere behovet for specialiserede modeller under hver fase af udviklingsprocessen. ChatDev-rammen udnytter LLM-rammernes evner og bruger naturlig sprogkommunikation til at samordne og strømline nøgleprocesser i softwareudvikling.

I denne artikel vil vi udforske ChatDev, et virtuelt drevet selskab, der specialiserer sig i softwareudvikling. ChatDev antager vandfaldsmodellen og dividerer softwareudviklingsprocessen metodisk i fire primære faser.

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

Hver af disse faser udstationerer et hold af virtuelle agenter som kodeprogrammerere eller testere, der samarbejder med hinanden ved hjælp af dialoger, der resulterer i en sammenhængende arbejdsgang. Chat-kæden fungerer som en facilitator og bryder hver fase af udviklingsprocessen ned i atomare underopgaver, hvilket muliggør dobbeltroller og tillader forslag og validering af løsninger ved hjælp af kontekstbevidste kommunikationer, der giver udviklere mulighed for effektivt at løse de specifikke underopgaver.

ChatDev: AI-assisteret softwareudvikling

ChatDevs instrumentale analyse viser, at ChatDev-rammen ikke kun er ekstremt effektiv til at fuldføre softwareudviklingsprocessen, men også ekstremt omkostningseffektiv, da den fuldfører hele softwareudviklingsprocessen for under en dollar. Desuden identificerer rammen ikke kun potentielle sårbarheder, men afhjælper også potentielle hallucinationer, samtidig med at den opretholder høj effektivitet og omkostningseffektivitet.

ChatDev: En introduktion til LLM-drevet softwareudvikling

Traditionelt er softwareudviklingsindustrien et område, der er bygget på en disciplineret og metodisk tilgang, ikke kun til udvikling af applikationer, men også til vedligeholdelse og drift af software. Traditionelt set er en typisk softwareudviklingsproces en meget kompleks og tidskrævende proces med lange udviklingscykler, da der er mange roller involveret i udviklingsprocessen, herunder koordination inden for organisationen, tildeling af opgaver, kodning, test og sluttede dokumentation.

De seneste år har set betydelige milepæle i computerseingsområdet og naturlig sprogbehandling takket være LLM eller Large Language Models. Efter træning på “næste ord-prædiktions”-paradigmer har Large Language Models vist sig i stand til at returnere effektivt på en bred vifte af downstream-opgaver som maskinoversættelse, spørgsmålssvar og kodegenerering.

Selvom Large Language Models kan skrive kode for hele softwaren, har de en stor ulempe: kodehallucinationer, som er meget lig hallucinationerne i naturlig sprogbehandling. Kodehallucinationer kan omfatte problemer som uopdagede fejl, manglende afhængigheder og ufuldstændige funktionsimplementeringer. Der er to hovedårsager til kodehallucinationer.

  • Mangel på opgave-specifikation: Når softwarekoden genereres i ét enkelt trin, kan det være svært at definere opgavens specifikationer, hvilket kan forvirre LLM’erne, da opgaver i softwareudviklingsprocessen ofte giver guidede tanker, noget, der mangler i de højniveaufunktioner, der håndteres af disse LLM’er.
  • Mangel på kryds-eksamination: Betragtelige risici opstår, når en kryds-eksamination ikke udføres, især under beslutningsprocesserne.

ChatDev sigter på at løse disse problemer og give LLM’erne mulighed for at skabe effektive software-applikationer ved at oprette et virtuelt drevet selskab til softwareudvikling, der etablerer vandfaldsmodellen og dividerer softwareudviklingsprocessen i fire primære faser,

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

Hver af disse faser udstationerer et hold af virtuelle agenter som kodeprogrammerere eller testere, der samarbejder med hinanden ved hjælp af dialoger, der resulterer i en sammenhængende arbejdsgang. Desuden bruger ChatDev en chat-kæde, der fungerer som en facilitator og bryder hver fase af udviklingsprocessen ned i atomare underopgaver, hvilket muliggør dobbeltroller og tillader forslag og validering af løsninger ved hjælp af kontekstbevidste kommunikationer, der giver udviklere mulighed for effektivt at løse de specifikke underopgaver.

I denne tilgang analyserer ChatDev-rammen først en klients krav, genererer kreative ideer, designer og implementerer prototype-systemer, identificerer og løser potentielle problemer, skaber tiltrækkende grafik, forklarer fejlinformation og genererer brugermanualer. Til sidst leverer ChatDev-rammen softwaren til brugeren sammen med kildekoden, brugermanualer og afhængigheds-miljøspecifikationer.

ChatDev: Arkitektur og funktionsmåde

Nu, hvor vi har en kort introduktion til ChatDev, lad os kaste et blik på arkitekturen og funktionsmåden for ChatDev-rammen, starting med Chat-kæden.

Chat-kæde

Som vi har nævnt i den foregående sektion, bruger ChatDev-rammen en vandfaldsmetode til softwareudvikling, der dividerer 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, der opstår, når man skal identificere individer til at engagere sig i og bestemme sekvensen af interaktioner.

For at løse dette problem bruger ChatDev-rammen Chat-kæde, en generel arkitektur, der bryder hver fase ned i en underatomisk chat, hvor hver af disse faser fokuserer på opgave-orienteret rollespil, der involverer dobbeltroller, der tillader forslag og validering af løsninger ved hjælp af kontekstbevidste kommunikationer, der giver udviklere mulighed for effektivt at løse de specifikke underopgaver.

For hver enkelt chat initieres instruktionerne først af en instruktør, og derefter vejleder han dialogen mod fuldførelsen af opgaven, og imens følger assistenterne instruktionerne, der er lagt af instruktøren, og engagerer sig i diskussioner om løsningens gennemførlighed. Instruktøren og agenten engagerer sig derefter i multi-turn dialoger, indtil de når til enighed og mener, at opgaven er fuldført med succes.Chat-kæden giver brugerne en gennemsigtig visning af udviklingsprocessen, kaster lys over beslutningsprocessen og tilbyder muligheder for at fejlfinde fejl, når de opstår, hvilket giver slutbrugerne mulighed for at analysere og diagnosticere fejl, inspicere intermediate outputs og intervenere i processen, hvis det er nødvendigt.Ved at inkorporere en chat-kæde kan ChatDev-rammen fokusere på hver enkelt underopgave på en granulær skala, hvilket ikke kun faciliterer effektivt samarbejde mellem agenterne, men også resulterer i en hurtig opnåelse af de nødvendige outputs.

Design

I design-fasen kræver ChatDev-rammen en initial ide som input fra den menneskelige klient, og der er tre foruddefinerede roller i denne fase.

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

Chat-kæden kommer derefter i spil og dividerer design-fasen i sekventielle underatomiske chatt-opgaver, der inkluderer programmeringssprog (CTO og CEO) og modaliteten af målsoftwaren (CPO og CEO). Design-fasen involverer tre nøglemekanismer: Rolletildeling eller Rollespecialisering, Hukommelsesstrøm og Selv-refleksion.

Rolletildeling

Hver agent i ChatDev-rammen tildeles en rolle ved hjælp af speciale beskeder eller speciale prompts under rollespilsprocessen. I modsætning til andre konversations-sprogmodeller begrænser ChatDev-rammen sig til at initiere rollespilsscenarier mellem agenterne. Disse prompts bruges til at tildele roller til agenterne før dialogerne.

Initialt tager instruktøren ansvar for CEO og engagerer sig i interaktiv planlægning, mens ansvar for CPO håndteres af agenten, der udfører opgaver og giver de nødvendige svar. Rammen bruger “inception prompting” til rollespecialisering, der giver agenterne mulighed for at udfylde deres roller effektivt.

Hukommelsesstrøm

Hukommelsesstrømmen er en mekanisme, der bruges af ChatDev-rammen til at opretholde en omfattende konversationsrecord af agenternes tidligere dialoger og hjælper i beslutningsprocessen, der følger i en udtryksbevidt måde. ChatDev-rammen bruger prompts til at etablere de nødvendige kommunikationsprotokoller.

Selv-refleksion

Udviklerne af ChatDev-rammen har observeret situationer, hvor begge parter havde nået en fælles forståelse, men de foruddefinerede kommunikationsprotokoller ikke var udløst. For at løse disse problemer introducerer ChatDev-rammen en selv-refleksionsmekanisme, der hjælper med at hente og trække hukommelser ud.

Med hjælp af selv-refleksionsmekanismen opmuntres ChatDev-assistenten til at reflektere og analysere de beslutninger, den har foreslået.

Kodning

Der er tre foruddefinerede roller i kodningsfasen, nemlig CTO, programmereren og kunstneren. Som sædvanligt dividerer chat-kæden kodningsfasen i enkeltstående underatomiske opgaver som generering af kode (programmereren og CTO) eller til at udvikle en brugerflade (programmereren og kunstneren).

Kodehåndtering

ChatDev-rammen bruger objektorienteret programmeringssprog som Python, Java og C++ til at håndtere komplekse software-systemer, da modulæriteten af disse programmeringssprog giver mulighed for at bruge selvstændige objekter, der ikke kun hjælper med fejlfinding, men også med samarbejdende udvikling og fjernelse af redundanser ved at genbruge objekterne gennem arv.

Tankeinstruktioner

Traditionelle metoder til spørgsmålssvar kan ofte føre til irrelevant information eller uændringer, især når man genererer kode, da naive instruktioner kan føre til LLM-hallucinationer og blive et problem. For at løse dette problem introducerer ChatDev-rammen “tankeinstruktioner”-mekanismen, der tager inspiration fra chain-of-thought-prompts.

Test

At skrive fejlfri kode i første forsøg er en udfordring, ikke kun for LLM’er, men også for menneskelige programmører, og i stedet for at fuldstændigt forkaste den fejlbehæftede kode, analyserer programmørerne deres kode for at identificere fejl og rette dem. Testfasen i ChatDev-rammen er inddelt i tre roller: programmer, tester og reviewer.

Dokumentation

Efter at ChatDev-rammen er færdig med design-, kodnings- og testfaser, anvender den fire agenter, nemlig CEO, CTO, CPO og programmer, til at generere dokumentation for software-projektet. ChatDev-rammen bruger LLM’er til at udnytte few-shot-prompts med kontekstbevidste eksempler til at generere dokumenter.

Resultater

Software-statistik

For at analysere ChatDev-rammens præstationer udførte udviklingsteamet en statistisk analyse af software-applikationerne, der er genereret af rammen, på basis af nogle nøglemetrikker, herunder forbrugte tokens, samlede dialogvendinger, billedaktiver, software-filer, versionsopdateringer og flere.

Varighedsanalyse

For at undersøge ChatDevs produktions tid for software til forskellige anmodningsprompts udførte udviklerne også en varighedsanalyse, og forskellen i udviklingstiden for forskellige prompts afspejler den varierende klarethed og kompleksitet af de tildelte opgaver.

Case-studie

Den følgende figur demonstrerer ChatDev, der udvikler et Five in a Row eller et Gomoku-spil.

Den venstre figur demonstrerer den grundlæggende software, der er skabt af rammen uden brug af GUI. Som det kan ses, tilbyder applikationen uden GUI begrænset interaktivitet, og brugerne kan kun spille dette spil gennem kommandoterminalen. Den næste figur demonstrerer et mere visuelt tiltrækkende spil, der er skabt med brug af GUI, og tilbyder en bedre brugeroplevelse og forbedret interaktivitet.

Endelige tanker

I denne artikel har vi talt om ChatDev, en LLM-baseret, innovativ tilgang, der sigter på at revolutionere softwareudviklingsfeltet ved at eliminere behovet for specialiserede modeller under hver fase af udviklingsprocessen. ChatDev-rammen sigter på at udnytte LLM-rammernes evner ved at bruge naturlig sprogkommunikation til at samordne og strømline nøgleprocesser i softwareudvikling. ChatDev-rammen bruger chat-kæden til at bryde softwareudviklingsprocessen ned i sekventielle underatomiske opgaver, hvilket giver mulighed for granulær fokus og fremmer ønskede outputs for hver underopgave.

En ingeniør af profession, en forfatter af hjerte. Kunal er en teknisk forfatter med en dyb kærlighed og forståelse af AI og ML, dedikeret til at forenkle komplekse koncepter inden for disse felter gennem sin engagerende og informative dokumentation.