peň ChatDev: Komunikatívni agenti pre vývoj softvéru - Unite.AI
Spojte sa s nami

Umelá inteligencia

ChatDev: Komunikatívni agenti pre vývoj softvéru

mm
Aktualizované on
ChatDev: Vývoj softvéru s podporou AI

Odvetvie vývoja softvéru je doménou, ktorá sa často spolieha na konzultácie aj intuíciu a vyznačuje sa zložitými stratégiami rozhodovania. Okrem toho si vývoj, údržba a prevádzka softvéru vyžaduje disciplinovaný a metodický prístup. Je bežné, že vývojári softvéru zakladajú rozhodnutia skôr na intuícii než na konzultáciách, v závislosti od zložitosti problému. V snahe zvýšiť efektivitu softvérového inžinierstva, vrátane efektivity softvéru a zníženia nákladov na vývoj, vedci skúmajú využitie rámcov založených na hlbokom učení na riešenie rôznych úloh v rámci procesu vývoja softvéru. S najnovším vývojom a pokrokmi v sektoroch hlbokého učenia a AI vývojári hľadajú spôsoby, ako transformovať procesy a postupy vývoja softvéru. Robia to pomocou sofistikovaných návrhov implementovaných v rôznych fázach procesu vývoja softvéru.

Dnes budeme diskutovať o ChatDev, inovatívnom prístupe založenom na veľkom jazykovom modeli (LLM), ktorého cieľom je revolúcia v oblasti vývoja softvéru. Táto paradigma sa snaží eliminovať potrebu špecializovaných modelov počas každej fázy vývojového procesu. Rámec ChatDev využíva možnosti rámcov LLM a využíva komunikáciu v prirodzenom jazyku na zjednotenie a zefektívnenie kľúčových procesov vývoja softvéru.

V tomto článku preskúmame spoločnosť ChatDev, virtuálnu spoločnosť, ktorá sa špecializuje na vývoj softvéru. ChatDev prijíma vodopádový model a starostlivo rozdeľuje proces vývoja softvéru do štyroch základných etáp.

  1. Projektovanie. 
  2. Kódovanie. 
  3. Testovanie. 
  4. Dokumentácia. 

Každá z týchto fáz nasadzuje tím virtuálnych agentov, ako sú programátori kódu alebo testeri, ktorí navzájom spolupracujú pomocou dialógov, ktorých výsledkom je bezproblémový pracovný tok. Chatovací reťazec funguje ako facilitátor a rozdeľuje každú fázu vývojového procesu na atómové čiastkové úlohy, čím umožňuje duálne úlohy, čo umožňuje navrhovať a overovať riešenia pomocou kontextovej komunikácie, ktorá umožňuje vývojárom efektívne riešiť zadané čiastkové úlohy. 

ChatDev: Vývoj softvéru s podporou AI

Inštrumentálna analýza ChatDev ukazuje, že rámec ChatDev je nielen mimoriadne efektívny pri dokončovaní procesu vývoja softvéru, ale je mimoriadne nákladovo efektívny, ako aj kompletný celý proces vývoja softvéru za menej ako jeden dolár. Okrem toho rámec nielen identifikuje, ale aj zmierňuje potenciálne zraniteľné miesta, koriguje potenciálne halucinácie, a to všetko pri zachovaní vysokej účinnosti a nákladovej efektívnosti. 

ChatDev: Úvod do vývoja softvéru poháňaného LLM

Odvetvie vývoja softvéru je tradične postavené na základoch disciplinovaného a metodického prístupu nielen k vývoju aplikácií, ale aj k ich údržbe a prevádzke. Tradične povedané, typický proces vývoja softvéru je veľmi zložitý, komplexný a časovo náročný proces s dlhými vývojovými cyklami, pretože do procesu vývoja sú zapojené viaceré úlohy vrátane koordinácie v rámci organizácie, prideľovania úloh, písania kódu, testovanie a nakoniec dokumentáciu. 

