AI-mallit ja alustat

ChatDev : Viestintäagentit ohjelmistokehityksessä

mm
Lisää Unite.AI suosikkilähteisiisi Google-palvelussa
ChatDev : AI Assisted Software Development

Ohjelmistokehitysteollisuus on ala, joka usein perustuu sekä konsultointiin että intuitioon, ja se on tunnettu monimutkaisista päätöksenteosta strategioista. Lisäksi ohjelmistojen kehittäminen, ylläpitäminen ja toiminta vaativat kurinalaista ja järjestelmällistä lähestymistapaa. On yleistä, että ohjelmistokehittäjät perustavat päätöksiään enemmän intuitioon kuin konsultointiin, riippuen ongelman monimutkaisuudesta. Pyrkimyksenä parantaa ohjelmistosuunnittelun tehokkuutta, mukaan lukien ohjelmistojen tehokkuutta ja kehityskustannusten vähentämistä, tutkijat ovat tutkineet syvän oppimisen perusteisia kehyksiä eri tehtävien ratkaisemiseksi ohjelmistokehitysprosessissa. Viimeaikaisen kehityksen ja edistymisen myötä syvän oppimisen ja tekoälysektorilla kehittäjät etsivät keinoja muuttaa ohjelmistokehitysprosesseja ja -käytäntöjä. He tekevät tämän käyttämällä monimutkaisia suunnittelua eri vaiheissa ohjelmistokehitysprosessissa.

Tänään keskustelemme ChatDevistä, joka on suurten kielen mallien (LLM) perustuva, innovatiivinen lähestymistapa, joka pyrkii vallankumoukseen ohjelmistokehityksen alalla. Tämä paradigma pyrkii poistamaan erikoistuneiden mallien tarpeen jokaisessa kehitysprosessin vaiheessa. ChatDev-kehys hyödyntää LLM-kehysten ominaisuuksia, käyttäen luonnollisen kielen viestintää yhdistääkseen ja suoristamaan avainohjelmistokehitysprosesseja.

Tässä artikkelissa tutustumme ChatDeviin, virtuaalivoittoiseen yhtiöön, joka on erikoistunut ohjelmistokehitykseen. ChatDev ottaa käyttöön vesiputousmallin ja jakaa ohjelmistokehitysprosessin neljään päävaiheeseen.

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

Kukin näistä vaiheista käyttää joukkoa virtuaaliagenteja, kuten koodaajia tai testaajia, jotka tekevät yhteistyötä keskenään vuoropuhelun kautta, mikä johtaa virheettömään työnkulkuun. Chat-ketju toimii välittäjänä ja jakaa kunkin kehitysprosessin vaiheen atomisiin alitehtäviin, mikä mahdollistaa kaksinkertaiset roolit ja sallii ehdotusten ja ratkaisujen validoinnin kontekstiaavusteisen viestinnän kautta, mikä mahdollistaa kehittäjille tehokkaasti määritettyjen alitehtävien ratkaisemisen.

ChatDev : AI-väitetty ohjelmistokehitys

ChatDev:n instrumentalinen analyysi osoittaa, että ChatDev-kehys on erittäin tehokas ohjelmistokehitysprosessin suorittamisessa, ja se on myös erittäin kustannusvaikuttava, koska se suorittaa koko ohjelmistokehitysprosessin alle yhden dollarin. Lisäksi kehys ei ainoastaan tunnista vaan myös lievittää potentiaalisia haavoittuvuuksia, korjaa potentiaalisia hallusinaatioita ja ylläpitää korkeaa tehokkuutta ja kustannusvaikuttavuutta.

ChatDev : Johdanto LLM-pohjaiseen ohjelmistokehitykseen

Perinteisesti ohjelmistokehitysteollisuus on ala, joka on rakennettu kurinalaisen ja järjestelmällisen lähestymistavan varaan, sekä ohjelmistojen kehittämisessä, ylläpitämisessä ja toiminnassa. Perinteisesti ottaen tyypillinen ohjelmistokehitysprosessi on hyvin monimutkainen, aikaa vievä ja tarkka prosessi, jossa on useita rooleja mukana, mukaan lukien koordinointi organisaatiossa, tehtävien jakaminen, koodin kirjoittaminen, testaus ja lopulta dokumentaatio.

