stub „ChatDev“: programinės įrangos kūrimo komunikacijos agentai – Unite.AI
Susisiekti su mumis

Dirbtinis intelektas

„ChatDev“: programinės įrangos kūrimo komunikacijos agentai

mm
Atnaujinta on
„ChatDev“: AI pagalbinė programinės įrangos kūrimas

Programinės įrangos kūrimo pramonė yra sritis, kuri dažnai remiasi konsultacijomis ir intuicija, kuriai būdingos sudėtingos sprendimų priėmimo strategijos. Be to, programinės įrangos kūrimas, priežiūra ir veikimas reikalauja disciplinuoto ir metodinio požiūrio. Įprasta, kad programinės įrangos kūrėjai sprendimus priima remdamiesi intuicija, o ne konsultacijomis, atsižvelgdami į problemos sudėtingumą. Siekdami padidinti programinės įrangos inžinerijos efektyvumą, įskaitant programinės įrangos veiksmingumą ir sumažintas kūrimo sąnaudas, mokslininkai tiria giliu mokymusi pagrįstų sistemų naudojimą įvairioms programinės įrangos kūrimo proceso užduotims spręsti. Atsižvelgiant į naujausius pokyčius ir pažangą gilaus mokymosi ir AI sektoriuose, kūrėjai ieško būdų, kaip pakeisti programinės įrangos kūrimo procesus ir praktiką. Jie tai daro naudodami sudėtingus dizainus, įdiegtus skirtinguose programinės įrangos kūrimo proceso etapuose.

Šiandien aptarsime „ChatDev“ – didelės kalbos modeliu (LLM) pagrįstą novatorišką požiūrį, kuriuo siekiama pakeisti programinės įrangos kūrimo sritį. Šia paradigma siekiama panaikinti specializuotų modelių poreikį kiekviename kūrimo proceso etape. „ChatDev“ sistema išnaudoja LLM sistemų galimybes, naudodama bendravimą natūralia kalba, kad suvienodintų ir supaprastintų pagrindinius programinės įrangos kūrimo procesus.

Šiame straipsnyje apžvelgsime „ChatDev“ – virtualią įmonę, kurios specializacija yra programinės įrangos kūrimas. ChatDev priima krioklio modelį ir kruopščiai suskirsto programinės įrangos kūrimo procesą į keturis pagrindinius etapus.

  1. Projektavimas. 
  2. Kodavimas. 
  3. Testavimas. 
  4. Dokumentacija. 

Kiekviename iš šių etapų įdiegiama virtualių agentų komanda, pvz., kodo programuotojai ar bandytojai, kurie bendradarbiauja tarpusavyje naudodami dialogus, kurie užtikrina sklandžią darbo eigą. Pokalbių grandinė veikia kaip pagalbininkė ir suskaido kiekvieną kūrimo proceso etapą į atomines antrines užduotis, taip įgalindama dvigubus vaidmenis, leidžiančius teikti pasiūlymus ir patvirtinti sprendimus naudojant kontekstinį ryšį, leidžiantį kūrėjams efektyviai išspręsti nurodytas antrines užduotis. 

„ChatDev“: AI pagalbinė programinės įrangos kūrimas

„ChatDev“ instrumentinė analizė rodo, kad „ChatDev“ sistema ne tik itin efektyviai užbaigia programinės įrangos kūrimo procesą, bet ir yra itin ekonomiška, taip pat užbaigia visą programinės įrangos kūrimo procesą už mažiau nei XNUMX dolerį. Be to, sistema ne tik identifikuoja, bet ir sumažina galimus pažeidžiamumus, ištaiso galimas haliucinacijas, išlaikant aukštą efektyvumą ir ekonomiškumą. 

ChatDev: įvadas į LLM valdomos programinės įrangos kūrimą

Tradiciškai programinės įrangos kūrimo pramonė yra sukurta remiantis disciplinuotu ir metodišku požiūriu ne tik kuriant programas, bet ir jas prižiūrint bei eksploatuojant. Tradiciškai kalbant, tipiškas programinės įrangos kūrimo procesas yra labai sudėtingas, sudėtingas ir daug laiko reikalaujantis kruopštus procesas su ilgais kūrimo ciklais, nes kūrimo procese dalyvauja daugybė vaidmenų, įskaitant koordinavimą organizacijoje, užduočių paskirstymą, kodo rašymą, bandymai ir galiausiai dokumentacija. 

