stub ChatDev : Kommunikativa agenter för mjukvaruutveckling - Unite.AI
Anslut dig till vårt nätverk!

Artificiell intelligens

ChatDev: Kommunikativa agenter för mjukvaruutveckling

mm
Uppdaterad on
ChatDev: AI Assisted Software Development

Mjukvaruutvecklingsbranschen är en domän som ofta förlitar sig på både konsultation och intuition, kännetecknad av invecklade beslutsstrategier. Dessutom kräver utveckling, underhåll och drift av programvara ett disciplinerat och metodiskt tillvägagångssätt. Det är vanligt att mjukvaruutvecklare baserar beslut på intuition snarare än konsultation, beroende på problemets komplexitet. I ett försök att förbättra effektiviteten av mjukvaruutveckling, inklusive effektiviteten av programvara och minskade utvecklingskostnader, undersöker forskare användningen av djupinlärningsbaserade ramverk för att hantera olika uppgifter inom mjukvaruutvecklingsprocessen. Med den senaste utvecklingen och framstegen inom sektorerna för djupinlärning och AI, söker utvecklare sätt att förändra processer och metoder för mjukvaruutveckling. De gör detta genom att använda sofistikerade konstruktioner implementerade i olika stadier av mjukvaruutvecklingsprocessen.

Idag kommer vi att diskutera ChatDev, en Large Language Model (LLM) baserad, innovativ metod som syftar till att revolutionera området för mjukvaruutveckling. Detta paradigm försöker eliminera behovet av specialiserade modeller under varje fas av utvecklingsprocessen. ChatDev-ramverket utnyttjar kapaciteten hos LLM-ramverk och använder naturligt språkkommunikation för att förena och effektivisera nyckelprocesser för mjukvaruutveckling.

I den här artikeln kommer vi att utforska ChatDev, ett virtuellt företag som specialiserar sig på mjukvaruutveckling. ChatDev antar vattenfallsmodellen och delar noggrant upp mjukvaruutvecklingsprocessen i fyra primära steg.

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

Vart och ett av dessa steg distribuerar ett team av virtuella agenter som kodprogrammerare eller testare som samarbetar med varandra genom att använda dialoger som resulterar i ett sömlöst arbetsflöde. Chattkedjan fungerar som en facilitator och bryter ner varje steg i utvecklingsprocessen i atomära deluppgifter, vilket möjliggör dubbla roller, vilket möjliggör förslag och validering av lösningar med hjälp av kontextmedveten kommunikation som gör att utvecklare effektivt kan lösa de angivna deluppgifterna. 

ChatDev: AI Assisted Software Development

ChatDevs instrumentella analys visar att ChatDev-ramverket inte bara är extremt effektivt när det gäller att slutföra mjukvaruutvecklingsprocessen, utan det är extremt kostnadseffektivt samtidigt som det slutför hela mjukvaruutvecklingsprocessen på knappt en dollar. Dessutom identifierar ramverket inte bara, utan lindrar också potentiella sårbarheter, korrigerar potentiella hallucinationer, allt samtidigt som hög effektivitet och kostnadseffektivitet bibehålls. 

ChatDev: En introduktion till LLM-driven mjukvaruutveckling

Traditionellt är mjukvaruutvecklingsindustrin en industri som bygger på grunden för ett disciplinerat och metodiskt tillvägagångssätt, inte bara för att utveckla applikationerna utan också för att underhålla och driva dem. Traditionellt sett är en typisk mjukvaruutvecklingsprocess en mycket intrikat, komplex och tidskrävande noggrann process med långa utvecklingscykler, eftersom det finns flera roller involverade i utvecklingsprocessen inklusive koordinering inom organisationen, tilldelning av uppgifter, skrivning av kod, testning och slutligen dokumentation. 

Under de senaste åren, med hjälp av LLM eller stora språkmodellerAI-communityt har uppnått betydande milstolpar inom områdena datorseende och naturlig språkbehandling, och efter utbildning i "nästa ords förutsägelse"-paradigm, har stora språkmodeller väl visat sin förmåga att ge effektiv prestanda på ett brett spektrum av nedströmsuppgifter som maskinöversättning, frågesvar och kodgenerering. 