Viime vuosina suurten kielen mallien (LLM) avulla tekoäly-yhteisö on saavuttanut merkittäviä saavutuksia tietokoneen näön ja luonnollisen kielen prosessoinnin alalla, ja LLM:t ovat osoittaneet kykynsä palauttaa tehokasta suorituskykyä laajalla valikoimalla alihankkeita, kuten konekäännöksessä, kysymyksiin vastaamisessa ja koodin generoimisessa.

Vaikka LLM:t voivat kirjoittaa koodin koko ohjelmistolle, niillä on suuri heikkous : koodin hallusinaatiot, jotka ovat hyvin samanlaisia kuin luonnollisen kielen prosessoinnin kehyksissä tapahtuvat hallusinaatiot. Koodin hallusinaatiot voivat sisältää ongelmia, kuten havaitsemattomia virheitä, puuttuvia riippuvuuksia ja epätäydellisiä funktioiden toteutuksia. Koodin hallusinaatioiden syynä on kaksi pääasiallista syytä.

  • Tehtävän määrittely puuttuu: Kun generoidaan ohjelmistokoodia yhdessä vaiheessa, tehtävän määrittelyä ei määritellä, mikä sekoittaa LLM:t, koska tehtävät ohjelmistokehitysprosessissa, kuten käyttäjän vaatimusten analyysi tai ohjelmointikielen valinta, usein tarjoavat ohjaavaa ajattelua, mikä puuttuu näistä korkean tason tehtävistä.
  • Ristiriitaisen tarkastelun puute : Merkitsevät riskit ilmenevät, kun ristiriitaisen tarkastelun ei suoriteta, erityisesti päätöksentekoprosesseissa.

ChatDev pyrkii ratkaisemaan nämä ongelmat ja antamaan LLM:lle valmiudet luoda korkealaatuisia ja tehokkaita ohjelmistoja luomalla virtuaalisen voittoisen yhtiön ohjelmistokehitykseen, joka ottaa käyttöön vesiputousmallin ja jakaa ohjelmistokehitysprosessin neljään päävaiheeseen,

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

Kukin näistä vaiheista käyttää joukkoa virtuaaliagenteja, kuten koodaajia tai testaajia, jotka tekevät yhteistyötä keskenään vuoropuhelun kautta, mikä johtaa virheettömään työnkulkuun. ChatDev käyttää myös chat-ketjua, joka toimii välittäjänä ja jakaa kunkin kehitysprosessin vaiheen atomisiin alitehtäviin, mikä mahdollistaa kaksinkertaiset roolit ja sallii ehdotusten ja ratkaisujen validoinnin kontekstiaavusteisen viestinnän kautta, mikä mahdollistaa kehittäjille tehokkaasti määritettyjen alitehtävien ratkaisemisen.

Tässä lähestymistavassa ChatDev-kehys analysoi ensin asiakkaan vaatimukset, generoi luovia ideoita, suunnittelee ja toteuttaa prototyyppijärjestelmiä, tunnistaa ja korjaa potentiaalisia ongelmia, luo miellyttäviä grafiikkoja, selittää virheenkorjaustiedot ja generoi käyttöohjeet. Lopulta ChatDev-kehys toimittaa ohjelmiston käyttäjälle yhdessä lähdekoodin, käyttöohjeiden ja riippuvuuden määritysten kanssa.

ChatDev : Arkkitehtuuri ja toiminta

Nyt kun olemme saaneet lyhyen johdannon ChatDeviin, tarkastelemme ChatDev-kehys:n arkkitehtuuria ja toimintaa, aloittaen chat-ketjusta.

Chat-ketju

Kuten mainittiin edellisessä osiossa, ChatDev-kehys käyttää vesiputousmallia ohjelmistokehitykseen, joka jakaa ohjelmistokehitysprosessin neljään vaiheeseen,

Jokainen näistä vaiheista on tärkeä osa kehitysprosessia, ja niiden välillä on tarve tehokkaasta viestinnästä. Chat-kehys ratkaisee tämän ongelman käyttämällä chat-ketjua, joka on yleistetty arkkitehtuuri, joka jakaa kunkin vaiheen alkeellisiin vuoropuheluihin, joissa kunkin vaiheen fokus on tehtävänorientoituneessa roolipelaamisessa, jossa on kaksinkertaiset roolit.

