tynkä ChatDev: Viestintäagentit ohjelmistokehitykseen - Unite.AI
Liity verkostomme!

Tekoäly

ChatDev: Viestintäagentit ohjelmistokehitykseen

mm
Päivitetty on
ChatDev: AI Assisted Software Development

Ohjelmistokehitysteollisuus on ala, joka usein luottaa sekä konsultointiin että intuitioon ja jolle on ominaista monimutkaiset päätöksentekostrategiat. Lisäksi ohjelmistojen kehittäminen, ylläpito ja käyttö edellyttävät kurinalaista ja menetelmällistä lähestymistapaa. On tavallista, että ohjelmistokehittäjät perustavat päätöksensä intuitioon kuulemisen sijaan, riippuen ongelman monimutkaisuudesta. Parantaakseen ohjelmistosuunnittelun tehokkuutta, mukaan lukien ohjelmistojen tehokkuutta ja alentavia kehityskustannuksia, tutkijat tutkivat syvään oppimiseen perustuvien kehysten käyttöä ohjelmistokehitysprosessin eri tehtävien ratkaisemiseksi. Syväoppimisen ja tekoälyn aloilla tapahtuneen viimeaikaisen kehityksen ja edistysaskeleiden myötä kehittäjät etsivät tapoja muuttaa ohjelmistokehitysprosesseja ja -käytäntöjä. He tekevät tämän käyttämällä kehittyneitä suunnitelmia, jotka on toteutettu ohjelmistokehitysprosessin eri vaiheissa.

Tänään keskustelemme ChatDevistä, Large Language Model (LLM) -pohjaisesta, innovatiivisesta lähestymistavasta, jonka tavoitteena on mullistaa ohjelmistokehityksen ala. Tämä paradigma pyrkii eliminoimaan erikoismallien tarpeen kehitysprosessin jokaisessa vaiheessa. ChatDev-kehys hyödyntää LLM-kehysten ominaisuuksia hyödyntäen luonnollisen kielen viestintää keskeisten ohjelmistokehitysprosessien yhtenäistämiseen ja virtaviivaistamiseen.

Tässä artikkelissa tutustumme ChatDeviin, virtuaaliseen ohjelmistokehitykseen erikoistuneeseen yritykseen. ChatDev ottaa käyttöön vesiputousmallin ja jakaa ohjelmistokehitysprosessin huolellisesti neljään päävaiheeseen.

  1. Suunnittelu. 
  2. Koodaus. 
  3. Testaus. 
  4. Dokumentointi. 

Jokainen näistä vaiheista ottaa käyttöön ryhmän virtuaalisia agentteja, kuten koodiohjelmoijia tai testaajia, jotka tekevät yhteistyötä keskenään dialogien avulla, jotka johtavat saumattomaan työnkulkuun. Chat-ketju toimii fasilitaattorina ja jakaa jokaisen kehitysprosessin vaiheen atomialatehtäviksi, mikä mahdollistaa kaksiroolit, mahdollistaen ehdotusten ja ratkaisujen validoinnin kontekstitietoisen viestinnän avulla, jonka avulla kehittäjät voivat ratkaista määritetyt osatehtävät tehokkaasti. 

ChatDev: AI Assisted Software Development

ChatDevin instrumentaalinen analyysi osoittaa, että ChatDev-kehys ei ainoastaan ​​ole erittäin tehokas ohjelmistokehitysprosessin loppuunsaattamisessa, vaan se on erittäin kustannustehokas ja se saa koko ohjelmistokehitysprosessin valmiiksi vajaalla dollarilla. Lisäksi kehys ei vain tunnista, vaan myös lievittää mahdollisia haavoittuvuuksia, korjaa mahdollisia hallusinaatioita, kaikki samalla säilyttäen korkean tehokkuuden ja kustannustehokkuuden. 

ChatDev: Johdatus LLM-pohjaiseen ohjelmistokehitykseen