V posledných rokoch sa s pomocou LLM alebo veľké jazykové modelyKomunita umelej inteligencie dosiahla významné míľniky v oblasti počítačového videnia a spracovania prirodzeného jazyka a po školení o paradigmách „predikcie ďalšieho slova“ modely veľkých jazykov dobre preukázali svoju schopnosť poskytovať efektívny výkon pri širokej škále nadväzujúcich úloh. strojový preklad, odpovedanie na otázky a generovanie kódu. 

Hoci veľké jazykové modely dokážu písať kód pre celý softvér, majú veľkú nevýhodu: kódové halucinácie, čo je dosť podobné halucináciám, ktorým čelia rámce spracovania prirodzeného jazyka. Halucinácie kódu môžu zahŕňať problémy, ako sú neobjavené chyby, chýbajúce závislosti a neúplné implementácie funkcií. Existujú dve hlavné príčiny halucinácií kódu. 

  • Chýbajúca špecifikácia úlohy: Pri generovaní softvérového kódu v jednom jedinom kroku nedefinovanie špecifickosti úlohy zamieňa LLM ako úlohy v procese vývoja softvéru, ako je analýza požiadaviek používateľov alebo výber preferovaného programovacieho jazyka, často poskytujú riadené myslenie, niečo, čo v najlepšom prípade chýba. Úlohy na úrovni, ktoré riešia tieto LLM. 
  • Nedostatok krížového výsluchu : Významné riziká prichádzajú vtedy, keď sa nevykonáva krížové preskúmanie, najmä počas rozhodovacích procesov. 

ChatDev si kladie za cieľ vyriešiť tieto problémy a uľahčiť LLM s právomocou vytvárať najmodernejšie a efektívne softvérové ​​aplikácie vytvorením virtuálne poháňanej spoločnosti pre vývoj softvéru, ktorá vytvára vodopádový model a starostlivo rozdeľuje proces vývoja softvéru na štyri primárne etapy,

  1. Projektovanie. 
  2. Kódovanie. 
  3. Testovanie. 
  4. Dokumentácia. 

Každá z týchto fáz nasadzuje tím virtuálnych agentov, ako sú programátori kódu alebo testeri, ktorí navzájom spolupracujú pomocou dialógov, ktorých výsledkom je bezproblémový pracovný tok. Okrem toho ChatDev využíva reťazec chatu, ktorý funguje ako facilitátor a rozdeľuje každú fázu vývojového procesu na atómové čiastkové úlohy, čím umožňuje duálne úlohy, čo umožňuje navrhovať a overovať riešenia pomocou kontextovej komunikácie, ktorá umožňuje vývojárom efektívne vyriešiť zadané čiastkové úlohy. Chatovací reťazec pozostáva z niekoľkých uzlov, kde každý jednotlivý uzol predstavuje konkrétnu čiastkovú úlohu a tieto dve roly sa zapájajú do viacnásobných kontextových diskusií s cieľom nielen navrhnúť, ale aj overiť riešenia. 

V tomto prístupe framework ChatDev najskôr analyzuje požiadavky klienta, generuje kreatívne nápady, navrhuje a implementuje prototypové systémy, identifikuje a rieši potenciálne problémy, vytvára príťažlivú grafiku, vysvetľuje informácie o ladení a generuje používateľské príručky. Nakoniec, rámec ChatDev dodáva používateľovi softvér spolu so zdrojovým kódom, používateľskými manuálmi a špecifikáciami prostredia závislostí. 

ChatDev: Architektúra a práca

Teraz, keď máme krátky úvod do ChatDev, poďme sa pozrieť na architektúru a fungovanie rámca ChatDev počnúc reťazcom Chat. 

Chat reťazec

Ako sme uviedli v predchádzajúcej časti, rámec ChatDev používa na vývoj softvéru vodopádovú metódu, ktorá rozdeľuje proces vývoja softvéru do štyroch fáz vrátane návrhu, kódovania, testovania a dokumentácie. Každá z týchto fáz má jedinečnú úlohu v procese rozvoja a je medzi nimi potrebná efektívna komunikácia a existujú potenciálne výzvy, ktorým čelíme pri identifikácii jednotlivcov, s ktorými sa treba zapojiť, a pri určovaní postupnosti interakcií. 

