Umělá inteligence

ChatDev: Komunikační agenti pro softwarový vývoj

mm
ChatDev : AI Assisted Software Development

Softwarový vývojový průmysl je doménou, která často spoléhá na konzultace a intuici, charakterizovaná složitými rozhodovacími strategiemi. Kromě toho vyžaduje vývoj, údržba a provoz softwaru disciplinovaný a metodický přístup. Je běžné, že softwaroví vývojáři zakládají své rozhodnutí na intuici spíše než na konzultacích, v závislosti na složitosti problému. V rámci zlepšení efektivity softwarového inženýrství, včetně účinnosti softwaru a snížení vývojových nákladů, vědci zkoumají použití hlubokých učících se rámců pro řešení různých úkolů v rámci softwarového vývojového procesu. S nedávnými pokroky a vývojovými změnami v hlubokém učení a AI sektorech hledají vývojáři způsoby, jak transformovat softwarový vývojový proces a postupy. To dělají pomocí sofistikovaných návrhů implementovaných v různých fázích softwarového vývojového procesu.

Dnes budeme diskutovat o ChatDev, inovativním přístupu založeném na Large Language Model (LLM), který má za cíl revolucionizovat oblast softwarového vývoje. Tento přístup se snaží eliminovat potřebu specializovaných modelů během každé fáze vývojového procesu. Rámec ChatDev využívá schopnosti LLM rámců, využívajících přirozenou jazykovou komunikaci k ujednocení a zefektivnění klíčových softwarových vývojových procesů.

V tomto článku budeme procházet ChatDev, virtuálně poháněnou společnost specializující se na softwarový vývoj. ChatDev přijímá vodopádový model a pečlivě rozděluje softwarový vývojový proces do čtyř primárních fází.

  1. Navrhování.
  2. Kódování.
  3. Testování.
  4. Dokumentace.

Každá z těchto fází nasazuje tým virtuálních agentů, jako jsou programátoři nebo testovací specialisté, kteří spolupracují s ostatními pomocí dialogů, které vedou k bezproblémovému workflow. Řetězec chatu funguje jako facilitátor a rozděluje každou fázi vývojového procesu na atomické podúkoly, čímž umožňuje duální role, umožňuje navrhovat a ověřovat řešení pomocí kontextově závislé komunikace, která umožňuje vývojářům účinně řešit specifikované podúkoly.

ChatDev: AI Asistovaný softwarový vývoj

Instrumentální analýza ChatDev prokázala, že rámec ChatDev je nejen velmi efektivní při dokončení softwarového vývojového procesu, ale je také velmi nákladově efektivní, protože dokončuje celý softwarový vývojový proces za méně než jeden dolar. Kromě toho rámec nejen identifikuje, ale také zmírňuje potenciální zranitelnosti, opravuje potenciální halucinace, zatímco udržuje vysokou efektivitu a nákladovou efektivitu.

ChatDev: Úvod do LLM-Powered softwarového vývoje

Tradičně je softwarový vývojový průmysl postaven na základech disciplinovaného a metodického přístupu nejen pro vývoj aplikací, ale také pro jejich údržbu a provoz. Tradičně je typický softwarový vývojový proces velmi složitý a časově náročný proces s dlouhými vývojovými cykly, protože je zapojeno mnoho rolí v vývojovém procesu, včetně koordinace v rámci organizace, přidělování úkolů, psaní kódu, testování a konečně dokumentace.

V posledních letech, s pomocí LLM nebo Large Language Modelů, dosáhla AI komunita významných milníků v oblastech počítačového vidění a přirozeného jazykového zpracování, a po tréninku na „next word prediction“ paradigmech prokázaly Large Language Modely svou schopnost vrátit efektivní výkon na široké škále downstream úkolů, jako je strojový překlad, zodpovězení otázek a generování kódu.

Ačkoli Large Language Modely mohou psát kód pro celý software, mají jednu velkou nevýhodu: kódové halucinace, které jsou podobné halucinacím, kterým čelí přirozené jazykové zpracování. Kódové halucinace mohou zahrnovat problémy, jako jsou neobjevené chyby, chybějící závislosti a neúplné implementace funkcí. Existují dva hlavní příčiny kódových halucinací.

  • Chybějící specifikace úkolu: Při generování softwarového kódu v jednom kroku, bez definice specifik úkolu, zmátí LLM, protože úkoly v softwarovém vývojovém procesu, jako je analýza požadavků uživatelů nebo výběr preferovaného programovacího jazyka, často poskytují směrované myšlení, něco, co chybí u high-level úkolů zpracovávaných těmito LLM.
  • Chybějící křížové vyšetřování: Signifikantní rizika nastávají, když není provedeno křížové vyšetřování, zejména během rozhodovacích procesů.