Ohjelmistokehitysteollisuus on perinteisesti rakennettu kurinalaiselle ja suunnitelmalliselle lähestymistavalle paitsi sovellusten kehittämiseen myös niiden ylläpitoon ja käyttöön. Perinteisesti tyypillinen ohjelmistokehitysprosessi on erittäin monimutkainen, monimutkainen ja aikaa vievä huolellinen prosessi, jossa on pitkät kehityssyklit, koska kehitysprosessissa on useita rooleja, mukaan lukien organisaation sisäinen koordinointi, tehtävien jako, koodin kirjoittaminen, testaus ja lopuksi dokumentaatio. 

Viime vuosina, avulla LLM tai suuret kielimallit, tekoälyyhteisö on saavuttanut merkittäviä virstanpylväitä tietokonenäön ja luonnollisen kielen käsittelyn aloilla, ja "seuraavan sanan ennustamisen" paradigmoihin liittyvän koulutuksen jälkeen suuret kielimallit ovat osoittaneet hyvin kykynsä palauttaa tehokas suorituskyky monissa loppupään tehtävissä. kuten konekäännös, kysymyksiin vastaaminen ja koodin luominen. 

Vaikka suuret kielimallit voivat kirjoittaa koodia koko ohjelmistolle, niillä on suuri haittapuoli: koodi hallusinaatioita, joka on melko samanlainen kuin luonnollisen kielen käsittelykehyksen kohtaamat hallusinaatiot. Koodihalusinaatiot voivat sisältää ongelmia, kuten havaitsemattomia virheitä, puuttuvia riippuvuuksia ja epätäydellisiä toimintototeutuksia. Koodihallusinaatioille on kaksi pääasiallista syytä. 

  • Tehtävämäärittelyn puute: Kun ohjelmistokoodi luodaan yhdessä vaiheessa, tehtävän spesifisyyden määrittelemättä jättäminen hämmentää LLM:itä, sillä ohjelmistokehitysprosessin tehtävät, kuten käyttäjävaatimusten analysointi tai suositellun ohjelmointikielen valinta, tarjoavat usein ohjattua ajattelua, mikä puuttuu korkeasta. -tason tehtävät, joita nämä LLM:t hoitavat. 
  • Ristitutkinnan puute : Merkittäviä riskejä syntyy, kun ristiintutkimusta ei tehdä erityisesti päätöksentekoprosessien aikana. 

ChatDev pyrkii ratkaisemaan nämä ongelmat ja helpottamaan LLM-yrityksiä, joilla on valtuudet luoda uusinta tekniikkaa ja tehokkaita ohjelmistosovelluksia luomalla virtuaalisesti toimivan ohjelmistokehitysyrityksen, joka määrittää vesiputousmallin ja jakaa ohjelmistokehitysprosessin huolellisesti neljään ensisijaiseen osaan. Tasot,

  1. Suunnittelu. 
  2. Koodaus. 
  3. Testaus. 
  4. Dokumentointi. 

Jokainen näistä vaiheista ottaa käyttöön ryhmän virtuaalisia agentteja, kuten koodiohjelmoijia tai testaajia, jotka tekevät yhteistyötä keskenään dialogien avulla, jotka johtavat saumattomaan työnkulkuun. Lisäksi ChatDev hyödyntää chat-ketjua, joka toimii fasilitaattorina ja jakaa kehitysprosessin jokaisen vaiheen atomialatehtäviin, mikä mahdollistaa kaksinkertaisen roolin, mahdollistaen ehdotusten ja ratkaisujen validoinnin kontekstitietoisen viestinnän avulla, jonka avulla kehittäjät voivat tehokkaasti ratkaise määritetyt osatehtävät. Chat-ketju koostuu useista solmuista, joissa jokainen yksittäinen solmu edustaa tiettyä alitehtävää, ja nämä kaksi roolia osallistuvat usean kierroksen kontekstitietoisiin keskusteluihin, jotka eivät vain ehdota, vaan myös vahvistavat ratkaisuja. 

