AI-modeller och plattformar
ChatDev : Kommunikativa agenter för programvaruutveckling

Programvaruutvecklingsbranschen är ett område som ofta förlitar sig på både konsultation och intuition, som kännetecknas av invecklade beslutsstrategier. Dessutom kräver utveckling, underhåll och drift av programvara en disciplinerad och metodisk approach. Det är vanligt för programvaruutvecklare att basera beslut på intuition snarare än konsultation, beroende på problemets komplexitet. I ett försök att förbättra effektiviteten i programvaruteknik, inklusive effektiviteten i programvara och minskade utvecklingskostnader, undersöker forskare användningen av deep learning-baserade ramverk för att hantera olika uppgifter inom programvaruutvecklingsprocessen. Med de senaste utvecklingarna och framstegen inom deep learning- och AI-sektorerna, söker utvecklare sätt att omvandla programvaruutvecklingsprocesser och metoder. De gör detta genom att använda sofistikerade designimplementerade i olika skeden av programvaruutvecklingsprocessen.
Idag ska vi diskutera ChatDev, ett stort språkmodellbaserat (LLM) innovativt tillvägagångssätt som syftar till att revolutionera området programvaruutveckling. Denna paradigm syftar till att eliminera behovet av specialiserade modeller under varje skede av utvecklingsprocessen. ChatDev-ramverket utnyttjar LLM-ramverkens förmågor, med hjälp av naturligt språklig kommunikation för att förena och effektivisera nyckelprogramvaruutvecklingsprocesser.
I den här artikeln kommer vi att undersöka ChatDev, ett virtuellt företag som specialiserar sig på programvaruutveckling. ChatDev antar vattenfallsmodellen och delar noggrant in programvaruutvecklingsprocessen i fyra primära skeden.
- Design.
- Kodning.
- Testning.
- Dokumentation.
Var och en av dessa skeden använder ett team av virtuella agenter som kodprogrammerare eller testare som samarbetar med varandra med hjälp av dialoger som resulterar i en sömlös arbetsflöde. Chattkedjan fungerar som en facilitator och bryter ner varje skede av utvecklingsprocessen i atomära underuppgifter, vilket möjliggör dubbla roller, tillåter förslag och validering av lösningar med hjälp av kontextmedveten kommunikation som tillåter utvecklare att effektivt lösa de angivna underuppgifterna.