ChatDev se snaží vyřešit tyto problémy a umožnit LLM vytvářet state-of-the-art a efektivní softwarové aplikace, vytvořením virtuálně poháněné společnosti pro softwarový vývoj, která zavede vodopádový model a pečlivě rozdělí softwarový vývojový proces do čtyř primárních fází,

  1. Navrhování.
  2. Kódování.
  3. Testování.
  4. Dokumentace.

Každá z těchto fází nasazuje tým virtuálních agentů, jako jsou programátoři nebo testovací specialisté, kteří spolupracují s ostatními pomocí dialogů, které vedou k bezproblémovému workflow. Kromě toho ChatDev využívá řetězec chatu, který funguje jako facilitátor a rozděluje každou fázi vývojového procesu na atomické podúkoly, čímž umožňuje duální role, umožňuje navrhovat a ověřovat řešení pomocí kontextově závislé komunikace, která umožňuje vývojářům účinně řešit specifikované podúkoly.

V tomto přístupu rámec ChatDev nejprve analyzuje požadavky klienta, generuje kreativní nápady, navrhuje a implementuje prototypové systémy, identifikuje a řeší potenciální problémy, vytváří atraktivní grafiku, vysvětluje ladící informace a generuje uživatelské manuály. Nakonec rámec ChatDev dodává software uživateli spolu se zdrojovým kódem, uživatelskými manuály a specifikacemi závislostí prostředí.

ChatDev: Architektura a fungování

Nyní, když jsme měli stručný úvod do ChatDev, podívejme se na architekturu a fungování rámce ChatDev, počínaje řetězcem chatu.

Řetězec chatu

Jak jsme zmínili v předchozí části, rámec ChatDev využívá vodopádový model pro softwarový vývoj, který rozděluje softwarový vývojový proces do čtyř fází, včetně navrhování, kódování, testování a dokumentace. Každá z těchto fází má jedinečnou roli v vývojovém procesu a je zapotřebí efektivní komunikace mezi nimi, a existují potenciální výzvy, kterým je třeba čelit při identifikaci osob, se kterými je třeba komunikovat, a při určování pořadí interakcí.

Pro řešení této проблемы rámec ChatDev využívá řetězec chatu, který je obecnou architekturou, která rozděluje každou fázi na subatomický chat, přičemž každá z těchto fází se zaměřuje na úkolově orientované role, které zahrnují duální role. Požadovaný výstup pro chat tvoří vitální součást cílového softwaru a je dosažen jako výsledek spolupráce a výměny instrukcí mezi agenty, které se účastní vývojového procesu. Paradigma řetězce chatu pro řešení mezitímních úkolů je ilustrováno na obrázku níže.

Pro každý jednotlivý chat iniciuje instruktor nejprve instrukce a poté směruje dialog směrem k dokončení úkolu, a mezitím asistenti následují instrukce stanovené instruktorem, poskytují ideální řešení a účastní se diskusí o proveditelnosti řešení. Instruktor a agent se poté účastní vícefázových dialogů, dokud nedosáhnou konsensu a považují úkol za úspěšně dokončený. Řetězec chatu poskytuje uživatelům transparentní pohled na vývojový proces, osvětlí cestu pro rozhodování a nabízí příležitosti pro ladění chyb, když nastanou, což umožňuje koncovým uživatelům analyzovat a diagnostikovat chyby, prohlížet mezitímní výstupy a zasahovat do procesu, pokud je to nutné. Implementací řetězce chatu je rámec ChatDev schopen soustředit se na každou specifickou subúkol na granulární úrovni, což nejen umožňuje efektivní spolupráci mezi agenty, ale také vede k rychlému dosažení požadovaných výstupů.

Navrhování

V fázi navrhování rámec ChatDev vyžaduje počáteční nápad jako vstup od lidského klienta a existují tři předdefinované role v této fázi.

  1. CEO nebo Generální ředitel.
  2. CPO nebo Produktový ředitel.
  3. CTO nebo Technický ředitel.