Per pastaruosius kelerius metus, padedant LLM arba didelių kalbų modeliai, AI bendruomenė pasiekė reikšmingų etapų kompiuterinio matymo ir natūralios kalbos apdorojimo srityse, o po mokymų apie „kito žodžio numatymo“ paradigmas, didelių kalbų modeliai puikiai įrodė savo gebėjimą efektyviai atlikti daugybę tolesnių užduočių. kaip mašininis vertimas, atsakymas į klausimus ir kodų generavimas. 

Nors didelių kalbų modeliai gali rašyti kodą visai programinei įrangai, jie turi didelį trūkumą: kodo haliucinacijos, kuris yra gana panašus į haliucinacijas, su kuriomis susiduria natūralios kalbos apdorojimo sistemos. Kodo haliucinacijos gali apimti tokias problemas kaip neatrastos klaidos, trūkstamos priklausomybės ir neužbaigtas funkcijų įgyvendinimas. Yra dvi pagrindinės kodo haliucinacijų priežastys. 

  • Trūksta užduoties specifikacijos: Generuojant programinės įrangos kodą vienu žingsniu, neapibrėžus užduoties specifikos, LLM klaidina, nes tokios užduotys programinės įrangos kūrimo procese, kaip vartotojų poreikių analizė arba pageidaujamos programavimo kalbos pasirinkimas, dažnai suteikia vadovaujantį mąstymą, ko trūksta - lygio užduotis, kurias tvarko šie LLM. 
  • Kryžminio patikrinimo trūkumas : Didelė rizika kyla, kai neatliekamas kryžminis patikrinimas, ypač sprendimų priėmimo procese. 

„ChatDev“ siekia išspręsti šias problemas ir palengvinti LLM, galinčias kurti naujausias technologijas ir veiksmingas programinės įrangos programas, sukurdamas virtualią programinės įrangos kūrimo įmonę, kuri nustato krioklio modelį ir kruopščiai padalina programinės įrangos kūrimo procesą į keturias pagrindines dalis. etapai,

  1. Projektavimas. 
  2. Kodavimas. 
  3. Testavimas. 
  4. Dokumentacija. 

Kiekviename iš šių etapų įdiegiama virtualių agentų komanda, pvz., kodo programuotojai ar bandytojai, kurie bendradarbiauja tarpusavyje naudodami dialogus, kurie užtikrina sklandžią darbo eigą. Be to, „ChatDev“ naudoja pokalbių grandinę, kuri veikia kaip pagalbinė priemonė ir kiekvieną kūrimo proceso etapą suskirsto į atomines antrines užduotis, taip įgalindama dvigubus vaidmenis, leidžiančius teikti pasiūlymus ir patvirtinti sprendimus naudojant kontekstinį ryšį, kuris leidžia kūrėjams efektyviai išspręsti nurodytas papildomas užduotis. Pokalbių grandinę sudaro keli mazgai, kuriuose kiekvienas atskiras mazgas atstovauja tam tikrai dalinei užduočiai, o šie du vaidmenys dalyvauja įvairiuose konteksto diskusijose, kad ne tik pasiūlytų, bet ir patvirtintų sprendimus. 

Taikant šį metodą, ChatDev sistema pirmiausia analizuoja kliento poreikius, generuoja kūrybines idėjas, projektuoja ir diegia prototipų sistemas, nustato ir sprendžia galimas problemas, sukuria patrauklią grafiką, paaiškina derinimo informaciją ir generuoja vartotojo vadovus. Galiausiai „ChatDev“ sistema pateikia vartotojui programinę įrangą kartu su šaltinio kodu, vartotojo vadovais ir priklausomybės aplinkos specifikacijomis. 

ChatDev: Architektūra ir darbas

Dabar, kai turime trumpą ChatDev įvadą, pažvelkime į ChatDev sistemos architektūrą ir veikimą, pradedant pokalbių grandine. 

Pokalbių grandinė

Kaip minėjome ankstesniame skyriuje, „ChatDev“ sistema programinės įrangos kūrimui naudoja krioklio metodą, kuris padalija programinės įrangos kūrimo procesą į keturis etapus, įskaitant projektavimą, kodavimą, testavimą ir dokumentavimą. Kiekvienas iš šių etapų vaidina unikalų vaidmenį vystymosi procese, todėl tarp jų reikia veiksmingo bendravimo, taip pat galimi iššūkiai, su kuriais susiduriama identifikuojant asmenis, su kuriais reikia bendrauti, ir nustatant sąveikų seką. 

