škrbina ChatDev : Komunikacijski agenti za razvoj programske opreme - Unite.AI
Povežite se z nami

Umetna inteligenca

ChatDev : Komunikacijski agenti za razvoj programske opreme

mm
Posodobljeno on
ChatDev : Razvoj programske opreme s pomočjo umetne inteligence

Industrija razvoja programske opreme je področje, ki se pogosto zanaša na posvetovanje in intuicijo, za katero so značilne zapletene strategije odločanja. Poleg tega razvoj, vzdrževanje in delovanje programske opreme zahtevajo discipliniran in metodičen pristop. Za razvijalce programske opreme je običajno, da odločitve temeljijo na intuiciji in ne na posvetovanju, odvisno od kompleksnosti problema. V prizadevanju za izboljšanje učinkovitosti programskega inženiringa, vključno z učinkovitostjo programske opreme in zmanjšanimi stroški razvoja, znanstveniki raziskujejo uporabo okvirov, ki temeljijo na globokem učenju, za reševanje različnih nalog v procesu razvoja programske opreme. Z nedavnim razvojem in napredkom v sektorjih globokega učenja in umetne inteligence razvijalci iščejo načine za preoblikovanje procesov in praks razvoja programske opreme. To počnejo z uporabo sofisticiranih zasnov, implementiranih na različnih stopnjah procesa razvoja programske opreme.

Danes bomo razpravljali o ChatDev, inovativnem pristopu, ki temelji na velikem jezikovnem modelu (LLM), katerega namen je narediti revolucijo na področju razvoja programske opreme. Ta paradigma poskuša odpraviti potrebo po specializiranih modelih v vsaki fazi razvojnega procesa. Ogrodje ChatDev izkorišča zmožnosti ogrodij LLM in uporablja komunikacijo v naravnem jeziku za poenotenje in racionalizacijo ključnih procesov razvoja programske opreme.

V tem članku bomo raziskali ChatDev, virtualno podjetje, specializirano za razvoj programske opreme. ChatDev sprejme model slapa in natančno razdeli proces razvoja programske opreme na štiri osnovne stopnje.

  1. Oblikovanje. 
  2. Kodiranje. 
  3. Testiranje. 
  4. Dokumentacija. 

Vsaka od teh stopenj uvede ekipo virtualnih agentov, kot so programerji kode ali preizkuševalci, ki sodelujejo med seboj z uporabo dialogov, kar povzroči brezhiben potek dela. Klepetalna veriga deluje kot spodbujevalec in vsako stopnjo razvojnega procesa razčleni na atomske podnaloge, s čimer omogoči dvojne vloge, omogoča predloge in validacijo rešitev z uporabo komunikacij, ki se zavedajo konteksta, kar razvijalcem omogoča učinkovito reševanje določenih podnalog. 

ChatDev : Razvoj programske opreme s pomočjo umetne inteligence

Instrumentalna analiza podjetja ChatDev dokazuje, da ogrodje ChatDev ni le izjemno učinkovito pri dokončanju procesa razvoja programske opreme, ampak je tudi izjemno stroškovno učinkovito, saj dokonča celoten proces razvoja programske opreme v manj kot enem dolarju. Poleg tega ogrodje ne samo identificira, ampak tudi ublaži morebitne ranljivosti, odpravi morebitne halucinacije, pri čemer ohranja visoko učinkovitost in stroškovno učinkovitost. 

ChatDev : Uvod v razvoj programske opreme, ki ga poganja LLM

Tradicionalno je industrija razvoja programske opreme zgrajena na temeljih discipliniranega in metodičnega pristopa ne samo za razvoj aplikacij, temveč tudi za njihovo vzdrževanje in delovanje. Tradicionalno gledano je tipičen proces razvoja programske opreme zelo zapleten, kompleksen in dolgotrajen natančen proces z dolgimi razvojnimi cikli, saj je v procesu razvoja vključenih več vlog, vključno z usklajevanjem znotraj organizacije, dodeljevanjem nalog, pisanjem kode, testiranje in končno dokumentacija. 

