škrbina ChatDev : Komunikacijski agenti za razvoj softvera - Unite.AI
Povežite se s nama

Umjetna inteligencija

ChatDev : Komunikacijski agenti za razvoj softvera

mm
Ažurirano on
ChatDev : Razvoj softvera uz pomoć umjetne inteligencije

Industrija razvoja softvera je domena koja se često oslanja i na konzultacije i na intuiciju, a karakteriziraju je zamršene strategije donošenja odluka. Nadalje, razvoj, održavanje i rad softvera zahtijevaju discipliniran i metodičan pristup. Uobičajeno je da programeri softvera odluke temelje na intuiciji, a ne na savjetovanju, ovisno o složenosti problema. U nastojanju da poboljšaju učinkovitost softverskog inženjerstva, uključujući učinkovitost softvera i smanjene troškove razvoja, znanstvenici istražuju korištenje okvira temeljenih na dubokom učenju za rješavanje različitih zadataka unutar procesa razvoja softvera. S nedavnim razvojem i napretkom u sektorima dubokog učenja i umjetne inteligencije, programeri traže načine za transformaciju procesa i praksi razvoja softvera. To rade korištenjem sofisticiranih dizajna implementiranih u različitim fazama procesa razvoja softvera.

Danas ćemo razgovarati o ChatDev-u, inovativnom pristupu temeljenom na Large Language Modelu (LLM) koji ima za cilj napraviti revoluciju u području razvoja softvera. Ova paradigma nastoji eliminirati potrebu za specijaliziranim modelima tijekom svake faze razvojnog procesa. Okvir ChatDev iskorištava mogućnosti LLM okvira, koristeći komunikaciju prirodnog jezika za objedinjavanje i usmjeravanje ključnih procesa razvoja softvera.

U ovom ćemo članku istražiti ChatDev, virtualnu tvrtku specijaliziranu za razvoj softvera. ChatDev usvaja model vodopada i studiozno dijeli proces razvoja softvera u četiri osnovne faze.

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

Svaka od ovih faza postavlja tim virtualnih agenata poput programera koda ili testera koji međusobno surađuju koristeći dijaloge koji rezultiraju besprijekornim tijek rada. Chat lanac radi kao fasilitator i rastavlja svaku fazu razvojnog procesa u atomske podzadatke, omogućujući tako dvostruke uloge, dopuštajući prijedloge i provjeru valjanosti rješenja korištenjem komunikacije svjesne konteksta koja programerima omogućuje učinkovito rješavanje navedenih podzadataka. 

ChatDev : Razvoj softvera uz pomoć umjetne inteligencije

Instrumentalna analiza ChatDeva pokazuje da ChatDev okvir ne samo da je iznimno učinkovit u dovršavanju procesa razvoja softvera, već je i izuzetno isplativ, kao i da dovršava cijeli proces razvoja softvera za nešto manje od jednog dolara. Nadalje, okvir ne samo da identificira, već i ublažava potencijalne ranjivosti, ispravlja potencijalne halucinacije, a sve to uz održavanje visoke učinkovitosti i isplativosti. 

ChatDev : Uvod u razvoj softvera temeljen na LLM-u

Tradicionalno, industrija razvoja softvera je ona koja je izgrađena na temeljima discipliniranog i metodičnog pristupa ne samo za razvoj aplikacija, već i za njihovo održavanje i rad. Tradicionalno govoreći, tipičan proces razvoja softvera vrlo je zamršen, složen i dugotrajan, pedantan proces s dugim razvojnim ciklusima, budući da postoji više uloga uključenih u razvojni proces, uključujući koordinaciju unutar organizacije, raspodjelu zadataka, pisanje koda, testiranje i na kraju dokumentacija. 

U posljednjih nekoliko godina, uz pomoć LLM ili modeli velikih jezika, zajednica umjetne inteligencije postigla je značajne prekretnice u poljima računalne vizije i obrade prirodnog jezika, a nakon obuke o paradigmama "predviđanja sljedeće riječi", veliki jezični modeli dobro su pokazali svoju sposobnost povratka učinkovite izvedbe na širokom nizu nizvodnih zadataka poput strojnog prevođenja, odgovaranja na pitanja i generiranja koda. 

Iako veliki jezični modeli mogu napisati kod za cijeli softver, imaju veliki nedostatak: kod halucinacija, što je prilično slično halucinacijama s kojima se suočavaju okviri obrade prirodnog jezika. Halucinacije koda mogu uključivati ​​probleme poput neotkrivenih programskih pogrešaka, nedostajućih ovisnosti i nepotpunih implementacija funkcija. Dva su glavna uzroka halucinacija koda. 

  • Nedostatak specifikacije zadatka: Prilikom generiranja softverskog koda u jednom jedinom koraku, nedefiniranje specifičnosti zadatka zbunjuje LLM-ove kao zadatke u procesu razvoja softvera kao što je analiza korisničkih zahtjeva ili odabir željenog programskog jezika koji često pružaju vođeno razmišljanje, nešto što nedostaje visokom -zadaci kojima se bave ovi LLM-ovi. 
  • Nedostatak unakrsnog ispitivanja : Značajni rizici nastaju kada se unakrsno ispitivanje ne provodi, posebno tijekom procesa donošenja odluka. 