Kad išspręstų šią problemą, „ChatDev“ sistema naudoja „Chat Chain“ – apibendrintą architektūrą, kuri kiekvieną fazę suskaido į subatominį pokalbį, o kiekviena iš šių fazių daugiausia dėmesio skiria į užduotį orientuotam vaidmeniui, kuriame atliekami du vaidmenys. Norimas pokalbio išvestis yra gyvybiškai svarbus tikslinės programinės įrangos komponentas ir pasiekiamas bendradarbiavimo bei keitimosi instrukcijomis tarp kūrimo procese dalyvaujančių agentų rezultatas. Pokalbių grandinės paradigma, skirta tarpinių užduočių sprendimui, parodyta paveikslėlyje žemiau. 

Kiekvienam individualiam pokalbiui instruktorius pirmiausia inicijuoja instrukcijas, o po to veda dialogą link užduoties atlikimo, o tuo tarpu asistentai laikosi instruktoriaus nurodymų, pateikia idealius sprendimus ir diskutuoja apie galimybes. tirpalo. Tada instruktorius ir agentas dalyvauja daugiasluoksniuose dialoguose, kol pasiekia sutarimą ir mano, kad užduotis buvo sėkmingai atlikta. Grandinės grandinė suteikia vartotojams skaidrų kūrimo proceso vaizdą, nušviečia sprendimų priėmimo kelią ir suteikia galimybę derinti klaidas, kai jos atsiranda, o tai leidžia galutiniams vartotojams analizuoti ir diagnozuoti klaidas, apžiūrėti tarpinius rezultatus, ir įsikišti į procesą, jei manoma, kad tai būtina. Įtraukus pokalbių grandinę, ChatDev sistema gali sutelkti dėmesį į kiekvieną konkrečią papildomą užduotį smulkiu mastu, o tai ne tik palengvina efektyvų agentų bendradarbiavimą, bet ir leidžia greitai pasiekti reikiamus rezultatus. 

Projektavimas

Projektavimo etape ChatDev sistemai reikalinga pradinė idėja kaip žmogaus kliento įvestis, ir šiame etape yra trys iš anksto apibrėžti vaidmenys. 

  1. Generalinis direktorius arba generalinis direktorius. 
  2. CPO arba vyriausiasis produktų pareigūnas. 
  3. CTO arba vyriausiasis techninis pareigūnas. 

Tada pradedama pokalbių grandinė, padalijanti projektavimo etapą į nuoseklias subatomines pokalbių užduotis, apimančias programavimo kalbą (CTO ir CEO) ir tikslinės programinės įrangos modalumą (CPO ir CEO). Projektavimo etapas apima tris pagrindinius mechanizmus: vaidmenų priskyrimą arba vaidmenų specializaciją, atminties srautą ir savirefleksiją. 

Vaidmenų paskyrimas

Kiekvienam agentui „Chat Dev“ sistemoje priskiriamas vaidmuo, naudojant specialius pranešimus arba specialius raginimus vaidmenų žaidimo metu. Skirtingai nuo kitų pokalbio kalbos modelių, „ChatDev“ sistema apsiriboja tik vaidmenų žaidimo tarp agentų scenarijų inicijavimu. Šie raginimai naudojami agentams priskirti vaidmenis prieš dialogą. 

Iš pradžių instruktorius prisiima generalinio direktoriaus pareigas ir užsiima interaktyviu planavimu, o CPO pareigas tvarko agentas, kuris vykdo užduotis ir pateikia reikiamus atsakymus. Sistema naudoja "pradžios raginimas“ už vaidmenų specializaciją, leidžiančią agentams efektyviai atlikti savo vaidmenis. Asistento ir instruktoriaus raginimus sudaro svarbi informacija apie paskirtus vaidmenis ir užduotis, nutraukimo kriterijus, ryšio protokolus ir keletą apribojimų, kuriais siekiama užkirsti kelią nepageidaujamam elgesiui, pvz., begalinėms kilpoms, neinformatyviems atsakymams ir instrukcijų pertekliui. 

Atminties srautas