V zadnjih nekaj letih s pomočjo LLM ali veliki jezikovni modelije skupnost umetne inteligence dosegla pomembne mejnike na področju računalniškega vida in obdelave naravnega jezika, po usposabljanju o paradigmah »predvidevanja naslednje besede« pa so veliki jezikovni modeli dobro pokazali svojo sposobnost vračanja učinkovite zmogljivosti pri širokem naboru nadaljnjih nalog kot so strojno prevajanje, odgovarjanje na vprašanja in ustvarjanje kode. 

Čeprav lahko veliki jezikovni modeli napišejo kodo za celotno programsko opremo, imajo veliko pomanjkljivost: kodne halucinacije, kar je precej podobno halucinacijam, s katerimi se soočajo okviri za obdelavo naravnega jezika. Halucinacije kode lahko vključujejo težave, kot so neodkrite napake, manjkajoče odvisnosti in nepopolne implementacije funkcij. Obstajata dva glavna vzroka za kodne halucinacije. 

  • Pomanjkanje specifikacije naloge: Pri ustvarjanju programske kode v enem samem koraku nedefiniranje posebnosti naloge zmede LLM-je kot naloge v procesu razvoja programske opreme, kot je analiza zahtev uporabnikov ali izbira želenega programskega jezika, ki pogosto zagotavljata vodeno razmišljanje, nekaj, kar manjka pri visoki -naloge, ki jih obravnavajo ti LLM. 
  • Pomanjkanje navzkrižnega zasliševanja : Znatna tveganja nastanejo, če se navzkrižno zaslišanje ne izvede, zlasti med procesi odločanja. 

ChatDev želi rešiti ta vprašanja in omogočiti LLM z močjo za ustvarjanje najsodobnejših in učinkovitih programskih aplikacij z ustvarjanjem virtualnega podjetja za razvoj programske opreme, ki vzpostavi model slapa in natančno razdeli proces razvoja programske opreme na štiri glavne obdobja,

  1. Oblikovanje. 
  2. Kodiranje. 
  3. Testiranje. 
  4. Dokumentacija. 

Vsaka od teh stopenj uvede ekipo virtualnih agentov, kot so programerji kode ali preizkuševalci, ki sodelujejo med seboj z uporabo dialogov, kar povzroči brezhiben potek dela. Poleg tega ChatDev uporablja verigo klepetov, ki deluje kot spodbujevalec, in vsako stopnjo razvojnega procesa razdeli na atomske podopravila, s čimer omogoči dvojne vloge, omogoča predloge in potrjevanje rešitev z uporabo komunikacije, ki se zaveda konteksta, kar razvijalcem omogoča učinkovito razreši navedene podnaloge. Veriga klepeta je sestavljena iz več vozlišč, kjer vsako posamezno vozlišče predstavlja določeno podnalogo, in ti dve vlogi sodelujeta v razpravah, ki se zavedajo konteksta in ne le predlagajo, ampak tudi potrdijo rešitve. 

Pri tem pristopu ogrodje ChatDev najprej analizira naročnikove zahteve, generira kreativne ideje, oblikuje in izvaja prototipne sisteme, identificira in obravnava potencialne težave, ustvarja privlačno grafiko, razlaga informacije o odpravljanju napak in generira uporabniške priročnike. Končno ogrodje ChatDev uporabniku dostavi programsko opremo skupaj z izvorno kodo, uporabniškimi priročniki in specifikacijami okolja odvisnosti. 

ChatDev : Arhitektura in delo

Zdaj, ko imamo kratek uvod v ChatDev, si oglejmo arhitekturo in delovanje ogrodja ChatDev, začenši z Chain Chain. 

Klepetalna veriga

Kot smo omenili v prejšnjem razdelku, ogrodje ChatDev uporablja metodo slapa za razvoj programske opreme, ki proces razvoja programske opreme razdeli na štiri faze, vključno z načrtovanjem, kodiranjem, testiranjem in dokumentacijo. Vsaka od teh faz ima edinstveno vlogo v razvojnem procesu in obstaja potreba po učinkoviti komunikaciji med njimi, obstajajo pa tudi potencialni izzivi, s katerimi se soočamo pri prepoznavanju posameznikov, s katerimi bi sodelovali, in določanju zaporedja interakcij. 