Řetězec chatu poté vstupuje do hry, rozdělující fázi navrhování na sekvenci subatomických chatů, které zahrnují programovací jazyk (CTO a CEO) a modalitu cílového softwaru (CPO a CEO). Fáze navrhování zahrnuje tři klíčové mechanismy: přiřazení role, proud paměti a sebe-reflexe.

Přiřazení role

Každý agent v rámci ChatDev je přiřazen role pomocí speciálních zpráv nebo speciálních promptů během role-playing procesu. Na rozdíl od ostatních konverzačních jazykových modelů se rámec ChatDev omezí pouze na iniciaci role-playing scénářů mezi agenty. Tyto prompty se používají k přiřazení rolí agentům před dialogy.

Počátečně instruktor přebírá odpovědnost CEO a účastní se interaktivního plánování, zatímco odpovědnost CPO je zpracována agentem, který provádí úkoly a poskytuje požadované odpovědi. Rámec ChatDev využívá „inception prompting“ pro specializaci rolí, což umožňuje agentům plnit své role účinně. Prompt instruktora a asistenta obsahuje vitální informace týkající se stanovených rolí a úkolů, kritérií ukončení, komunikačních protokolů a několika omezení, jejichž cílem je zabránit nežádoucím chováním, jako jsou nekonečné smyčky, neinformační odpovědi a redundance instrukcí.

Proud paměti

Proud paměti je mechanismus, který rámec ChatDev používá k udržení komplexního záznamu předchozích dialogů agenta a pomáhá v rozhodovacím procesu, který následuje v utterance-aware způsobem. Rámec ChatDev využívá prompty k stanovení požadovaných komunikačních protokolů. Například, když strany zapojené dohody dosáhnou konsensu, zpráva, která splňuje specifické formátovací požadavky, jako (<MODALITY>: Desktop Application“). Aby byla zajištěna shoda s určeným formátem, rámec ChatDev neustále monitoruje a nakonec umožňuje aktuální dialog dosáhnout závěru.

Sebe-reflexe

Vývojáři rámce ChatDev pozorovali situace, kdy obě strany zapojené dohody dosáhly vzájemného konsensu, ale předdefinované komunikační protokoly nebyly spuštěny. Pro řešení těchto problémů rámec ChatDev zavádí mechanismus sebe-reflexe, který pomáhá při obnově a extrakci paměti. Pro implementaci mechanismu sebe-reflexe rámec ChatDev iniciuje nový a čerstvý chat, který zahrnuje „pseudo self“ jako novou otázku. „Pseudo self“ analyzuje předchozí dialogy a historické záznamy a informuje aktuální asistenta, poté žádá souhrn závěrečných a akčních informací, jak je ukázáno na obrázku níže.

S pomocí mechanismu sebe-reflexe je asistent ChatDev povzbuzen k reflexi a analýze rozhodnutí, která navrhl.

Kódování

Existují tři předdefinované role v fázi kódování, jmenovitě CTO, programátor a grafický designer. Jako obvykle, řetězec chatu rozdělí fázi kódování na jednotlivé subatomické úkoly, jako je generování kódu (programátor a CTO) nebo návrh GUI (programátor a designer). CTO poté instruuje programátora, aby použil formát markdown pro implementaci softwarového systému, poté grafický designer navrhuje uživatelsky přívětivý a interaktivní GUI, který využívá grafických ikon pro interakci s uživateli, spíše než tradiční textové příkazy.

Správa kódu

Rámec ChatDev využívá objektově orientované programovací jazyky, jako je Python, Java a C++, pro zpracování složitých softwarových systémů, protože modularity těchto programovacích jazyků umožňuje použití samoobsažných objektů, které nejen pomáhají při odstraňování problémů, ale také při spolupráci a odstraňování redundancí pomocí konceptu dědičnosti.

Myšlenkové instrukce

Tradiční metody zodpovězení otázek často vedou k irelevantním informacím nebo nesprávnostem, zejména při generování kódu, protože poskytování naivních instrukcí může vést k halucinacím LLM a může se stát výzvou. Pro řešení této výzvy rámec ChatDev zavádí mechanismus „myšlenkových instrukcí“, který čerpá inspiraci z chain-of-thought promptů. Mechanismus „myšlenkových instrukcí“ explicitně řeší jednotlivé myšlenky na řešení problémů zahrnuté v instrukcích, podobně jako řešení úkolů v sekvenci a organizovaném způsobem.

Testování