Jokaisessa chat-vuoropuhelussa ohjaaja aloittaa ohjeiden antamisen ja ohjaa vuoropuhelua tehtävän suorittamiseen, ja samalla avustajat seuraavat ohjeita, tarjoavat ihanteellisia ratkaisuja ja osallistuvat keskusteluihin ratkaisun toteutettavuudesta. Ohjaaja ja avustaja osallistuvat monivaiheisiin vuoropuheluihin, kunnes he pääsevät yhteisymmärrykseen ja katsovat tehtävän suoritetuksi. Chat-ketju tarjoaa käyttäjille avoimen näkymän kehitysprosessiin, valottaa päätöksentekoprosessin polkua ja tarjoaa mahdollisuuksia virheiden korjaamiseen, mikä mahdollistaa loppukäyttäjille virheiden analysoinnin ja diagnosoinnin, välimuistien tarkastelun ja prosessiin puuttumisen, jos se on tarpeen. Chat-kehys:n avulla ChatDev pystyy keskittymään kunkin alitehtävään yksityiskohtaisesti, mikä mahdollistaa tehokkaan yhteistyön agenttien välillä ja nopean saavuttamisen vaadittuja tuloksia.

Suunnittelu

Suunnitteluvaiheessa ChatDev-kehys vaatii alkuun ihmisen asiakkaan idean ja siinä on kolme ennalta määriteltyä roolia.

  1. Toimitusjohtaja tai CEO.
  2. Tuotejohtaja tai CPO.
  3. Tekninen johtaja tai CTO.

Chat-ketju tulee tässä vaiheessa peliin jakamalla suunnitteluvaiheen peräkkäisiin chat-vuoropuheluihin, jotka sisältävät ohjelmointikielen (CTO ja CEO) ja kohdeohjelmiston modaalisen (CPO ja CEO). Suunnitteluvaiheessa on kolme tärkeää mekanismia : Roolijako, Muistivirta ja Itsearviointi.

Roolijako

Jokainen agentti ChatDev-kehys:ssä saa roolin erityisillä viesteillä tai ohjauksilla roolipelaamisprosessissa. Toisin kuin muut vuoropuhelumallit, ChatDev-kehys rajoittuu ainoastaan roolipelaamistilanteiden aloittamiseen agenttien välillä. Nämä ohjaukset ovat tarpeen roolien määrittelyyn ennen vuoropuhelua.

Aluksi ohjaaja ottaa toimitusjohtajan vastuun ja osallistuu interaktiiviseen suunnitteluun, kun taas tuotejohtajan vastuut hoitaa agentti, joka suorittaa tehtäviä ja antaa tarvittavat vastaukset. Kehys käyttää “aloitusohjausta” roolien erikoistamiseen, mikä mahdollistaa agenttien täyttää roolinsa tehokkaasti. Avustajan ja ohjaajan ohjauksissa on tärkeitä tietoja määritellyistä rooleista ja tehtävistä, lopetusehdoista, viestintäprotokollasta ja useista rajoituksista, jotka pyrkivät estämään ei-toivottuja käyttäytymisiä, kuten ääretömiä silmukoita, tarkoituksenomaisia vastauksia ja ohjausredundanssia.

Muistivirta

Muistivirta on mekanismi, jota ChatDev-kehys käyttää ylläpitämään kattavaa vuoropuhelun historiaa agentin aiemmista vuoropuheluista ja avustaa päätöksentekoprosessissa puheen havainnoimisella tavalla. ChatDev-kehys käyttää ohjausta viestintäprotokollan määrittelyyn. Esimerkiksi, kun osapuolet pääsevät yhteisymmärrykseen, lopetusviesti, joka täyttää tietyn muodon vaatimukset (kuten <MODAALI>: Desktop-sovellus”). Kehys valvoo jatkuvasti ja lopulta sallii nykyisen vuoropuhelun päättymisen.

Itsearviointi