Za reševanje te težave ogrodje ChatDev uporablja Chat Chain, posplošeno arhitekturo, ki vsako fazo razdeli na subatomski klepet, pri čemer se vsaka od teh faz osredotoča na k nalogam usmerjeno igranje vlog, ki vključuje dvojne vloge. Želeni rezultat za klepet je bistvena komponenta za ciljno programsko opremo in je dosežen kot rezultat sodelovanja in izmenjave navodil med agenti, ki sodelujejo v procesu razvoja. Paradigma verige klepeta za vmesno reševanje nalog je prikazana na spodnji sliki. 

Za vsak posamezen klepet inštruktor najprej sproži navodila, nato pa vodi dialog do zaključka naloge, vmes pa asistenti sledijo navodilom inštruktorja, podajajo idealne rešitve in se pogovarjajo o izvedljivosti. rešitve. Inštruktor in agent se nato vključita v večobratni dialog, dokler ne dosežeta soglasja in ocenita, da je naloga uspešno opravljena. Verižna veriga zagotavlja uporabnikom pregleden pogled na razvojni proces, osvetljuje pot sprejemanja odločitev in ponuja priložnosti za odpravljanje napak, ko se pojavijo, kar končnim uporabnikom omogoča analizo in diagnosticiranje napak, pregledovanje vmesnih rezultatov, in posredovati v postopku, če se zdi potrebno. Z vključitvijo verige klepetov se ogrodje ChatDev lahko osredotoči na vsako specifično podnalogo v granularnem obsegu, kar ne le olajša učinkovito sodelovanje med agenti, ampak tudi hitro doseganje zahtevanih rezultatov. 

Oblikovanje

V fazi oblikovanja okvir ChatDev zahteva začetno idejo kot vnos človeškega odjemalca, v tej fazi pa so tri vnaprej določene vloge. 

  1. Generalni direktor ali glavni izvršni direktor. 
  2. CPO ali glavni produktni direktor. 
  3. CTO ali glavni tehnični direktor. 

Nato pride v poštev veriga klepeta, ki razdeli fazo načrtovanja na zaporedne subatomske naloge klepeta, ki vključujejo programski jezik (CTO in CEO) in način ciljne programske opreme (CPO in CEO). Faza načrtovanja vključuje tri ključne mehanizme: dodelitev vlog ali specializacijo vlog, spominski tok in samorefleksijo. 

Dodelitev vlog

Vsakemu agentu v ogrodju Chat Dev je dodeljena vloga s posebnimi sporočili ali posebnimi pozivi med postopkom igranja vlog. Za razliko od drugih pogovornih jezikovnih modelov se ogrodje ChatDev omejuje samo na sprožanje scenarijev igranja vlog med agenti. Ti pozivi se uporabljajo za dodeljevanje vlog agentom pred dialogi. 

Na začetku inštruktor prevzame odgovornosti CEO in se vključi v interaktivno načrtovanje, medtem ko odgovornosti CPO prevzame agent, ki izvaja naloge in zagotavlja zahtevane odgovore. Okvir uporablja "uvodni poziv” za specializacijo vlog, ki omogoča agentom, da učinkovito izpolnjujejo svoje vloge. Pozivi pomočnika in inštruktorja so sestavljeni iz bistvenih podrobnosti v zvezi z določenimi vlogami in nalogami, merili za prekinitev, komunikacijskimi protokoli in številnimi omejitvami, katerih namen je preprečiti neželeno vedenje, kot so neskončne zanke, neinformativni odgovori in odvečnost navodil. 

Memory Stream

Pomnilniški tok je mehanizem, ki ga uporablja ogrodje ChatDev, ki vzdržuje izčrpen pogovorni zapis prejšnjih dialogov agenta in pomaga pri postopku odločanja, ki sledi na način, ki se zaveda izreke. Ogrodje ChatDev uporablja pozive za vzpostavitev zahtevanih komunikacijskih protokolov. Na primer, ko vpletene strani dosežejo soglasje, končno sporočilo, ki izpolnjuje posebno zahtevo glede oblikovanja, kot je ( : namizna aplikacija”). Da bi zagotovili skladnost z določeno obliko, ogrodje nenehno spremlja in na koncu omogoči, da trenutni dialog doseže zaključek. 