Tässä lähestymistavassa ChatDev-kehys analysoi ensin asiakkaan vaatimukset, luo luovia ideoita, suunnittelee ja toteuttaa prototyyppijärjestelmiä, tunnistaa ja ratkaisee mahdolliset ongelmat, luo houkuttelevaa grafiikkaa, selittää virheenkorjaustiedot ja luo käyttöoppaat. Lopuksi ChatDev-kehys toimittaa ohjelmiston käyttäjälle lähdekoodin, käyttöoppaiden ja riippuvuusympäristön määrittelyineen. 

ChatDev: Arkkitehtuuri ja työskentely

Nyt kun meillä on lyhyt esittely ChatDeviin, katsotaanpa ChatDev-kehyksen arkkitehtuuria ja toimintaa Chat Chainista alkaen. 

Chat-ketju

Kuten olemme maininneet edellisessä osiossa, ChatDev-kehys käyttää ohjelmistokehitykseen vesiputousmenetelmää, joka jakaa ohjelmistokehitysprosessin neljään vaiheeseen, mukaan lukien suunnittelu, koodaus, testaus ja dokumentointi. Jokaisella näistä vaiheista on ainutlaatuinen rooli kehitysprosessissa, ja niiden välillä tarvitaan tehokasta kommunikaatiota, ja mahdollisia haasteita voi kohdata yksilöiden tunnistamisessa ja vuorovaikutusjärjestyksen määrittämisessä. 

Tämän ongelman ratkaisemiseksi ChatDev-kehys käyttää Chat Chain -arkkitehtuuria, yleistettyä arkkitehtuuria, joka jakaa jokaisen vaiheen subatomiseksi keskusteluksi, ja jokainen näistä vaiheista keskittyy tehtäväkeskeiseen roolipeliin, jossa on kaksi roolia. Chatin haluttu tulos on kohdeohjelmistolle tärkeä osa, ja se saavutetaan kehitysprosessiin osallistuvien agenttien välisen yhteistyön ja ohjeiden vaihdon tuloksena. Chat-ketjun paradigma keskitason tehtävien ratkaisemiseen on havainnollistettu alla olevassa kuvassa. 

Jokaisessa yksittäisessä chatissa ohjaaja käynnistää ensin ohjeet ja sitten ohjaa dialogia tehtävän suorittamiseen, ja sillä välin avustajat noudattavat ohjaajan antamia ohjeita, tarjoavat ihanteellisia ratkaisuja ja käyvät keskusteluja toteutettavuudesta. ratkaisusta. Ohjaaja ja agentti käyvät sitten usean kierroksen dialogia, kunnes pääsevät yhteisymmärrykseen ja katsovat tehtävän suoritetuksi onnistuneesti. Ketjuketju tarjoaa käyttäjille läpinäkyvän näkemyksen kehitysprosessista, valaisee päätöksenteon polkua ja tarjoaa mahdollisuuksia virheiden korjaamiseen niiden ilmaantuessa, jolloin loppukäyttäjät voivat analysoida ja diagnosoida virheet, tarkastaa välitulot, ja puuttua prosessiin, jos se katsotaan tarpeelliseksi. Sisällyttämällä chat-ketjun ChatDev-kehys pystyy keskittymään kuhunkin tiettyyn osatehtävään rakeisessa mittakaavassa, mikä paitsi helpottaa tehokasta yhteistyötä agenttien välillä, myös johtaa vaadittujen tulosten nopeaan saavuttamiseen. 

Suunnittelu

Suunnitteluvaiheessa ChatDev-kehys vaatii alustavan idean ihmisasiakkaalta, ja tässä vaiheessa on kolme ennalta määriteltyä roolia. 

  1. Toimitusjohtaja tai toimitusjohtaja. 
  2. CPO tai Chief Product Officer. 
  3. CTO tai tekninen johtaja. 