Även om stora språkmodeller kan skriva kod för hela programvaran, har de en stor nackdel: kod hallucinationer, vilket är ganska likt de hallucinationer som ramar för naturlig språkbehandling möter. Kodhallucinationer kan inkludera problem som oupptäckta buggar, saknade beroenden och ofullständiga funktionsimplementeringar. Det finns två huvudorsaker till kodhallucinationer. 

  • Brist på uppgiftsspecifikation: När man genererar programvarukoden i ett enda steg, att inte definiera det specifika för uppgiften, förvirrar LLM:erna som uppgifter i mjukvaruutvecklingsprocessen som att analysera användarkrav eller att välja det föredragna programmeringsspråket ger ofta vägledt tänkande, något som saknas i den höga -nivå uppgifter som hanteras av dessa LLMs. 
  • Brist på korsförhör : Betydande risker uppstår när en korsundersökning inte utförs, särskilt under beslutsprocessen. 

ChatDev syftar till att lösa dessa problem och underlätta LLM:er med kraften att skapa toppmoderna och effektiva mjukvaruapplikationer genom att skapa ett virtuellt driven företag för mjukvaruutveckling som etablerar vattenfallsmodellen och noggrant delar upp mjukvaruutvecklingsprocessen i fyra primära etapper,

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

Vart och ett av dessa steg distribuerar ett team av virtuella agenter som kodprogrammerare eller testare som samarbetar med varandra genom att använda dialoger som resulterar i ett sömlöst arbetsflöde. Dessutom använder ChatDev en chattkedja som fungerar som en facilitator, och bryter ner varje steg i utvecklingsprocessen i atomära deluppgifter, vilket möjliggör dubbla roller, vilket möjliggör förslag och validering av lösningar med hjälp av kontextmedveten kommunikation som gör det möjligt för utvecklare att effektivt lösa de angivna deluppgifterna. Chattkedjan består av flera noder där varje enskild nod representerar en specifik deluppgift, och dessa två roller deltar i kontextmedvetna diskussioner med flera svängar för att inte bara föreslå, utan också validera lösningarna. 

I detta tillvägagångssätt analyserar ChatDev-ramverket först en klients krav, genererar kreativa idéer, designar och implementerar prototypsystem, identifierar och adresserar potentiella problem, skapar tilltalande grafik, förklarar felsökningsinformationen och genererar användarmanualerna. Slutligen levererar ChatDev-ramverket programvaran till användaren tillsammans med källkoden, användarmanualer och specifikationer för beroendemiljö. 

ChatDev: Arkitektur och arbete

Nu när vi har en kort introduktion till ChatDev, låt oss ta en titt på arkitekturen och hur ChatDev-ramverket fungerar, med början i Chat-kedjan. 

Chattkedja

Som vi har nämnt i föregående avsnitt använder ChatDev-ramverket en vattenfallsmetod för mjukvaruutveckling som delar upp mjukvaruutvecklingsprocessen i fyra faser inklusive design, kodning, testning och dokumentation. Var och en av dessa faser har en unik roll i utvecklingsprocessen, och det finns ett behov av effektiv kommunikation dem emellan, och det finns potentiella utmaningar när man identifierar individer att engagera sig i och bestämmer sekvensen av interaktioner. 

För att lösa detta problem använder ChatDev-ramverket Chat Chain, en generaliserad arkitektur som bryter ner varje fas till en subatomär chatt, där var och en av dessa faser fokuserar på uppgiftsorienterat rollspel som involverar dubbla roller. Den önskade utgången för chatten utgör en viktig komponent för målmjukvaran, och den uppnås som ett resultat av samarbete och utbyte av instruktioner mellan de agenter som deltar i utvecklingsprocessen. Chattkedjans paradigm för intermediär uppgiftslösning illustreras i bilden nedan. 

För varje enskild chatt initierar en instruktör först instruktionerna och vägleder sedan dialogen mot slutförandet av uppgiften, och under tiden följer assistenterna instruktionerna från instruktören, ger idealiska lösningar och deltar i diskussioner om genomförbarheten av lösningen. Instruktören och agenten deltar sedan i dialoger med flera varv tills de når enighet och de anser att uppgiften är framgångsrik. Kedjekedjan ger användarna en transparent bild av utvecklingsprocessen, belyser vägen för att fatta beslut och erbjuder möjligheter att felsöka felen när de uppstår, vilket gör att slutanvändarna kan analysera och diagnostisera felen, inspektera mellanliggande utgångar, och ingripa i processen om det anses nödvändigt. Genom att införliva en chattkedja kan ChatDev-ramverket fokusera på varje specifik deluppgift i en granulär skala som inte bara underlättar effektivt samarbete mellan agenterna, utan det resulterar också i att de nödvändiga resultaten snabbt uppnås. 

Utforma

I designfasen kräver ChatDev-ramverket en första idé som input från den mänskliga klienten, och det finns tre fördefinierade roller i detta skede. 

  1. VD eller verkställande direktör. 
  2. CPO eller Chief Product Officer. 
  3. CTO eller Chief Technical Officer. 