Samoodsev

Razvijalci ogrodja ChatDev so opazili situacije, v katerih sta obe vpleteni strani dosegli medsebojno soglasje, vendar se vnaprej določeni komunikacijski protokoli niso sprožili. Za reševanje teh težav je Okvir ChatDev uvaja mehanizem samorefleksije ki pomaga pri pridobivanju in ekstrahiranju spominov. Za izvedbo mehanizma samorefleksije okvir ChatDev sproži nov in svež klepet tako, da kot novega spraševalca vključi »psevdo jaz«. »Psevdo jaz« analizira prejšnje dialoge in zgodovinske zapise ter obvesti trenutnega pomočnika, nato pa zahteva povzetek dokončnih in dejanj vrednih informacij, kot je prikazano na spodnji sliki. 

S pomočjo mehanizma za samopomoč je pomočnik ChatDev spodbujen, da razmisli in analizira odločitve, ki jih je predlagal. 

Kodiranje

Obstajajo tri vnaprej določene vloge v fazi kodiranja, in sicer tehnični direktor, programer in umetniški oblikovalec. Kot običajno mehanizem verige klepeta razdeli fazo kodiranja na posamezne subatomske naloge, kot je ustvarjanje kod (programer in tehnični direktor) ali oblikovanje GUI. ali grafični uporabniški vmesnik (programer & oblikovalec). Tehnični direktor nato naroči programerju, naj uporabi format markdown za implementacijo programskega sistema, po katerem umetniški oblikovalec predlaga uporabniku prijazen in interaktiven GUI, ki uporablja grafične ikone za interakcijo z uporabniki, namesto da bi se zanašal na tradicionalne ukaze, ki temeljijo na besedilu. 

Upravljanje kode

Ogrodje ChatDev uporablja objektno usmerjene programske jezike, kot so Python, Java in C++, za upravljanje s kompleksnimi programskimi sistemi, ker modularnost teh programskih jezikov omogoča uporabo samostojnih objektov, ki ne le pomagajo pri odpravljanju težav, ampak tudi pri skupnem razvoju , prav tako pa pomaga pri odstranjevanju presežkov s ponovno uporabo predmetov prek koncepta dedovanja. 

Miselna navodila

Tradicionalne metode odgovarjanja na vprašanja pogosto vodijo do nepomembnih informacij ali netočnosti, zlasti pri generiranju kode, saj lahko zagotavljanje naivnih navodil povzroči halucinacije LLM in lahko postane težavno vprašanje. Za reševanje te težave okvir ChatDev uvaja mehanizem »miselnih navodil«, ki črpa navdih iz namigov v verigi misli. Mehanizem »miselnih navodil« izrecno obravnava posamezne misli za reševanje problemov, vključene v navodila, podobno kot reševanje nalog na zaporedni in organiziran način. 

Testiranje

Pisanje kode brez napak v prvem poskusu ni zahtevno le za LLM, temveč tudi za človeške programerje, in namesto da popolnoma zavržejo nepravilno kodo, programerji analizirajo svojo kodo, da prepoznajo napake in jih popravijo. Faza testiranja v ogrodju ChatDev je razdeljena na tri vloge: programer, tester in pregledovalec. Postopek testiranja je nadalje razdeljen na dve zaporedni subatomski nalogi: Strokovni pregled ali statično odpravljanje napak (recenzent in programer) in Sistemsko testiranje ali dinamično odpravljanje napak (programer in tester). Statično odpravljanje napak ali medsebojni pregled analizira izvorno kodo za odkrivanje napak, medtem ko dinamično odpravljanje napak ali sistemsko testiranje preverja izvajanje programske opreme z različnimi testi, ki jih izvaja programer z uporabo tolmača. Dinamično odpravljanje napak se osredotoča predvsem na testiranje črne skrinjice za ocenjevanje aplikacij. 