Psaní kódu bez chyb při prvním pokusu je výzvou nejen pro LLM, ale také pro lidské programátory, a místo toho, aby se zcela zahození chybného kódu, programátoři analyzují svůj kód, aby identifikovali chyby a opravili je. Fáze testování v rámci ChatDev je rozdělena do tří rolí: programátor, testovací specialista a recenzent. Proces testování je dále rozdělen do dvou sekvencí subatomických úkolů: Peer Review nebo Static Debugging (Recenzent a programátor), a System Testing nebo Dynamic Debugging (Programátor a testovací specialista). Statické ladění nebo peer review analyzuje zdrojový kód, aby identifikoval chyby, zatímco dynamické ladění nebo systémové testování ověřuje provedení softwaru prostřednictvím různých testů, které jsou prováděny pomocí interpretru programátorem. Dynamické ladění se zaměřuje primárně na black-box testování pro hodnocení aplikací.

Dokumentace

Po dokončení fází navrhování, kódování a testování rámec ChatDev nasazuje čtyři agenty, jmenovitě CEO, CTO, CPO a programátora, pro generování dokumentace pro softwarový projekt. Rámec ChatDev využívá LLM pro využití few-shot promptů s kontextovými příklady pro generování dokumentů. CTO instruuje programátora, aby poskytl instrukce pro konfiguraci závislostí prostředí a vytvořil dokument, jako je „dependency requirements.txt“. Současně jsou požadavky a systémový design komunikovány CPO CEO, aby generoval uživatelskou příručku pro produkt.

Výsledky

Softwarové statistiky

Pro analýzu výkonu rámce ChatDev provedl tým vývojářů statistickou analýzu softwarových aplikací generovaných rámcem na základě několika klíčových metrik, včetně spotřebovaných tokenů, celkového počtu dialogových kol, obrazových aktiv, softwarových souborů, aktualizací verzí a několika dalších, a výsledky jsou demonstrovány v tabulce níže.

Analýza trvání

Pro zkoumání doby produkce softwaru pro různé požadavkové prompty provedli vývojáři také analýzu trvání, a rozdíl v době vývoje pro různé prompty odráží různé úrovně jasnosti a složitosti úkolů, a výsledky jsou demonstrovány na obrázku níže.

Případová studie

Následující obrázek demonstruje ChatDev, který vyvíjí hru Five in a Row nebo Gomoku.

Levý obrázek demonstruje základní software vytvořený rámcem bez použití GUI. Jak je zřejmé, aplikace bez GUI nabízí omezenou interaktivitu, a uživatelé mohou hrát tuto hru pouze prostřednictvím příkazového terminálu. Další obrázek demonstruje více vizuálně přitažlivou hru vytvořenou pomocí GUI, která nabízí lepší uživatelský zážitek a vyšší interaktivitu pro zábavnou herní atmosféru, která může být uživateli více užitečná. Grafický designer poté vytváří další grafiku pro další zlepšení uživatelské přívětivosti a estetiky herního prostředí, aniž by ovlivnil funkčnost softwaru. Avšak, pokud jsou lidské uživatele nejsou spokojeni s obrazem generovaným designérem, mohou nahradit obrázky po dokončení softwaru rámcem ChatDev. Flexibilita, kterou nabízí rámec ChatDev pro manuální nahrazení obrázků, umožňuje uživatelům přizpůsobit aplikace podle svých preferencí pro lepší interaktivitu a uživatelský zážitek, aniž by ovlivnili funkčnost softwaru.

Konečné myšlenky

V tomto článku jsme diskutovali o ChatDev, inovativním přístupu založeném na LLM, který má za cíl revolucionizovat oblast softwarového vývoje, eliminovat potřebu specializovaných modelů během každé fáze vývojového procesu. Rámec ChatDev se snaží využít schopnosti LLM rámců, využívajících přirozenou jazykovou komunikaci k ujednocení a zefektivnění klíčových softwarových vývojových procesů. Rámec ChatDev využívá řetězec chatu k rozdělení softwarového vývojového procesu na sekvenci subatomických úkolů, čímž umožňuje granulární zaměření a podporu požadovaných výstupů pro každý subatomický úkol.

Inženýr z povolání, spisovatel ze srdce. Kunal je technický spisovatel s hlubokou láskou a porozuměním pro AI a ML, který se věnuje zjednodušování složitých konceptů v těchto oblastech prostřednictvím svých přitažlivých a informačních dokumentací.