ChatDev ima za cilj riješiti ove probleme i olakšati LLM-ima moć stvaranja najsuvremenijih i učinkovitih softverskih aplikacija stvaranjem virtualno pokretane tvrtke za razvoj softvera koja uspostavlja vodopadni model i pedantno dijeli proces razvoja softvera na četiri primarne faze,

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

Svaka od ovih faza postavlja tim virtualnih agenata poput programera koda ili testera koji međusobno surađuju koristeći dijaloge koji rezultiraju besprijekornim tijek rada. Nadalje, ChatDev koristi lanac chata koji radi kao facilitator i rastavlja svaku fazu razvojnog procesa na atomske podzadatke, omogućujući tako dvostruke uloge, dopuštajući prijedloge i provjeru valjanosti rješenja korištenjem komunikacije svjesne konteksta koja programerima omogućuje učinkovito riješiti navedene podzadatke. Chat lanac sastoji se od nekoliko čvorova gdje svaki pojedinačni čvor predstavlja određeni podzadatak, a ove dvije uloge sudjeluju u višestrukim raspravama s obzirom na kontekst kako bi ne samo predložili, već i potvrdili rješenja. 

U ovom pristupu, okvir ChatDev prvo analizira zahtjeve klijenta, generira kreativne ideje, dizajnira i implementira prototipove sustava, identificira i rješava potencijalne probleme, stvara privlačnu grafiku, objašnjava informacije o otklanjanju pogrešaka i generira korisničke priručnike. Konačno, okvir ChatDev isporučuje softver korisniku zajedno s izvornim kodom, korisničkim priručnicima i specifikacijama okruženja ovisnosti. 

ChatDev : Arhitektura i rad

Sada kada imamo kratki uvod u ChatDev, pogledajmo arhitekturu i rad okvira ChatDev počevši od Chain Chaina. 

Chat Chain

Kao što smo spomenuli u prethodnom odjeljku, okvir ChatDev koristi metodu vodopada za razvoj softvera koja dijeli proces razvoja softvera u četiri faze uključujući projektiranje, kodiranje, testiranje i dokumentaciju. Svaka od ovih faza ima jedinstvenu ulogu u razvojnom procesu i postoji potreba za učinkovitom komunikacijom među njima, a postoje i potencijalni izazovi s kojima se suočavaju pri identificiranju pojedinaca s kojima se treba angažirati i određivanju slijeda interakcija. 

Kako bi riješio ovaj problem, okvir ChatDev koristi Chat Chain, generaliziranu arhitekturu koja rastavlja svaku fazu u subatomski chat, pri čemu je svaka od tih faza usredotočena na igranje uloga usmjereno na zadatke koje uključuje dvostruke uloge. Željeni izlaz za chat čini vitalnu komponentu za ciljani softver, a postiže se kao rezultat suradnje i razmjene uputa između agenata koji sudjeluju u procesu razvoja. Paradigma lanca chata za srednje rješavanje zadataka ilustrirana je na slici ispod. 

Za svaki pojedinačni chat, instruktor prvo inicira upute, a zatim vodi dijalog do završetka zadatka, au međuvremenu asistenti slijede upute koje postavlja instruktor, daju idealna rješenja i sudjeluju u raspravama o izvedivosti rješenja. Instruktor i agent zatim se upuštaju u višestruke dijaloge dok ne postignu konsenzus i smatraju da je zadatak uspješno obavljen. Lanac lanca pruža korisnicima transparentan pogled na razvojni proces, baca svjetlo na put za donošenje odluka i nudi mogućnosti za otklanjanje pogrešaka kada se pojave, što omogućuje krajnjim korisnicima da analiziraju i dijagnosticiraju pogreške, pregledaju srednje izlaze, i intervenirati u procesu ako se smatra potrebnim. Uključivanjem lanca chata, okvir ChatDev može se usredotočiti na svaki specifični podzadatak na granularnoj skali koja ne samo da olakšava učinkovitu suradnju između agenata, već također rezultira brzim postizanjem potrebnih rezultata. 

Projektiranje

U fazi dizajna, okvir ChatDev zahtijeva početnu ideju kao unos od ljudskog klijenta, a u ovoj fazi postoje tri unaprijed definirane uloge. 

  1. CEO ili glavni izvršni direktor. 
  2. CPO ili Chief Product Officer. 
  3. CTO ili glavni tehnički direktor. 