Sitten tulee peliin chat-ketju, joka jakaa suunnitteluvaiheen peräkkäisiin subatomisiin chat-tehtäviin, jotka sisältävät ohjelmointikielen (CTO ja CEO) ja kohdeohjelmiston modaliteetin (CPO ja CEO). Suunnitteluvaiheessa on kolme keskeistä mekanismia: Role Assignment tai Role Specialization, Memory Stream ja Self-Reflection. 

Roolien antaminen

Jokaiselle Chat Dev -kehyksen agentille määrätään rooli erityisillä viesteillä tai erityisillä kehotteilla roolipeliprosessin aikana. Toisin kuin muut keskustelukielimallit, ChatDev-kehys rajoittuu vain agenttien välisten roolipeliskenaarioiden käynnistämiseen. Näitä kehotteita käytetään roolien osoittamiseen agenteille ennen dialogeja. 

Aluksi ohjaaja ottaa toimitusjohtajan vastuut ja osallistuu vuorovaikutteiseen suunnitteluun, kun taas CPO:n vastuut hoitaa tehtäviä suorittava ja tarvittavat vastaukset antava agentti. Kehys käyttää "aloituskehotus” roolien erikoistumiseen, jonka avulla agentit voivat täyttää roolinsa tehokkaasti. Assistentin ja ohjaajan kehotteet sisältävät tärkeitä yksityiskohtia, jotka koskevat määritettyjä rooleja ja tehtäviä, lopetusehtoja, viestintäprotokollia ja useita rajoituksia, joiden tarkoituksena on estää ei-toivottu käyttäytyminen, kuten äärettömät silmukat, epätietoiset vastaukset ja ohjeiden redundanssi. 

Muistivirta

Muistivirta on ChatDev-kehyksen käyttämä mekanismi, joka ylläpitää kattavaa keskustelutallentoa agentin edellisistä dialogeista ja avustaa sitä seuraavaa päätöksentekoprosessia lausuntatietoisella tavalla. ChatDev-kehys käyttää kehotteita tarvittavien viestintäprotokollien määrittämiseen. Esimerkiksi kun osapuolet pääsevät yksimielisyyteen, loppusanoma, joka täyttää tietyn muotoiluvaatimuksen, kuten ( : Työpöytäsovellus”). Jotta varmistetaan määrätyn muodon noudattaminen, kehys tarkkailee jatkuvasti ja mahdollistaa lopuksi nykyisen vuoropuhelun pääsemisen päätökseen. 

Itse heijastus

ChatDev-kehyksen kehittäjät ovat havainneet tilanteita, joissa molemmat osapuolet olivat päässeet yhteisymmärrykseen, mutta ennalta määritellyt viestintäprotokollat ​​eivät lauenneet. Näiden ongelmien ratkaisemiseksi ChatDev-kehys esittelee itseheijastusmekanismin joka auttaa muistojen hakemisessa ja poimimisessa. Itsereflektiomekanismin toteuttamiseksi ChatDev-kehys käynnistää uuden ja tuoreen chatin ottamalla "pseudoitsen" uudeksi kysyjäksi. "Pseudoitse" analysoi aiemmat dialogit ja historialliset tiedot ja ilmoittaa nykyiselle avustajalle, minkä jälkeen se pyytää yhteenvedon ratkaisevista ja toiminnan arvoisista tiedoista, kuten alla olevasta kuvasta ilmenee. 

Itseapumekanismin avulla ChatDev-avustajaa rohkaistaan ​​pohtimaan ja analysoimaan ehdottamiaan päätöksiä. 

Koodaus