ChatDevs instrumentella analys visar att ChatDev-ramverket inte bara är extremt effektivt i att slutföra programvaruutvecklingsprocessen, utan också extremt kostnadseffektivt, eftersom det slutför hela programvaruutvecklingsprocessen för mindre än en dollar. Dessutom identifierar ramverket inte bara potentiella sårbarheter, utan också åtgärdar potentiella hallucinationer, samtidigt som det upprätthåller hög effektivitet och kostnadseffektivitet.
ChatDev : En introduktion till LLM-baserad programvaruutveckling
Traditionellt sett är programvaruutvecklingsbranschen ett område som bygger på en disciplinerad och metodisk approach, inte bara för att utveckla applikationer, utan också för att underhålla och driva programvara. Traditionellt sett är en typisk programvaruutvecklingsprocess en högt invecklad, komplex och tidskrävande process med långa utvecklingscykler, eftersom det finns flera roller inblandade i utvecklingsprocessen, inklusive samordning inom organisationen, tilldelning av uppgifter, skrivning av kod, testning och slutligen dokumentation.
Under de senaste åren, med hjälp av LLM eller stora språkmodeller, har AI-gemenskapen uppnått betydande milstolpar inom områdena datavisualisering och naturligt språkbehandling, och efter utbildning på “nästa ord-prediktion” paradigmer, har stora språkmodeller visat sig kunna returnera effektiv prestanda på en mängd olika nedströmsuppgifter som maskinöversättning, frågesvar och kodgeenerering.
Även om stora språkmodeller kan skriva kod för hela programvaran, har de en stor nackdel: kodhallucinationer, som är ganska lika hallucinationerna som naturliga språkbehandlingsramverk möter. Kodhallucinationer kan inkludera problem som ouppdagade buggar, saknade beroenden och ofullständiga funktioner. Det finns två huvudsakliga orsaker till kodhallucinationer.
- Brist på uppgiftsspecifikation: När man genererar programkod i ett enda steg, utan att definiera uppgiftens specifikation, förvirrar det LLM:erna, eftersom uppgifter i programvaruutvecklingsprocessen, som att analysera användarbehov eller välja föredragen programmeringsspråk, ofta tillhandahåller vägledande tankar, något som saknas i de högnivåuppgifter som hanteras av dessa LLM:er.
- Brister i granskning: Betydande risker uppstår när en granskning inte utförs, särskilt under beslutsprocesser.
ChatDev syftar till att lösa dessa problem och möjliggöra för LLM:er att skapa state-of-the-art och effektiva programvaruapplikationer genom att skapa ett virtuellt företag för programvaruutveckling som etablerar vattenfallsmodellen och noggrant delar in programvaruutvecklingsprocessen i fyra primära skeden,
- Design.
- Kodning.
- Testning.
- Dokumentation.
Var och en av dessa skeden använder ett team av virtuella agenter som kodprogrammerare eller testare som samarbetar med varandra med hjälp av dialoger som resulterar i en sömlös arbetsflöde. Dessutom använder ChatDev en chattkedja som fungerar som en facilitator och bryter ner varje skede av utvecklingsprocessen i atomära underuppgifter, vilket möjliggör dubbla roller, tillåter förslag och validering av lösningar med hjälp av kontextmedveten kommunikation som tillåter utvecklare att effektivt lösa de angivna underuppgifterna.
I detta tillvägagångssätt analyserar ChatDev-ramverket först kundens krav, genererar kreativa idéer, designar och implementerar prototypsystem, identifierar och åtgärdar potentiella problem, skapar attraktiva grafiska element, förklarar felsökningsinformationen och genererar användarhandboken. Slutligen levererar ChatDev-ramverket programvaran till användaren tillsammans med källkoden, användarhandboken och beroendemiljöspecifikationer.
ChatDev : Arkitektur och funktion
Nu när vi har en kort introduktion till ChatDev, låt oss titta på arkitekturen och funktionen i ChatDev-ramverket, med början i chattkedjan.
Chattkedja
Som vi har nämnt i den föregående avsnittet, använder ChatDev-ramverket en vattenfallsmodell för programvaruutveckling som delar in programvaruutvecklingsprocessen 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 mellan dem, och det finns potentiella utmaningar när det gäller att identifiera individer att engagera sig med och bestämma sekvensen av interaktioner.
För att hantera detta problem, använder ChatDev-ramverket en chattkedja, en generell arkitektur som bryter ner varje fas i en subatomisk chatt, med var och en av dessa faser som fokuserar på uppgiftsorienterad rollspel som involverar dubbla roller. Den önskade utdata för chatten utgör en viktig komponent för målprogramvaran, och den uppnås som ett resultat av samarbete och utbyte av instruktioner mellan agenter som deltar i utvecklingsprocessen. Chattkedjeparadigmen för intermediär uppgiftlösning visas i bilden nedan.