Lanac chata tada ulazi u igru ​​dijeleći fazu projektiranja na sekvencijalne subatomske zadatke chata koji uključuju programski jezik (CTO i CEO) i modalitet ciljnog softvera (CPO i CEO). Faza dizajniranja uključuje tri ključna mehanizma: dodjelu uloga ili specijalizaciju uloga, tok sjećanja i samorefleksiju. 

Dodjela uloga

Svakom agentu u okviru Chat Dev dodijeljena je uloga pomoću posebnih poruka ili posebnih upita tijekom procesa igranja uloga. Za razliku od drugih modela govornog jezika, okvir ChatDev ograničava se samo na pokretanje scenarija igranja uloga između agenata. Ovi se upiti koriste za dodjelu uloga agentima prije dijaloga. 

U početku, instruktor preuzima odgovornosti CEO-a i uključuje se u interaktivno planiranje, dok odgovornostima CPO-a upravlja agent koji izvršava zadatke i daje potrebne odgovore. Okvir koristi "inception prompting” za specijalizaciju uloga koja omogućuje agentima da učinkovito ispunjavaju svoje uloge. Upute pomoćnika i instruktora sastoje se od vitalnih detalja koji se tiču ​​određenih uloga i zadataka, kriterija prekida, komunikacijskih protokola i nekoliko ograničenja čiji je cilj spriječiti neželjena ponašanja poput beskonačnih petlji, neinformativnih odgovora i redundantnosti uputa. 

Tok memorije

Memorijski tok je mehanizam koji koristi okvir ChatDev koji održava sveobuhvatnu evidenciju razgovora o prethodnim dijalogima agenta i pomaže u procesu donošenja odluka koji slijedi na način svjestan izgovora. Okvir ChatDev koristi upute za uspostavljanje potrebnih komunikacijskih protokola. Na primjer, kada uključene strane postignu konsenzus, završna poruka koja zadovoljava posebne zahtjeve za oblikovanje kao što je ( : aplikacija za stolna računala”). Kako bi se osigurala usklađenost s naznačenim formatom, okvir kontinuirano nadzire i na kraju omogućuje trenutni dijalog da dođe do zaključka. 

Razmišljanje o sebi

Razvojni programeri okvira ChatDev uočili su situacije u kojima su obje uključene strane postigle zajednički konsenzus, ali unaprijed definirani komunikacijski protokoli nisu bili pokrenuti. Kako bi se pozabavili ovim problemima, Okvir ChatDev uvodi mehanizam samorefleksije koji pomaže u vraćanju i izvlačenju sjećanja. Za implementaciju mehanizma samorefleksije, okvir ChatDev pokreće novi i svježi chat uvrštavanjem "pseudo sebe" kao novog ispitivača. "Pseudo ja" analizira prethodne dijaloge i povijesne zapise i obavještava trenutnog pomoćnika nakon čega zahtijeva sažetak konačnih informacija vrijednih akcije kao što je prikazano na slici ispod. 

Uz pomoć mehanizma samopomoći, ChatDev asistent se potiče da razmisli i analizira odluke koje je predložio. 

Kodiranje

Postoje tri unaprijed definirane uloge u fazi kodiranja, naime CTO, programer i umjetnički dizajner. Kao i obično, mehanizam lanca chata dijeli fazu kodiranja na pojedinačne subatomske zadatke poput generiranja kodova (programer & CTO) ili osmišljavanje GUI-ja ili grafičko korisničko sučelje (programer & dizajner). Tehnički direktor zatim daje upute programeru da koristi format markdown za implementaciju softverskog sustava nakon čega umjetnički dizajner predlaže korisniku prijateljski i interaktivni GUI koji koristi grafičke ikone za interakciju s korisnicima umjesto oslanjanja na tradicionalne tekstualne naredbe. 

Upravljanje kodovima

Okvir ChatDev koristi objektno orijentirane programske jezike kao što su Python, Java i C++ za rukovanje složenim softverskim sustavima jer modularnost tih programskih jezika omogućuje upotrebu samostalnih objekata koji ne samo da pomažu u rješavanju problema, već i u kolaborativnom razvoju , a također pomaže u uklanjanju suvišnosti ponovnim korištenjem objekata kroz koncept nasljeđivanja. 

Misaone upute

Tradicionalne metode odgovaranja na pitanja često dovode do irelevantnih informacija ili netočnosti, osobito pri generiranju koda jer davanje naivnih uputa može dovesti do halucinacija LLM-a, a to može postati izazovno pitanje. Kako bi se uhvatio u koštac s ovim problemom, okvir ChatDev uvodi mehanizam "misaonih uputa" koji crpi inspiraciju iz niza misli. Mehanizam "misaonih uputa" eksplicitno se bavi individualnim razmišljanjima o rješavanju problema uključenim u upute, slično rješavanju zadataka na sekvencijalan i organiziran način. 