Chattkedjan kommer sedan in i bilden och delar upp designfasen i sekventiella subatomära chattuppgifter som inkluderar programmeringsspråket (CTO och VD) och modaliteten för målmjukvaran (CPO och VD). Utformningsfasen involverar tre nyckelmekanismer: rolltilldelning eller rollspecialisering, minnesström och självreflektion. 

Rolltilldelning

Varje agent i Chat Dev-ramverket tilldelas en roll med hjälp av speciella meddelanden eller speciella uppmaningar under rollspelsprocessen. Till skillnad från andra konversationsspråksmodeller begränsar ChatDev-ramverket sig enbart till att initiera rollspelsscenarierna mellan agenterna. Dessa uppmaningar används för att tilldela roller till agenterna före dialogerna. 

Inledningsvis tar instruktören VD:s ansvar och engagerar sig i interaktiv planering medan CPO:s ansvar hanteras av agenten som utför uppgifterna och ger de svar som krävs. Ramverket använder "inledningsmaning” för rollspecialisering som gör att agenterna kan fullgöra sina roller effektivt. Assistenten och instruktörsuppmaningarna består av viktiga detaljer om de utsedda rollerna och uppgifterna, avslutningskriterier, kommunikationsprotokoll och flera begränsningar som syftar till att förhindra oönskade beteenden som oändliga loopar, oinformativa svar och instruktionsredundans. 

Minnesström

Minnesströmmen är en mekanism som används av ChatDev-ramverket som upprätthåller en omfattande konversationsregistrering av en agents tidigare dialoger, och hjälper till i beslutsprocessen som följer på ett uttalsmedvetet sätt. ChatDev-ramverket använder uppmaningar för att upprätta de nödvändiga kommunikationsprotokollen. Till exempel, när de inblandade parterna når en konsensus, ett avslutande meddelande som uppfyller ett specifikt formateringskrav som ( : Desktop-applikation”). För att säkerställa överensstämmelse med det angivna formatet övervakar ramverket kontinuerligt och låter slutligen den pågående dialogen nå en slutsats. 

Självreflektion

Utvecklare av ChatDev-ramverket har observerat situationer där båda de inblandade parterna nått en ömsesidig konsensus, men de fördefinierade kommunikationsprotokollen utlöstes inte. För att ta itu med dessa frågor måste ChatDev-ramverket introducerar en självreflektionsmekanism som hjälper till att hämta och extrahera minnen. För att implementera självreflektionsmekanismen initierar ChatDev-ramverket en ny och fräsch chatt genom att anlita "pseudo-jag" som en ny frågeställare. "Pseudo-jaget" analyserar de tidigare dialogerna och historiska dokumenten och informerar den nuvarande assistenten, varefter det begär en sammanfattning av avgörande och handlingsvärd information som visas i figuren nedan. 

Med hjälp av självhjälpsmekanismen uppmuntras ChatDev-assistenten att reflektera och analysera de beslut den har föreslagit. 

Kodning

Det finns tre fördefinierade roller i kodningsfasen, nämligen CTO, programmeraren och konstdesignern. Som vanligt delar chattkedjemekanismen upp kodningsfasen i individuella subatomära uppgifter som att generera koder (programmerare & CTO), eller att utforma ett GUI eller grafiskt användargränssnitt (programmerare och designer). CTOn instruerar sedan programmeraren att använda markdown-formatet för att implementera ett mjukvarusystem, varefter konstdesignern föreslår ett användarvänligt och interaktivt gränssnitt som använder sig av grafiska ikoner för att interagera med användare istället för att förlita sig på traditionella textbaserade kommandon. 

Kodhantering

ChatDev-ramverket använder objektorienterade programmeringsspråk som Python, Java och C++ för att hantera komplexa programvarusystem eftersom modulariteten hos dessa programmeringsspråk möjliggör användningen av fristående objekt som inte bara hjälper till vid felsökning utan också med gemensam utveckling , och hjälper också till att ta bort övertaliga genom att återanvända objekten genom begreppet arv. 

Tanke instruktioner

Traditionella metoder för att besvara frågor leder ofta till irrelevant information, eller felaktigheter, särskilt när kod genereras, eftersom naiva instruktioner kan leda till LLM-hallucinationer, och det kan bli en utmanande fråga. För att ta itu med detta problem introducerar ChatDev-ramverket mekanismen för "tankeinstruktioner" som hämtar inspiration från tankekedjan. Mekanismen för "tankeinstruktioner" adresserar uttryckligen individuella problemlösningstankar som ingår i instruktionerna, liknande att lösa uppgifter på ett sekventiellt och organiserat sätt. 