För varje enskild chatt, initierar en instruktör först instruktionerna och guider sedan dialogen mot slutförandet av uppgiften, och under tiden följer assistenterna instruktionerna som läggs av instruktören, tillhandahåller idealiska lösningar och engagerar sig i diskussioner om lösningens genomförbarhet. Instruktören och agenten engagerar sig sedan i multi-turn dialoger tills de når en överenskommelse och de anser att uppgiften är slutförd framgångsrikt. Chattkedjan ger användarna en transparent vy av utvecklingsprocessen, belyser vägen för beslutsfattande och erbjuder möjligheter för felsökning av fel när de uppstår, vilket tillåter slutanvändarna att analysera och diagnostisera felen, inspektera intermediära utdata och ingripa i processen om det anses nödvändigt. Genom att inkorporera en chattkedja, kan ChatDev-ramverket fokusera på varje specifik underuppgift på en granulär skala, vilket inte bara möjliggör effektivt samarbete mellan agenter, utan också resulterar i snabb uppnåelse av de erforderliga utdata.
Design
I designfasen kräver ChatDev-ramverket en initial idé som indata från den mänskliga klienten, och det finns tre fördefinierade roller i detta skede.
- VD eller verkställande direktör.
- CPO eller produktchef.
- CTO eller teknisk chef.
Chattkedjan kommer sedan i spel och delar designfasen i sekventiella subatomiska chattuppgifter som inkluderar programmeringsspråk (CTO och VD) och modalitet för målprogramvaran (CPO och VD). Designfasen involverar tre nyckelmekanismer: rolltilldelning eller rollspecialisering, minnesström och självreflektion.
Rolltilldelning
Varje agent i ChatDev-ramverket tilldelas en roll med hjälp av specialmeddelanden eller specialprompt under rollspelsprocessen. Till skillnad från andra konversationsmodeller, begränsar sig ChatDev-ramverket uteslutande till att initiera rollspelscenarier mellan agenter. Dessa prompter används för att tilldela roller till agenter före dialogerna.
Initialt tar instruktören på sig VD:ns ansvar och engagerar sig i interaktiv planering, medan CPO:ns ansvar hanteras av den agent som utför uppgifter och tillhandahåller de erforderliga svaren. Ramverket använder “inception-prompt” för rollspecialisering, vilket tillåter agenter att fullgöra sina roller effektivt. Instruktörs- och assistentprompten består av viktiga detaljer om de tilldelade 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 för att upprätthålla en omfattande konversationsrekord av tidigare dialoger för en agent och assisterar i beslutsprocessen som följer på ett uttalsmedvetet sätt. ChatDev-ramverket använder prompter för att etablera de erforderliga kommunikationsprotokollen. Till exempel, när parterna involverade når en överenskommelse, skickas ett avslutningsmeddelande som uppfyller ett specifikt formateringskrav, som (<MODALITET>: Desktop-applikation”). För att säkerställa överensstämmelse med det angivna formatet, övervakar ramverket kontinuerligt och tillåter slutligen den aktuella dialogen att nå ett slut.
Självreflektion
Utvecklarna av ChatDev-ramverket har observerat situationer där båda parterna hade nått en ömsesidig överenskommelse, men de fördefinierade kommunikationsprotokollen utlöstes inte. För att hantera dessa problem, introducerar ChatDev-ramverket 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 lista “pseudo self” som en ny frågeställare. “Pseudo self” analyserar tidigare dialoger och historiska register och informerar den aktuella assistenten, varefter den begär en sammanfattning av slutsatsen och handlingsvärdig information, som visas i figuren nedan.