ChatDev-kehys:n kehittäjät ovat havainneet tilanteita, joissa molemmat osapuolet olivat saavuttaneet yhteisymmärryksen, mutta ennalta määritellyt viestintäprotokollat eivät olleet käynnissä. Ratkaisemaan nämä ongelmat ChatDev-kehys esittelee itsearviointimekanismin, joka auttaa muistojen hakemisessa ja poistamisessa. Itsearviointimekanismin toteuttamiseksi ChatDev-kehys käynnistää uuden ja puhtaan chat-vuoropuhelun “pseudo-itsensä” uutena kysyjänä. “Pseudo-itsensä” analysoi aiempia vuoropuheluita ja historiallisia tietoja ja ilmoittaa nykyiselle avustajalle, joka pyytää yhteenvetoa päätöksenteon arvoisista ja toiminnan arvoisista tiedoista, kuten kuvassa alla.

Itsearviointimekanismin avulla ChatDev-avustaja rohkaistaan pohtimaan ja analysoimaan ehdotettuja päätöksiä.

Koodaus

Koodausvaiheessa on kolme ennalta määriteltyä roolia : Tekninen johtaja, ohjelmoija ja graafinen suunnittelija. Chat-ketju tulee jälleen peliin jakamalla koodausvaiheen yksittäisiin alkeellisiin tehtäviin, kuten koodin generointiin (ohjelmoija ja tekninen johtaja) tai graafisen käyttöliittymän suunnitteluun (ohjelmoija ja graafinen suunnittelija). Tekninen johtaja ohjaa ohjelmoijaa käyttämään markdown-muotoa ohjelmajärjestelmän toteuttamiseen, ja graafinen suunnittelija ehdottaa käyttäjäystävällistä ja interaktiivista graafista käyttöliittymää, joka käyttää graafisia ikoneja vuorovaikutukseen käyttäjien kanssa sen sijaan, että riippuisi perinteisistä tekstipohjaisista komennoista.

Koodin hallinta

ChatDev-kehys käyttää olio-ohjelmointikieliä, kuten Python, Java ja C++, monimutkaisten ohjelmistojärjestelmien käsittelyyn, koska näiden ohjelmointikielten modulaarisuus mahdollistaa itsenään sisältävien olioiden käytön, mikä helpottaa vianetsintää ja yhteistyön kehityksessä ja poistaa redundanssin periytymiskäsitteen avulla.

Ajatuksen ohjaukset

Perinteiset kysymyksiin vastaamisen menetelmät voivat johtaa epäolennaisiin tietoihin tai epätarkkuuteen, erityisesti koodin generoimisessa, koska naivien ohjeiden antaminen voi johtaa LLM-hallusinaatioihin, ja se voi olla haasteellinen ongelma. Ratkaisemaan tämän ongelman ChatDev-kehys esittelee “ajatuksen ohjaukset” -mekanismin, joka ammentaa ketjuajatuksen ohjauksista. “Ajatuksen ohjaukset” -mekanismin avulla ratkaistaan yksittäisiä ongelmanratkaisun ajatuksia, jotka ovat osa ohjeita, samalla tavoin kuin tehtävien ratkaiseminen järjestyksessä ja järjestelmällisesti.

Testaus

Virheettömän koodin kirjoittaminen ensimmäisellä yrittämällä on haasteellista ei ainoastaan LLM:ille, vaan myös ihmisille ohjelmoijille, ja sen sijaan, että virheellinen koodi hylätään täysin, ohjelmoijat analysoivat koodiaan virheiden etsimiseksi ja korjaamiseksi. Testausvaiheessa ChatDev-kehys:ssä on kolme roolia : ohjelmoija, testaaja ja arvostelija. Testausprosessi on jaettu kahteen peräkkäiseen alkeelliseen tehtä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 etsimiseksi, kun taas dynaaminen virheenkorjaus tai järjestelmän testaus varmistaa ohjelmiston suorittamisen eri testeillä, jotka suoritetaan tulkkiavustajalla ohjelmoijan toimesta. Dynaaminen virheenkorjaus keskittyy pääasiassa mustalaatikko-testaukseen sovellusten arvioimiseksi.

Dokumentaatio