Atminties srautas yra „ChatDev“ sistemos naudojamas mechanizmas, kuris palaiko išsamų ankstesnių agento dialogų pokalbių įrašą ir padeda priimant sprendimus, kurie vyksta atsižvelgiant į pasisakymą. „ChatDev“ sistema naudoja raginimus, kad nustatytų reikiamus ryšio protokolus. Pavyzdžiui, kai dalyvaujančios šalys pasiekia sutarimą, baigiamasis pranešimas, atitinkantis konkretų formatavimo reikalavimą, pvz. : darbalaukio programa“). Siekdama užtikrinti, kad būtų laikomasi nustatyto formato, sistema nuolat stebi ir galiausiai leidžia dabartiniam dialogui pasiekti išvadą. 

Savirefleksija

ChatDev sistemos kūrėjai pastebėjo situacijas, kai abi dalyvaujančios šalys pasiekė abipusį sutarimą, tačiau iš anksto nustatyti ryšio protokolai nebuvo suaktyvinti. Norėdami išspręsti šias problemas, „ChatDev“ sistemoje pristatomas savirefleksijos mechanizmas kuri padeda atkurti ir išgauti prisiminimus. Siekdama įgyvendinti savirefleksijos mechanizmą, ChatDev sistema inicijuoja naują ir naują pokalbį įtraukdama „pseudo save“ kaip naują klausėją. „Pseudo aš“ analizuoja ankstesnius dialogus ir istorinius įrašus ir informuoja dabartinį asistentą, po kurio jis paprašo įtikinamos ir veiksmų vertos informacijos santraukos, kaip parodyta paveikslėlyje žemiau. 

Pasitelkus savipagalbos mechanizmą, ChatDev asistentas skatinamas apmąstyti ir analizuoti siūlomus sprendimus. 

Kodavimas

Kodavimo fazėje yra trys iš anksto apibrėžti vaidmenys, būtent CTO, programuotojas ir meno dizaineris. Kaip įprasta, pokalbių grandinės mechanizmas padalija kodavimo fazę į atskiras subatomines užduotis, tokias kaip kodų generavimas (programuotojas ir CTO) arba GUI kūrimas. arba grafinė vartotojo sąsaja (programuotojas ir dizaineris). Tada CTO nurodo programuotojui naudoti žymėjimo formatą, kad įdiegtų programinės įrangos sistemą, po kurios meno dizaineris siūlo patogią ir interaktyvią grafinę sąsają, kuri naudoja grafines piktogramas, kad galėtų bendrauti su vartotojais, o ne pasikliauti tradicinėmis teksto komandomis. 

Kodo valdymas

ChatDev sistema naudoja į objektus orientuotas programavimo kalbas, tokias kaip Python, Java ir C++, kad galėtų valdyti sudėtingas programinės įrangos sistemas, nes šių programavimo kalbų moduliškumas leidžia naudoti savarankiškus objektus, kurie ne tik padeda šalinti triktis, bet ir bendradarbiaujant kurti. , taip pat padeda pašalinti perteklius pakartotinai naudojant objektus per paveldėjimo koncepciją. 

Mąstymo instrukcijos

Tradiciniai atsakymų į klausimus metodai dažnai sukelia nesvarbią informaciją arba netikslumus, ypač generuojant kodą, nes naivių nurodymų pateikimas gali sukelti LLM haliucinacijas ir tai gali tapti sudėtinga problema. Siekiant išspręsti šią problemą, „ChatDev“ sistemoje įdiegtas „minties nurodymų“ mechanizmas, kuris semiasi įkvėpimo iš minčių grandinės raginimų. „Minties nurodymų“ mechanizmas aiškiai sprendžia individualias problemų sprendimo mintis, įtrauktas į instrukcijas, panašiai kaip nuosekliai ir organizuotai sprendžiant užduotis. 

Testavimas

Pirmuoju bandymu parašyti kodą be klaidų yra sudėtinga ne tik LLM, bet ir žmonių programuotojams, o užuot visiškai išmetę neteisingą kodą, programuotojai analizuoja savo kodą, kad nustatytų klaidas ir jas ištaisytų. Testavimo etapas ChatDev sistemoje yra padalintas į tris vaidmenis: programuotojo, testuotojo ir apžvalgininko. Testavimo procesas toliau skirstomas į dvi nuoseklias subatomines užduotis: Tarpusavio peržiūra arba statinis derinimas (Recenzentas ir Programuotojas), ir Sistemos testavimas arba dinaminis derinimas (Programuotojas ir testuotojas). Statinis derinimas arba tarpusavio peržiūra analizuoja šaltinio kodą, kad nustatytų klaidas, o dinaminis derinimas arba sistemos testavimas patikrina programinės įrangos vykdymą įvairiais testais, kuriuos programuotojas atlieka naudodamas vertėją. Dinaminis derinimas visų pirma skirtas juodosios dėžės testavimui, siekiant įvertinti programas. 