Med hjälp av självhjälpsmekanismen, uppmuntras ChatDev-assistenten att reflektera och analysera de beslut som den har föreslagit.
Kodning
Det finns tre fördefinierade roller i kodningsfasen, nämligen CTO, programmerare och grafisk formgivare. Som vanligt delar chattkedjan kodningsfasen i individuella subatomiska uppgifter, som att generera kod (programmerare och CTO) eller att utveckla en grafisk användargränssnitt (programmerare och formgivare). CTO instruerar sedan programmeraren att använda markdown-formatet för att implementera ett programsystem, varefter formgivaren föreslår ett användarvänligt och interaktivt grafiskt användargränssnitt som använder grafiska ikoner för att interagera med användare snarare än 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 moduläriteten i dessa programmeringsspråk möjliggör användning av självständiga objekt som inte bara hjälper till med felsökning, utan också med samarbetsutveckling och hjälper till att ta bort redundanser genom att återanvända objekten med hjälp av arv.
Tankar
Traditionella metoder för frågesvar kan leda till irrelevanta uppgifter eller fel, särskilt när det gäller att generera kod, eftersom att tillhandahålla naiva instruktioner kan leda till LLM-hallucinationer och det kan bli ett svårt problem. För att hantera detta problem, introducerar ChatDev-ramverket “tank-instruktioner” som hämtar inspiration från kedja-av-tankar-prompt. “Tank-instruktioner” uttrycker explicita individuella problem-lö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 en utmaning, inte bara för LLM:er, utan också för mänskliga programmerare, och snarare än att helt förkasta den felaktiga koden, analyserar programmerare koden för att identifiera felen och rätta till dem. Testningsfasen i ChatDev-ramverket delas in i tre roller: programmerare, testare och granskare. Testprocessen delas ytterligare in i två sekventiella subatomiska uppgifter: Peer Review eller statisk felsökning (granskare och programmerare), och Systemtestning eller dynamisk felsökning (programmerare och testare). Statisch felsökning eller peer review analyserar källkoden för att identifiera fel, medan dynamisk felsökning eller systemtestning verifierar programvarans exekvering genom olika tester som utförs med hjälp av en tolk av programmeraren. Dynamisk felsökning fokuserar primärt på svart-låda-testning för att utvärdera applikationerna.
Dokumentation
Efter att ChatDev-ramverket har slutfört design-, kodnings- och testningsfaserna, använder det fyra agenter, nämligen VD, CTO, CPO och programmerare, för att generera dokumentationen för programvaruprojektet. ChatDev-ramverket använder LLM:er för att utnyttja få-skott-prompt med kontextexempel 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 kommunicerar kraven och systemdesignen till CPO av VD för att generera användarhandboken för produkten.
Resultat
Programvaru-statistik
För att analysera prestandan hos ChatDev-ramverket, utförde utvecklingsteamet en statistisk analys av programvaruapplikationerna som genererats av ramverket baserat på några nyckelmetricer, inklusive konsumerade token, totala dialogvarv, bildtillgångar, programvarufiler, versionsuppdateringar och några fler, och resultaten visas i tabellen nedan.

Varaktighetsanalys
För att undersöka ChatDevs produktionstid för programvara för olika begäranprompt, utförde utvecklarna också en varaktighetsanalys, och skillnaden i utvecklingstiden för olika prompter återspeglar den varierande tydligheten och komplexiteten hos de tilldelade uppgifterna, och resultaten visas i figuren nedan.

Fallstudie
Följande figur visar ChatDev som utvecklar ett Fem-i-rad eller Gomoku-spel.

Den vänstra figuren visar den grundläggande programvaran som skapats av ramverket utan att använda något grafiskt användargränssnitt. Som det kan ses, erbjuder programvaran utan grafiskt användargränssnitt begränsad interaktivitet, och användare kan spela det här spelet endast genom kommandoterminalen. Den nästa figuren visar ett mer visuellt tilltalande spel som skapats med hjälp av ett grafiskt användargränssnitt, som erbjuder en bättre användarupplevelse och en förbättrad interaktivitet för en engagerande spelmiljö som kan njutas mer av användarna. Formgivaren skapar sedan ytterligare grafik för att ytterligare förbättra användbarheten och estetiken hos spelet utan att påverka dess funktionalitet. Men om de mänskliga användarna inte är nöjda med den genererade bilden, kan de ersätta bilderna efter att ChatDev-ramverket har slutfört programvaran. Flexibiliteten som ChatDev-ramverket erbjuder 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.

Slutliga tankar
I den här artikeln har vi diskuterat ChatDev, ett stort språkmodellbaserat (LLM) innovativt tillvägagångssätt som syftar till att revolutionera området programvaruutveckling genom att eliminera behovet av specialiserade modeller under varje skede av utvecklingsprocessen. ChatDev-ramverket syftar till att utnyttja LLM-ramverkens förmågor med hjälp av naturligt språklig kommunikation för att förena och effektivisera nyckelprogramvaruutvecklingsprocesser. ChatDev-ramverket använder chattkedjemekanismen för att bryta ner programvaruutvecklingsprocessen i sekventiella subatomiska uppgifter, vilket möjliggör en granulär fokus och främjar önskade utdata för varje subatomisk uppgift.