Kun ChatDev-kehys on suorittanut suunnittelun, koodauksen ja testauksen vaiheet, se käyttää neljää agenttia : toimitusjohtajaa, teknistä johtajaa, tuotejohtajaa ja ohjelmoijaa ohjelmistoprojektin dokumentaation luomiseen. ChatDev-kehys käyttää LLM:ia hyödyntämään vähän koulutettuja ohjauksia kontekstiesimerkkejä dokumenttien generoimiseen. Tekninen johtaja ohjaa ohjelmoijaa antamaan ohjeet ympäristön riippuvuuksien konfiguraatioon ja luo dokumentin, kuten “riippuvuuksien vaatimukset.txt”. Samalla vaatimukset ja järjestelmän suunnittelu kommunikoidaan tuotejohtajalle toimitusjohtajan toimesta luomaan käyttöohjeita tuotteelle.

Tulokset

Ohjelmistotilastot

Analysoimaan ChatDev-kehys:n suorituskykyä, kehittäjien tiimi suoritti tilastollisen analyysin ohjelmistoista, jotka kehys generoi useiden avainmittareiden perusteella, mukaan lukien kulutetut tokenit, yhteensä vuoropuhelun käännökset, kuvat, ohjelmistotiedostot, versiopäivitykset ja useita muita, ja tulokset on esitetty taulukossa alla.

Kestoanalyysi

Tutkimaan ChatDev:n tuotantoaika ohjelmistojen kehittämiseksi eri pyynnön ohjauksille, kehittäjät suorittivat myös kestoanalyysin, ja ero kehitysaikojen välillä eri ohjauksille heijastaa pyyntöjen vaihtelevaa selkeyttä ja monimutkaisuutta, ja tulokset on esitetty kuvassa alla.

Case-tutkimus

Seuraava kuva esittää ChatDev:n kehittämän Viisi rivissä tai Gomoku-pelin.

Vasemmalla oleva kuva esittää perusohjelmistoa, jonka kehys on luonut ilman graafista käyttöliittymää. Kuten voidaan nähdä, sovellus ilman graafista käyttöliittymää tarjoaa rajatun interaktiivisuuden, ja käyttäjät voivat pelata tätä peliä ainoastaan komentorivin kautta. Seuraava kuva esittää visuaalisesti miellyttävämmän pelin, joka on luotu graafisen käyttöliittymän avulla, tarjoaa paremman käyttökokemuksen ja interaktiivisuuden miellyttävän peliympäristön luomiseksi, jonka käyttäjät voivat nauttia enemmän. Suunnittelija-agentti luo myös lisägraafikkoja parantamaan pelin käytettävyyttä ja esteettisyyttä ilman pelin toiminnallisuuden vaarantamista. Kuitenkin, jos ihmiset eivät ole tyytyväisiä suunnittelijan luomaan kuvaan, he voivat korvata kuvat ChatDev-kehys:n suorittamisen jälkeen. ChatDev-kehys:n tarjoama joustavuus kuvien manuaaliseen korvaamiseen mahdollistaa käyttäjille sovellusten mukauttamisen heidän mieltymyksiensä mukaan parantamalla interaktiivisuutta ja käyttökokemusta ilman ohjelmiston toiminnallisuuden vaarantamista.

Loppusanat

Tässä artikkelissa olemme keskustelleet ChatDevistä, joka on suurten kielen mallien (LLM) perustuva innovatiivinen lähestymistapa, joka pyrkii vallankumoukseen ohjelmistokehityksen alalla. ChatDev-kehys pyrkii hyödyntämään LLM-kehysten ominaisuuksia käyttämällä luonnollisen kielen viestintää yhdistääkseen ja suoristamaan avainohjelmistokehitysprosesseja. ChatDev-kehys käyttää chat-ketjua jakamaan ohjelmistokehitysprosessin peräkkäisiin alkeellisiin tehtäviin, mikä mahdollistaa yksityiskohtaisen fokusoinnin ja edistää toivottuja tuloksia kunkin alitehtävän osalla.

Ammattina insinööri, sydämen vuoksi kirjailija. Kunal on tekninen kirjailija, jolla on syvä rakkaus ja ymmärrys AI: sta ja ML: stä, omistautunut yksinkertaistamaan monimutkaisia käsitteitä näissä aloissa hänen viihdyttävän ja informatiivisen dokumentaationsa kautta.