Na vyriešenie tohto problému používa rámec ChatDev Chat Chain, všeobecnú architektúru, ktorá rozkladá každú fázu na subatomárny chat, pričom každá z týchto fáz sa zameriava na hranie rolí orientovaných na úlohy, ktoré zahŕňajú dvojité úlohy. Požadovaný výstup pre chat tvorí životne dôležitý komponent pre cieľový softvér a je dosiahnutý ako výsledok spolupráce a výmeny inštrukcií medzi agentmi podieľajúcimi sa na procese vývoja. Paradigma reťazca chatu pre stredne pokročilé riešenie úloh je znázornená na obrázku nižšie. 

Pri každom individuálnom rozhovore inštruktor najprv iniciuje pokyny a potom vedie dialóg smerom k dokončeniu úlohy a medzitým sa asistenti riadia pokynmi zadaných inštruktorom, poskytujú ideálne riešenia a zapájajú sa do diskusií o uskutočniteľnosti. riešenia. Inštruktor a agent sa potom zapoja do viacotáčkových dialógov, kým nedospejú ku konsenzu a považujú úlohu za úspešne splnenú. Reťazový reťazec poskytuje používateľom transparentný pohľad na proces vývoja, osvetľuje cestu rozhodovania a ponúka príležitosti na ladenie chýb, keď sa vyskytnú, čo umožňuje koncovým používateľom analyzovať a diagnostikovať chyby, kontrolovať medzivýstupy, a v prípade potreby zasiahnuť do procesu. Začlenením chatovacieho reťazca je rámec ChatDev schopný zamerať sa na každú konkrétnu podúlohu v granulárnom meradle, čo nielen uľahčuje efektívnu spoluprácu medzi agentmi, ale vedie to aj k rýchlemu dosiahnutiu požadovaných výstupov. 

Projektovanie

Vo fáze návrhu vyžaduje rámec ChatDev počiatočný nápad ako vstup od ľudského klienta a v tejto fáze sú tri preddefinované roly. 

  1. generálny riaditeľ alebo generálny riaditeľ. 
  2. CPO alebo hlavný produktový riaditeľ. 
  3. CTO alebo hlavný technický riaditeľ. 

Do hry potom vstupuje reťazec chatu, ktorý rozdeľuje fázu navrhovania na sekvenčné subatomárne chatovacie úlohy, ktoré zahŕňajú programovací jazyk (CTO a CEO) a modalitu cieľového softvéru (CPO a CEO). Fáza navrhovania zahŕňa tri kľúčové mechanizmy: pridelenie rolí alebo špecializácia rolí, pamäťový tok a sebareflexia. 

Pridelenie role

Každému agentovi v rámci Chat Dev je priradená rola pomocou špeciálnych správ alebo špeciálnych výziev počas procesu hrania rolí. Na rozdiel od iných modelov konverzačných jazykov sa rámec ChatDev obmedzuje výlučne na spustenie scenárov hrania rolí medzi agentmi. Tieto výzvy sa používajú na priradenie rolí agentom pred dialógmi. 

Spočiatku inštruktor preberá zodpovednosť generálneho riaditeľa a zapája sa do interaktívneho plánovania, zatiaľ čo povinnosti CPO má na starosti agent, ktorý vykonáva úlohy a poskytuje požadované odpovede. Rámec používa „úvodná výzva“ pre špecializáciu rolí, ktorá agentom umožňuje efektívne plniť svoje úlohy. Výzvy asistenta a inštruktora pozostávajú z dôležitých detailov týkajúcich sa určených rolí a úloh, kritérií ukončenia, komunikačných protokolov a niekoľkých obmedzení, ktorých cieľom je zabrániť nežiaducemu správaniu, ako sú nekonečné slučky, neinformatívne reakcie a redundancia pokynov. 

Memory Stream