Ispitivanje

Pisanje koda bez grešaka u prvom pokušaju izazovno je ne samo za LLMs, ali i za ljudske programere, i umjesto potpunog odbacivanja netočnog koda, programeri analiziraju svoj kod kako bi identificirali pogreške i ispravili ih. Faza testiranja u okviru ChatDev podijeljena je na tri uloge: programer, tester i recenzent. Proces testiranja dalje je podijeljen u dva uzastopna subatomska zadatka: Peer Review ili Static Debugging (recenzent i programer), i Testiranje sustava ili dinamičko otklanjanje pogrešaka (programer i tester). Statički debugging ili Peer review analizira izvorni kod kako bi identificirao pogreške, dok dinamičko debugging ili testiranje sustava provjerava izvršenje softvera kroz različite testove koje programer provodi pomoću tumača. Dinamičko otklanjanje pogrešaka prvenstveno se fokusira na testiranje crne kutije za procjenu aplikacija. 

Dokumentacija

Nakon što okvir ChatDev završi s fazama projektiranja, kodiranja i testiranja, zapošljava četiri agenta, naime CEO-a, CTO-a, CPO-a i programera za generiranje dokumentacije za softverski projekt. Okvir ChatDev koristi LLM-ove za iskorištavanje kratkih upita s primjerima u kontekstu za generiranje dokumenata. CTO daje upute programeru da pruži upute za konfiguraciju ovisnosti okoline i stvori dokument poput "zahtjeva ovisnosti.txt". Istovremeno, CEO priopćava zahtjeve i dizajn sustava CPO-u, kako bi se izradio korisnički priručnik za proizvod. 

Rezultati

Softverska statistika

Za analizu performansi okvira ChatDev, tim razvojnih programera proveo je statističku analizu softverskih aplikacija koje je generirao okvir na temelju nekoliko ključnih metrika uključujući potrošene tokene, ukupne okrete dijaloga, slikovna sredstva, softverske datoteke, ažuriranja verzija i još nekoliko, a rezultati su prikazano u tablici u nastavku. 

Analiza trajanja

Kako bi ispitali vrijeme proizvodnje ChatDeva za softver za različite upite zahtjeva, programeri su također proveli analizu trajanja, a razlika u vremenu razvoja za različite upite odražava različitu jasnoću i složenost dodijeljenih zadataka, a rezultati su prikazani na slici ispod . 

Studija slučaja

Sljedeća slika prikazuje ChatDev koji razvija igru ​​Five in a Row ili Gomoku. 

Krajnja lijeva slika prikazuje osnovni softver koji je stvorio okvir bez korištenja GUI-ja. Kao što se jasno vidi, aplikacija bez ikakvog GUI nudi ograničenu interaktivnost, a korisnici ovu igricu mogu igrati samo preko naredbenog terminala. Sljedeća slika prikazuje vizualno privlačniju igru ​​stvorenu korištenjem GUI-ja, nudi bolje korisničko iskustvo i poboljšanu interaktivnost za zanimljivo okruženje igranja u kojem korisnici mogu mnogo više uživati. Dizajnerski agent zatim stvara dodatnu grafiku kako bi dodatno poboljšao upotrebljivost i estetiku igranja bez utjecaja na funkcionalnost. Međutim, ako ljudski korisnici nisu zadovoljni slikom koju je generirao dizajner, mogu zamijeniti slike nakon što okvir ChatDev dovrši softver. Fleksibilnost koju nudi okvir ChatDev za ručnu zamjenu slika omogućuje korisnicima da prilagode aplikacije prema svojim željama za poboljšanu interaktivnost i korisničko iskustvo bez utjecaja na funkcionalnost softvera na bilo koji način. 

Final Misli

U ovom smo članku govorili o ChatDevu, an LLM ili Large Language Model temelji se na inovativnoj paradigmi koja ima za cilj napraviti revoluciju u području razvoja softvera eliminirajući zahtjeve za specijaliziranim modelima tijekom svake faze razvojnog procesa. Okvir ChatDev ima za cilj iskoristiti sposobnosti LLM okvira korištenjem komunikacije prirodnim jezikom za objedinjavanje i pojednostavljenje ključnih procesa razvoja softvera. Okvir ChatDev koristi mehanizam lanca chata za razbijanje procesa razvoja softvera na sekvencijalne subatomske zadatke, čime se omogućuje granularni fokus i promiču željeni rezultati za svaki subatomski zadatak. 

"Inženjer po struci, književnik po duši". Kunal je tehnički pisac s dubokom ljubavlju i razumijevanjem AI i ML, posvećen pojednostavljenju složenih koncepata u tim poljima kroz svoju zanimljivu i informativnu dokumentaciju.