Dokumentacija

Atlikus ChatDev sistemą su projektavimo, kodavimo ir testavimo etapais, programinės įrangos projekto dokumentacijai generuoti pasitelkiami keturi agentai, būtent CEO, CTO, CPO ir programuotojas. ChatDev sistema naudoja LLM, kad panaudotų kelių kadrų raginimus su konteksto pavyzdžiais dokumentams generuoti. CTO nurodo programuotojui pateikti aplinkos priklausomybių konfigūravimo instrukcijas ir sukurti tokį dokumentą kaip „priklausomybės reikalavimai.txt“. Tuo pačiu metu generalinis direktorius praneša apie reikalavimus ir sistemos dizainą CPO, kad būtų sukurtas gaminio vartotojo vadovas. 

rezultatai

Programinės įrangos statistika

Norėdami analizuoti „ChatDev“ sistemos našumą, kūrėjų komanda atliko sistemos sugeneruotų programinės įrangos taikomųjų programų statistinę analizę, remdamasi keliomis pagrindinėmis metrikomis, įskaitant sunaudotus žetonus, visus dialogo posūkius, vaizdo išteklius, programinės įrangos failus, versijų atnaujinimus ir dar keletą. parodyta toliau esančioje lentelėje. 

Trukmės analizė

Norėdami ištirti „ChatDev“ skirtingų užklausų programinės įrangos gamybos laiką, kūrėjai taip pat atliko trukmės analizę, o skirtingų raginimų kūrimo laiko skirtumas atspindi skirtingą priskirtų užduočių aiškumą ir sudėtingumą, o rezultatai parodyti toliau esančiame paveikslėlyje. . 

Atvejo analizė

Toliau pateiktame paveikslėlyje pavaizduota, kad „ChatDev“ kuria „Five in a Row“ arba „Gomoku“ žaidimą. 

Kairiausiame paveikslėlyje pavaizduota pagrindinė programinė įranga, sukurta sistemos nenaudojant jokios GUI. Kaip aiškiai matyti, programa be jokios GUI siūlo ribotą interaktyvumą, o vartotojai gali žaisti šį žaidimą tik naudodami komandų terminalą. Kitame paveikslėlyje pavaizduotas vizualiai patrauklesnis žaidimas, sukurtas naudojant GUI, suteikiama geresnė vartotojo patirtis ir patobulintas interaktyvumas įtraukioje žaidimo aplinkoje, kuria vartotojai gali mėgautis daug labiau. Tada dizainerio agentas sukuria papildomą grafiką, kad dar labiau pagerintų žaidimo patogumą ir estetiką, nepaveikdamas jokių funkcijų. Tačiau jei naudotojai nėra patenkinti dizainerio sukurtu vaizdu, jie gali pakeisti vaizdus po to, kai ChatDev sistema užbaigia programinę įrangą. „ChatDev“ sistemos siūlomas lankstumas rankiniam vaizdų pakeitimui leidžia vartotojams pritaikyti programas pagal savo pageidavimus, kad būtų pagerintas interaktyvumas ir vartotojo patirtis jokiu būdu nedarant įtakos programinės įrangos funkcionalumui. 

Baigiamosios mintys

Šiame straipsnyje mes kalbėjome apie ChatDev, an LLM arba didelės kalbos modelis pagrįsta novatoriška paradigma, kuria siekiama pakeisti programinės įrangos kūrimo sritį, panaikinant specializuotų modelių poreikį kiekviename kūrimo proceso etape. „ChatDev“ sistema siekia panaudoti LLM sistemų galimybes, naudojant natūralią kalbą, kad suvienodintų ir supaprastintų pagrindinius programinės įrangos kūrimo procesus. ChatDev sistema naudoja pokalbių grandinės mechanizmą, kad suskirstytų programinės įrangos kūrimo procesą į nuoseklias subatomines užduotis, taip įgalindamas detalų fokusavimą ir skatindamas norimus kiekvienos subatominės užduoties rezultatus. 

„Iš profesijos inžinierius, iš širdies – rašytojas“. Kunal yra techninis rašytojas, giliai mylintis ir suprantantis dirbtinį intelektą ir ML, siekiantis supaprastinti sudėtingas sąvokas šiose srityse, pasitelkdamas patrauklią ir informatyvią dokumentaciją.