Pamäťový prúd je mechanizmus používaný rámcom ChatDev, ktorý udržiava komplexný záznam konverzácie o predchádzajúcich dialógoch agenta a pomáha pri rozhodovacom procese, ktorý nasleduje spôsobom uvedomujúcim si výpovede. Rámec ChatDev používa výzvy na vytvorenie požadovaných komunikačných protokolov. Napríklad, keď zúčastnené strany dosiahnu konsenzus, záverečná správa, ktorá spĺňa špecifickú požiadavku na formátovanie, ako je ( : Počítačová aplikácia“). Aby sa zabezpečil súlad s určeným formátom, rámec nepretržite monitoruje a nakoniec umožňuje dospieť k záveru súčasného dialógu. 

Sebareflexia

Vývojári rámca ChatDev zaznamenali situácie, keď obe zúčastnené strany dosiahli vzájomný konsenzus, ale preddefinované komunikačné protokoly sa nespustili. Na vyriešenie týchto problémov, Rámec ChatDev zavádza mechanizmus sebareflexie ktorý pomáha pri získavaní a extrakcii spomienok. Aby sa implementoval mechanizmus sebareflexie, rámec ChatDev iniciuje nový a čerstvý chat tým, že zaradí „pseudo self“ ako nového pýtajúceho sa. „Pseudoja“ analyzuje predchádzajúce dialógy a historické záznamy a informuje súčasného asistenta, načo si vyžiada súhrn presvedčivých a akčných informácií, ako je znázornené na obrázku nižšie. 

Pomocou mechanizmu svojpomoci je asistent ChatDev povzbudzovaný, aby reflektoval a analyzoval rozhodnutia, ktoré navrhol. 

Kódovanie

Vo fáze kódovania sú tri preddefinované úlohy, a to CTO, programátor a umelecký dizajnér. Ako obvykle, mechanizmus chatovacieho reťazca rozdeľuje fázu kódovania na jednotlivé subatomárne úlohy, ako je generovanie kódov (programátor a CTO) alebo navrhovanie GUI. alebo grafické užívateľské rozhranie (programátor a dizajnér). CTO potom inštruuje programátora, aby použil formát markdown na implementáciu softvérového systému, po ktorom umelecký dizajnér navrhne užívateľsky prívetivé a interaktívne GUI, ktoré využíva grafické ikony na interakciu s používateľmi namiesto spoliehania sa na tradičné textové príkazy. 

Správa kódu

Rámec ChatDev používa objektovo orientované programovacie jazyky ako Python, Java a C++ na spracovanie zložitých softvérových systémov, pretože modularita týchto programovacích jazykov umožňuje použitie samostatných objektov, ktoré pomáhajú nielen pri odstraňovaní problémov, ale aj pri spoločnom vývoji. a tiež pomáha pri odstraňovaní nadbytočnosti opätovným použitím objektov prostredníctvom konceptu dedenia. 

Myšlienkové inštrukcie

Tradičné metódy odpovedania na otázky často vedú k irelevantným informáciám alebo nepresnostiam, najmä pri generovaní kódu, pretože poskytovanie naivných inštrukcií môže viesť k halucináciám LLM a môže sa stať náročným problémom. Na vyriešenie tohto problému zavádza rámec ChatDev mechanizmus „myšlienkových inštrukcií“, ktorý čerpá inšpiráciu z radov myšlienok. Mechanizmus „myšlienkových inštrukcií“ explicitne rieši jednotlivé myšlienky na riešenie problémov zahrnuté v pokynoch, podobne ako pri postupnom a organizovanom riešení úloh. 

testovanie

Napísať bezchybný kód na prvý pokus je náročné nielen pre LLM, ale aj pre ľudských programátorov a namiesto úplného vyradenia nesprávneho kódu programátori analyzujú svoj kód, aby identifikovali chyby a opravili ich. Testovacia fáza v rámci ChatDev je rozdelená do troch rolí: programátor, tester a recenzent. Proces testovania je ďalej rozdelený na dve po sebe nasledujúce subatomárne úlohy: Peer Review alebo statické ladenie (recenzent a programátor) a Testovanie systému alebo dynamické ladenie (Programátor a tester). Statické ladenie alebo Peer review analyzuje zdrojový kód na identifikáciu chýb, zatiaľ čo dynamické ladenie alebo systémové testovanie overuje spustenie softvéru prostredníctvom rôznych testov, ktoré programátor vykonáva pomocou tlmočníka. Dynamické ladenie sa zameriava predovšetkým na testovanie čiernej skrinky na vyhodnotenie aplikácií. 