Koodausvaiheessa on kolme ennalta määritettyä roolia, nimittäin CTO, ohjelmoija ja taiteen suunnittelija. Kuten tavallista, chat-ketjumekanismi jakaa koodausvaiheen yksittäisiin subatomisiin tehtäviin, kuten koodien luomiseen (ohjelmoija & CTO) tai graafisen käyttöliittymän suunnitteluun. tai graafinen käyttöliittymä (ohjelmoija ja suunnittelija). CTO neuvoo sitten ohjelmoijaa käyttämään markdown-muotoa ohjelmistojärjestelmän toteuttamiseen, minkä jälkeen suunnittelija ehdottaa käyttäjäystävällistä ja interaktiivista käyttöliittymää, joka käyttää graafisia kuvakkeita vuorovaikutuksessa käyttäjien kanssa sen sijaan, että luottaisi perinteisiin tekstipohjaisiin komentoihin. 

Koodin hallinta

ChatDev-kehys käyttää oliopohjaisia ​​ohjelmointikieliä, kuten Python, Java ja C++ monimutkaisten ohjelmistojärjestelmien käsittelemiseen, koska näiden ohjelmointikielten modulaarisuus mahdollistaa itsenäisten objektien käytön, jotka eivät ainoastaan ​​auta vianmäärityksessä, vaan myös yhteistyön kehittämisessä. , ja auttaa myös poistamaan redundanssit käyttämällä objekteja uudelleen perinnön käsitteen kautta. 

Ajatusohjeet

Perinteiset kysymyksiin vastaamisen menetelmät johtavat usein epäolennaiseen tietoon tai epätarkkuuksiin varsinkin koodia luotaessa, koska naiivien ohjeiden antaminen voi johtaa LLM-harhoihin, ja siitä voi tulla haastava ongelma. Tämän ongelman ratkaisemiseksi ChatDev-kehys esittelee "ajatusohjeet" -mekanismin, joka saa inspiraationsa ajatusketjun kehotuksista. "Ajatusohjeet" -mekanismi käsittelee nimenomaisesti ohjeisiin sisältyviä yksittäisiä ongelmanratkaisuajatuksia, samoin kuin tehtävien ratkaiseminen peräkkäisellä ja organisoidulla tavalla. 

Testaus

Virheettömän koodin kirjoittaminen ensimmäisellä kerralla ei ole haastavaa vain LLM:t, mutta myös ihmisohjelmoijia varten, ja sen sijaan, että hylkäsivät väärän koodin kokonaan, ohjelmoijat analysoivat koodinsa tunnistaakseen virheet ja korjatakseen ne. Testausvaihe ChatDev-kehyksessä on jaettu kolmeen rooliin: ohjelmoija, testaaja ja tarkistaja. Testausprosessi on edelleen jaettu kahteen peräkkäiseen subatomitehtävään: Vertaisarviointi tai staattinen virheenkorjaus (Arvostelija ja ohjelmoija) ja Järjestelmän testaus tai dynaaminen virheenkorjaus (Ohjelmoija ja testaaja). Staattinen virheenkorjaus tai vertaisarviointi analysoi lähdekoodia virheiden tunnistamiseksi, kun taas dynaaminen virheenkorjaus tai järjestelmätestaus varmistaa ohjelmiston suorituskyvyn useilla ohjelmoijan tulkin avulla suoritetuilla testeillä. Dynaaminen virheenkorjaus keskittyy ensisijaisesti black-box-testaukseen sovellusten arvioimiseksi. 

Dokumentaatio

Kun ChatDev-kehyksen suunnittelu-, koodaus- ja testausvaiheet on tehty, se työllistää neljä agenttia, nimittäin toimitusjohtajan, teknologiajohtajan, CPO:n ja ohjelmoijan, luomaan ohjelmistoprojektin dokumentaation. ChatDev-kehys käyttää LLM:itä hyödyntämään muutaman otoksen kehotteita kontekstiesimerkeillä asiakirjojen luomiseksi. CTO kehottaa ohjelmoijaa antamaan ohjeet ympäristöriippuvuuksien määrittämiseen ja luomaan asiakirjan, kuten "riippuvuusvaatimukset.txt". Samanaikaisesti toimitusjohtaja ilmoittaa vaatimukset ja järjestelmäsuunnittelun CPO:lle tuotteen käyttöoppaan luomiseksi. 