Testning

Att skriva en felfri kod i första försöket är utmanande inte bara för LLM, men också för mänskliga programmerare, och i stället för att helt kassera den felaktiga koden analyserar programmerare sin kod för att identifiera felen och rätta till dem. Testfasen i ChatDev-ramverket är uppdelad i tre roller: programmerare, testare och granskare. Testprocessen är vidare uppdelad i två sekventiella subatomära uppgifter: Peer Review eller statisk felsökning (Recensent och programmerare), och Systemtestning eller dynamisk felsökning (Programmerare och Testare). Statisk felsökning eller peer review analyserar källkoden för att identifiera fel, medan dynamisk felsökning eller systemtestning verifierar exekveringen av programvaran genom olika tester som utförs med hjälp av en tolk av programmeraren. Dynamisk felsökning fokuserar främst på black-box-testning för att utvärdera applikationerna. 

Dokumentation

Efter att ChatDev-ramverket är klart med design-, kodnings- och testfaser, anställer det fyra agenter, nämligen VD, CTO, CPO och programmerare för att generera dokumentationen för mjukvaruprojektet. ChatDev-ramverket använder LLM:er för att utnyttja få-shot-meddelanden med exempel i sammanhanget för att generera dokumenten. CTO instruerar programmeraren att tillhandahålla instruktioner för konfiguration av miljöberoenden och skapa ett dokument som "beroendekrav.txt". Samtidigt kommuniceras kraven och systemdesignen till CPO av VD, för att generera användarmanualen för produkten. 

Resultat

Programvarustatistik

För att analysera prestandan för ChatDev-ramverket, teamet av utvecklare körde en statistisk analys av mjukvaruapplikationerna som genererades av ramverket på basis av några nyckelmått inklusive förbrukade tokens, totala dialogvändningar, bildtillgångar, programvarufiler, versionsuppdateringar och några fler, och resultaten är visas i tabellen nedan. 

Varaktighetsanalys

För att undersöka ChatDevs produktionstid för mjukvara för olika förfrågningar, genomförde utvecklarna också en varaktighetsanalys, och skillnaden i utvecklingstiden för olika uppmaningar speglar den varierande tydligheten och komplexiteten i de tilldelade uppgifterna, och resultaten visas i figuren nedan. . 

Fallstudie

Följande figur visar att ChatDev utvecklar ett femma i rad eller ett Gomoku-spel. 

Bilden längst till vänster visar den grundläggande programvaran som skapats av ramverket utan att använda något GUI. Som det tydligt kan ses erbjuder applikationen utan något GUI begränsad interaktivitet, och användare kan bara spela det här spelet via kommandoterminalen. Nästa figur visar ett mer visuellt tilltalande spel skapat med användning av GUI, erbjuder en bättre användarupplevelse och en förbättrad interaktivitet för en engagerande spelmiljö som kan avnjutas mycket mer av användarna. Designeragenten skapar sedan ytterligare grafik för att ytterligare förbättra användbarheten och estetiken i spelet utan att påverka någon funktionalitet. Men om de mänskliga användarna inte är nöjda med bilden som skapats av designern, kan de ersätta bilderna efter att ChatDev-ramverket har slutfört programvaran. Flexibiliteten som erbjuds av ChatDev-ramverket för att manuellt ersätta bilderna tillåter användare att anpassa applikationerna enligt deras preferenser för en förbättrad interaktivitet och användarupplevelse utan att påverka programvarans funktionalitet på något sätt. 

Avslutande tankar

I den här artikeln har vi pratat om ChatDev, en LLM eller Large Language Model baserat innovativt paradigm som syftar till att revolutionera mjukvaruutvecklingsområdet genom att eliminera kravet på specialiserade modeller under varje fas av utvecklingsprocessen. ChatDev-ramverket syftar till att utnyttja förmågan hos LLM-ramverken genom att använda naturligt språkkommunikation för att förena och effektivisera nyckelprocesser för mjukvaruutveckling. ChatDev-ramverket använder chattkedjans mekanism för att bryta upp mjukvaruutvecklingsprocessen i sekventiella subatomära uppgifter, vilket möjliggör granulärt fokus och främjar önskade utdata för varje subatomär uppgift. 

"En ingenjör till yrket, en författare utantill". Kunal är en teknisk skribent med en djup kärlek och förståelse för AI och ML, dedikerad till att förenkla komplexa koncept inom dessa områden genom sin engagerande och informativa dokumentation.