dokumentácia

Potom, čo je rámec ChatDev hotový s fázami navrhovania, kódovania a testovania, využíva štyroch agentov, a to generálneho riaditeľa, CTO, CPO a programátora na generovanie dokumentácie pre softvérový projekt. Rámec ChatDev využíva LLM na využitie niekoľkých výziev s kontextovými príkladmi na generovanie dokumentov. CTO inštruuje programátora, aby poskytol pokyny na konfiguráciu environmentálnych závislostí a vytvoril dokument ako „dependency requirements.txt“. Zároveň generálny riaditeľ oznámi CPO požiadavky a návrh systému, aby vytvoril používateľskú príručku pre produkt. 

výsledky

Štatistika softvéru

Ak chcete analyzovať výkon rámca ChatDev, tím vývojárov vykonal štatistickú analýzu softvérových aplikácií generovaných rámcom na základe niekoľkých kľúčových metrík vrátane spotrebovaných tokenov, celkového počtu otočení dialógu, obrazových aktív, softvérových súborov, aktualizácií verzií a niekoľkých ďalších, a výsledky sú v tabuľke nižšie. 

Analýza trvania

Aby sa preskúmal čas výroby softvéru ChatDev pre rôzne výzvy, vývojári tiež vykonali analýzu trvania a rozdiel v čase vývoja pre rôzne výzvy odráža rôznu jasnosť a zložitosť priradených úloh a výsledky sú znázornené na obrázku nižšie. . 

Prípadová štúdia

Nasledujúci obrázok ukazuje, ako ChatDev vyvíja hru Piškvorky alebo Gomoku. 

Obrázok úplne vľavo ukazuje základný softvér vytvorený rámcom bez použitia akéhokoľvek GUI. Ako je jasne vidieť, aplikácia bez akéhokoľvek GUI ponúka obmedzenú interaktivitu a používatelia môžu hrať túto hru iba cez príkazový terminál. Ďalší obrázok ukazuje vizuálne príťažlivejšiu hru vytvorenú pomocou GUI, ponúka lepší užívateľský zážitok a vylepšenú interaktivitu pre pútavé herné prostredie, ktoré si užívatelia môžu užiť oveľa viac. Agent dizajnéra potom vytvorí ďalšiu grafiku na ďalšie zlepšenie použiteľnosti a estetiky hry bez ovplyvnenia akejkoľvek funkcie. Ak však ľudskí používatelia nie sú spokojní s obrázkom vytvoreným dizajnérom, môžu obrázky nahradiť po dokončení softvéru rámcom ChatDev. Flexibilita, ktorú ponúka rámec ChatDev na ručné nahradenie obrázkov, umožňuje používateľom prispôsobiť aplikácie podľa ich preferencií pre vylepšenú interaktivitu a používateľskú skúsenosť bez toho, aby to akýmkoľvek spôsobom ovplyvnilo funkčnosť softvéru. 

Záverečné myšlienky

V tomto článku sme hovorili o ChatDev, an LLM alebo veľký jazykový model založená inovatívna paradigma, ktorej cieľom je revolúcia v oblasti vývoja softvéru odstránením požiadavky na špecializované modely počas každej fázy vývojového procesu. Rámec ChatDev sa zameriava na využitie schopností rámcov LLM pomocou komunikácie v prirodzenom jazyku na zjednotenie a zefektívnenie kľúčových procesov vývoja softvéru. Rámec ChatDev využíva mechanizmus chatovacieho reťazca na rozdelenie procesu vývoja softvéru na sekvenčné subatomárne úlohy, čím umožňuje granulárne zameranie a podporu požadovaných výstupov pre každú subatomárnu úlohu. 

"Povolaním inžinier, srdcom spisovateľ." Kunal je technický spisovateľ s hlbokou láskou a porozumením AI a ML, ktorý sa venuje zjednodušovaniu zložitých konceptov v týchto oblastiach prostredníctvom svojej pútavej a informatívnej dokumentácie.