tulokset

Ohjelmistotilastot

Analysoidaksesi ChatDev-kehyksen suorituskykyä, Kehittäjätiimi suoritti tilastollisen analyysin kehyksen luomista ohjelmistosovelluksista muutamien keskeisten mittareiden perusteella, mukaan lukien kulutetut tunnukset, dialogien kokonaiskierrokset, kuvaresurssit, ohjelmistotiedostot, versiopäivitykset ja muutama muu, ja tulokset ovat näkyy alla olevassa taulukossa. 

Kestoanalyysi

Tutkiakseen ChatDevin ohjelmistojen tuotantoaikaa eri pyyntökehotteille kehittäjät suorittivat myös kestoanalyysin, ja eri kehotteiden kehitysajan ero heijastaa annettujen tehtävien vaihtelevaa selkeyttä ja monimutkaisuutta, ja tulokset on esitetty alla olevassa kuvassa. . 

Tapaustutkimus

Seuraavassa kuvassa ChatDev kehittää Five in a Row- tai Gomoku-peliä. 

Vasemmalla oleva kuva esittää kehyksen luomaa perusohjelmistoa ilman graafista käyttöliittymää. Kuten selvästi näkyy, sovellus ilman graafista käyttöliittymää tarjoaa rajoitetun interaktiivisuuden, ja käyttäjät voivat pelata tätä peliä vain komentopäätteen kautta. Seuraava kuva esittää visuaalisesti houkuttelevampaa peliä, joka on luotu GUI:lla, tarjoaa paremman käyttökokemuksen ja parannetun vuorovaikutteisuuden houkuttelevaan peliympäristöön, josta käyttäjät voivat nauttia paljon enemmän. Suunnittelijaagentti luo sitten lisägrafiikkaa parantaakseen entisestään pelin käytettävyyttä ja estetiikkaa vaikuttamatta mihinkään toimivuuteen. Jos käyttäjät eivät kuitenkaan ole tyytyväisiä suunnittelijan luomaan kuvaan, he voivat vaihtaa kuvat sen jälkeen, kun ChatDev-kehys on saanut ohjelmiston valmiiksi. ChatDev-kehyksen tarjoama joustavuus kuvien manuaalisessa korvaamisessa antaa käyttäjille mahdollisuuden mukauttaa sovelluksia mieltymystensä mukaan parantaakseen interaktiivisuutta ja käyttökokemusta vaikuttamatta ohjelmiston toimivuuteen millään tavalla. 

Loppuajatukset

Tässä artikkelissa olemme puhuneet ChatDevistä, an LLM tai Large Language Model perustuu innovatiiviseen paradigmaan, jonka tavoitteena on mullistaa ohjelmistokehitysala eliminoimalla vaatimus erikoismalleista jokaisessa kehitysprosessin vaiheessa. ChatDev-kehys pyrkii hyödyntämään LLM-kehysten kykyjä käyttämällä luonnollisen kielen viestintää keskeisten ohjelmistokehitysprosessien yhtenäistämiseen ja virtaviivaistamiseen. ChatDev-kehys käyttää chat-ketjumekanismia jakaakseen ohjelmistokehitysprosessin peräkkäisiksi subatomisiksi tehtäviksi, mikä mahdollistaa tarkemman tarkennuksen ja edistää haluttuja tuotoksia jokaiselle subatomiselle tehtävälle. 

"Ammatiltaan insinööri, sydämeltään kirjailija". Kunal on tekninen kirjoittaja, jolla on syvä rakkaus ja ymmärrys tekoälystä ja ML:stä. Hän on omistautunut yksinkertaistamaan monimutkaisia ​​käsitteitä näillä aloilla kiinnostavan ja informatiivisen dokumentaationsa avulla.