dokumentacija

Ko je ogrodje ChatDev končano s fazami načrtovanja, kodiranja in testiranja, zaposluje štiri agente, in sicer izvršnega direktorja, tehničnega direktorja, glavnega direktorja in programerja za ustvarjanje dokumentacije za projekt programske opreme. Ogrodje ChatDev uporablja LLM-je za izkoriščanje kratkih pozivov s primeri v kontekstu za ustvarjanje dokumentov. Tehnični direktor naroči programerju, naj zagotovi navodila za konfiguracijo okoljskih odvisnosti in ustvari dokument, kot je »zahteve odvisnosti.txt«. Hkrati generalni direktor sporoči CPO zahteve in zasnovo sistema, da se ustvari uporabniški priročnik za izdelek. 

Rezultati

Statistika programske opreme

Če želite analizirati delovanje ogrodja ChatDev, skupina razvijalcev je izvedla statistično analizo programskih aplikacij, ki jih je ustvarilo ogrodje, na podlagi nekaj ključnih meritev, vključno s porabljenimi žetoni, skupnimi obrati dialoga, slikovnimi sredstvi, programskimi datotekami, posodobitvami različic in še nekaterimi drugimi, rezultati pa so prikazano v spodnji tabeli. 

Analiza trajanja

Da bi preučili proizvodni čas ChatDev za programsko opremo za različne pozive za zahteve, so razvijalci izvedli tudi analizo trajanja in razlika v času razvoja za različne pozive odraža različno jasnost in kompleksnost dodeljenih nalog, rezultati pa so prikazani na spodnji sliki. . 

Študija primera

Naslednja slika prikazuje ChatDev, ki razvija igro Five in a Row ali igro Gomoku. 

Skrajno leva slika prikazuje osnovno programsko opremo, ki jo ustvari ogrodje brez uporabe GUI. Kot je jasno razvidno, aplikacija brez grafičnega uporabniškega vmesnika ponuja omejeno interaktivnost, uporabniki pa lahko to igro igrajo samo prek ukaznega terminala. Naslednja slika prikazuje vizualno privlačnejšo igro, ustvarjeno z uporabo GUI, ki ponuja boljšo uporabniško izkušnjo in izboljšano interaktivnost za zanimivo igralno okolje, v katerem lahko uporabniki veliko bolj uživajo. Agent oblikovalca nato ustvari dodatno grafiko za nadaljnje izboljšanje uporabnosti in estetike igranja brez vpliva na katero koli funkcionalnost. Če pa človeški uporabniki niso zadovoljni s sliko, ki jo ustvari oblikovalec, lahko zamenjajo slike, potem ko ogrodje ChatDev dokonča programsko opremo. Prilagodljivost, ki jo ponuja okvir ChatDev za ročno zamenjavo slik, omogoča uporabnikom, da prilagodijo aplikacije glede na svoje želje za izboljšano interaktivnost in uporabniško izkušnjo, ne da bi kakor koli vplivali na funkcionalnost programske opreme. 

Končna thoughts

V tem članku smo govorili o ChatDev, an LLM ali Large Language Model temelji na inovativni paradigmi, katere cilj je revolucionirati področje razvoja programske opreme z odpravo zahteve po specializiranih modelih v vsaki fazi razvojnega procesa. Ogrodje ChatDev želi izkoristiti zmožnosti ogrodij LLM z uporabo komunikacije v naravnem jeziku za poenotenje in racionalizacijo ključnih procesov razvoja programske opreme. Ogrodje ChatDev uporablja mehanizem verige klepetov, da razdeli proces razvoja programske opreme na zaporedne subatomske naloge, s čimer omogoči natančno osredotočenost in spodbuja želene rezultate za vsako subatomsko nalogo. 

"Po poklicu inženir, po srcu pisatelj". Kunal je tehnični pisec z globoko ljubeznijo in razumevanjem umetne inteligence in strojnega upravljanja, ki je predan poenostavljanju zapletenih konceptov na teh področjih s svojo privlačno in informativno dokumentacijo.