csonk ChatDev: Kommunikációs ügynökök szoftverfejlesztéshez - Unite.AI
Kapcsolatba velünk

Mesterséges Intelligencia

ChatDev: Kommunikációs ügynökök szoftverfejlesztéshez

mm
korszerűsített on
ChatDev: AI által támogatott szoftverfejlesztés

A szoftverfejlesztési ipar gyakran a konzultációra és az intuícióra támaszkodik, és bonyolult döntéshozatali stratégiák jellemzik. Továbbá a szoftverek fejlesztése, karbantartása és üzemeltetése fegyelmezett és módszeres megközelítést igényel. Gyakori, hogy a szoftverfejlesztők a probléma összetettségétől függően inkább intuícióra alapozzák a döntéseiket, semmint konzultációra. A szoftverfejlesztés hatékonyságának növelése érdekében, beleértve a szoftverek hatékonyságát és a csökkentett fejlesztési költségeket, a tudósok mély tanuláson alapuló keretrendszerek használatát vizsgálják a szoftverfejlesztési folyamaton belüli különféle feladatok megoldására. A mély tanulás és a mesterséges intelligencia szektorban elért közelmúltbeli fejlesztések és fejlesztések nyomán a fejlesztők keresik a szoftverfejlesztési folyamatok és gyakorlatok átalakításának módjait. Ezt a szoftverfejlesztési folyamat különböző szakaszaiban megvalósított kifinomult tervezésekkel teszik.

Ma a ChatDevről fogunk beszélni, egy nagy nyelvi modellen (LLM) alapuló, innovatív megközelítésről, amelynek célja a szoftverfejlesztés forradalmasítása. Ez a paradigma arra törekszik, hogy kiküszöbölje a speciális modellek szükségességét a fejlesztési folyamat minden fázisában. A ChatDev keretrendszer kihasználja az LLM keretrendszerek képességeit, és a természetes nyelvi kommunikációt használja a kulcsfontosságú szoftverfejlesztési folyamatok egységesítésére és egyszerűsítésére.

Ebben a cikkben a ChatDev szoftverfejlesztésre szakosodott, virtuálisan működő vállalatot fogjuk felfedezni. A ChatDev elfogadja a vízesés modellt, és aprólékosan négy fő szakaszra osztja a szoftverfejlesztési folyamatot.

  1. Tervezés. 
  2. Kódolás. 
  3. Tesztelés. 
  4. Dokumentáció. 

Ezen szakaszok mindegyike virtuális ügynökök, például kódprogramozók vagy tesztelők csapatát telepíti, amelyek párbeszédek segítségével működnek együtt egymással, amelyek zökkenőmentes munkafolyamatot eredményeznek. A csevegési lánc segítőként működik, és a fejlesztési folyamat minden egyes szakaszát atomi részfeladatokra bontja, így lehetővé teszi a kettős szerepkört, lehetővé téve a javaslattételt és a megoldások validálását kontextus-tudatos kommunikáció segítségével, amely lehetővé teszi a fejlesztők számára a meghatározott részfeladatok hatékony megoldását. 

ChatDev: AI által támogatott szoftverfejlesztés

A ChatDev műszeres elemzése azt mutatja, hogy a ChatDev keretrendszer nemcsak rendkívül hatékony a szoftverfejlesztési folyamat befejezésében, hanem rendkívül költséghatékony, valamint a teljes szoftverfejlesztési folyamatot alig egy dollár alatt. Ezenkívül a keretrendszer nemcsak azonosítja, hanem enyhíti is a potenciális sebezhetőségeket, kijavítja a lehetséges hallucinációkat, mindezt a magas hatékonyság és a költséghatékonyság megőrzése mellett. 

ChatDev: Bevezetés az LLM-alapú szoftverfejlesztésbe

A szoftverfejlesztő ipar hagyományosan az, amely a fegyelmezett, módszeres megközelítés alapjaira épül, nemcsak az alkalmazások fejlesztésére, hanem karbantartására, üzemeltetésére is. Hagyományosan elmondható, hogy egy tipikus szoftverfejlesztési folyamat egy rendkívül bonyolult, összetett és időigényes aprólékos folyamat, hosszú fejlesztési ciklusokkal, mivel a fejlesztési folyamatban több szerep is részt vesz, beleértve a szervezeten belüli koordinációt, a feladatok kiosztását, a kódírást, tesztelés, és végül a dokumentáció. 

Az elmúlt néhány évben a segítségével LLM vagy nagy nyelvű modellek, a mesterséges intelligencia közösség jelentős mérföldköveket ért el a számítógépes látás és a természetes nyelvi feldolgozás területén, és a „következő szó előrejelzése” paradigmákra vonatkozó képzést követően a nagy nyelvi modellek jól bebizonyították, hogy képesek hatékony teljesítményt nyújtani a későbbi feladatok széles skáláján. mint a gépi fordítás, a kérdések megválaszolása és a kódgenerálás. 

Bár a nagy nyelvű modellek képesek kódot írni a teljes szoftverhez, van egy jelentős hátrányuk: kódhallucinációk, ami nagyon hasonlít a természetes nyelvi feldolgozási keretek hallucinációihoz. A kódhallucinációk magukban foglalhatnak olyan problémákat, mint a fel nem fedezett hibák, a hiányzó függőségek és a funkciók hiányos megvalósítása. A kódhallucinációknak két fő oka van. 

  • A feladat specifikációjának hiánya: A szoftverkód egyetlen lépésben történő generálásakor a feladat specifikumának nem definiálása összezavarja az LLM-eket, mivel a szoftverfejlesztési folyamatban olyan feladatok, mint a felhasználói igények elemzése, vagy a preferált programozási nyelv kiválasztása, gyakran irányított gondolkodást biztosítanak, ami hiányzik a magasból. -szintű feladatok, amelyeket ezek az LLM-ek kezelnek. 
  • Keresztvizsgálat hiánya : Jelentős kockázatok akkor jelentkeznek, ha nem végeznek keresztvizsgálatot, különösen a döntéshozatali folyamatok során. 

A ChatDev célja, hogy megoldja ezeket a problémákat, és elősegítse a legkorszerűbb és hatékony szoftveralkalmazások létrehozására képes LLM-eket azáltal, hogy létrehoz egy virtuális alapú szoftverfejlesztő céget, amely létrehozza a vízesés modellt, és aprólékosan felosztja a szoftverfejlesztési folyamatot négy fő részre. szakasz,

  1. Tervezés. 
  2. Kódolás. 
  3. Tesztelés. 
  4. Dokumentáció. 

Ezen szakaszok mindegyike virtuális ügynökök, például kódprogramozók vagy tesztelők csapatát helyezi üzembe, amelyek párbeszédek segítségével együttműködnek egymással, amelyek zökkenőmentes munkafolyamatot eredményeznek. Ezenkívül a ChatDev egy csevegési láncot használ, amely segítőként működik, és a fejlesztési folyamat minden egyes szakaszát atomi részfeladatokra bontja, így lehetővé teszi a kettős szerepkör betöltését, lehetővé téve a javaslatok megfogalmazását és a megoldások validálását kontextus-tudatos kommunikáció segítségével, amely lehetővé teszi a fejlesztők számára, hogy hatékonyan oldja meg a megadott részfeladatokat. A csevegési lánc több csomópontból áll, ahol minden egyes csomópont egy adott részfeladatot képvisel, és ez a két szerepkör többfordulós kontextus-tudatos megbeszéléseket folytat, hogy ne csak javaslatokat tegyen, hanem érvényesítse is a megoldásokat. 

Ebben a megközelítésben a ChatDev keretrendszer először elemzi az ügyfél igényeit, kreatív ötleteket generál, prototípusrendszereket tervez és implementál, azonosítja és kezeli a lehetséges problémákat, vonzó grafikákat készít, elmagyarázza a hibakeresési információkat, és elkészíti a felhasználói kézikönyveket. Végül a ChatDev keretrendszer szállítja a szoftvert a felhasználónak a forráskóddal, a felhasználói kézikönyvekkel és a függőségi környezet specifikációival együtt. 

ChatDev: Építészet és munka

Most, hogy röviden bemutatjuk a ChatDev-et, vessünk egy pillantást a ChatDev keretrendszer felépítésére és működésére, kezdve a Chat Chain-nel. 

Chat lánc

Ahogy az előző részben említettük, a ChatDev keretrendszer egy vízesés módszert használ a szoftverfejlesztéshez, amely a szoftverfejlesztési folyamatot négy szakaszra osztja, beleértve a tervezést, a kódolást, a tesztelést és a dokumentációt. Ezen fázisok mindegyike egyedi szerepet tölt be a fejlesztési folyamatban, és hatékony kommunikációra van szükség közöttük, és potenciális kihívásokkal kell szembenézni az egyének azonosítása és az interakciók sorrendjének meghatározása során. 

A probléma megoldása érdekében a ChatDev keretrendszer a Chat Chain-t használja, egy általánosított architektúrát, amely minden fázist szubatomi csevegésre bont, és ezen fázisok mindegyike a feladatorientált szerepjátékra összpontosít, amely kettős szerepet foglal magában. A chat kívánt kimenete a célszoftver létfontosságú eleme, és a fejlesztési folyamatban részt vevő ügynökök közötti együttműködés, utasításcsere eredményeként valósul meg. A középszintű feladatmegoldás chat-lánc paradigmáját az alábbi kép szemlélteti. 

Minden egyéni chatnél először egy oktató kezdeményezi az instrukciókat, majd a párbeszédet a feladat elvégzése felé tereli, közben pedig az asszisztensek követik az oktató utasításait, ideális megoldásokat kínálnak, megbeszéléseket folytatnak a megvalósíthatóságról. a megoldástól. Az oktató és az ügynök ezután többfordulós párbeszédet folytatnak, amíg konszenzusra nem jutnak, és a feladatot sikeresnek látják. A lánc lánc átlátható képet ad a felhasználóknak a fejlesztési folyamatról, megvilágítja a döntések meghozatalának útját, és lehetőséget kínál a felmerülő hibák hibakeresésére, ami lehetővé teszi a végfelhasználók számára a hibák elemzését és diagnosztizálását, a közbenső kimenetek ellenőrzését, és szükség esetén beavatkozni a folyamatba. A chat-lánc beépítésével a ChatDev keretrendszer képes az egyes részfeladatokra részletezett léptékben összpontosítani, ami nemcsak az ügynökök közötti hatékony együttműködést segíti elő, hanem a szükséges kimenetek gyors elérését is eredményezi. 

Tervezés

A tervezési fázisban a ChatDev keretrendszerhez egy kezdeti ötlet szükséges az emberi klienstől, és ebben a szakaszban három előre meghatározott szerepkör van. 

  1. vezérigazgató vagy vezérigazgató. 
  2. CPO vagy Chief Product Officer. 
  3. CTO vagy műszaki vezérigazgató. 

Ezután a csevegési lánc lép működésbe, felosztva a tervezési fázist szekvenciális szubatomi csevegési feladatokra, amelyek magukban foglalják a programozási nyelvet (CTO és CEO), valamint a célszoftver modalitását (CPO és CEO). A tervezési fázis három kulcsmechanizmust foglal magában: szerepkiosztás vagy szerepspecializáció, memóriafolyam és önreflexió. 

Szerepkiosztás

A Chat Dev keretrendszer minden ügynökéhez speciális üzenetek vagy speciális promptok segítségével rendelnek szerepet a szerepjáték során. Más társalgási nyelvi modellekkel ellentétben a ChatDev keretrendszer kizárólag az ügynökök közötti szerepjáték forgatókönyvek kezdeményezésére korlátozódik. Ezekkel a promptokkal a párbeszédek előtt szerepeket rendelnek az ügynökökhöz. 

Kezdetben az oktató veszi át a vezérigazgató feladatait, és interaktív tervezésben vesz részt, míg a CPO feladatait a feladatokat végrehajtó és a szükséges válaszokat adó ügynök látja el. A keret a „kezdeti felszólítás” a szerepspecializációért, amely lehetővé teszi az ügynökök számára, hogy hatékonyan töltsék be szerepeiket. Az asszisztens és az oktatói felszólítások a kijelölt szerepekre és feladatokra, a befejezési feltételekre, a kommunikációs protokollokra és számos olyan korlátozásra vonatkozó létfontosságú részleteket tartalmaznak, amelyek célja a nemkívánatos viselkedések, például a végtelen hurkok, a nem informatív válaszok és az utasítások redundanciája megakadályozása. 

Memóriafolyam

A memóriafolyam a ChatDev keretrendszer által használt mechanizmus, amely átfogó beszélgetési rekordot tart fenn az ügynök korábbi párbeszédeiről, és segíti az ezt követő döntéshozatali folyamatot, megnyilatkozás-tudatos módon. A ChatDev keretrendszer promptokat használ a szükséges kommunikációs protokollok létrehozásához. Például, amikor az érintett felek konszenzusra jutnak, egy olyan záróüzenet jelenik meg, amely megfelel egy meghatározott formázási követelménynek, mint például ( : Asztali alkalmazás”). A kijelölt formátumnak való megfelelés érdekében a keretrendszer folyamatosan figyeli, és végül lehetővé teszi az aktuális párbeszéd lezárását. 

Önreflexió

A ChatDev keretrendszer fejlesztői megfigyeltek olyan helyzeteket, amikor mindkét érintett fél kölcsönös konszenzusra jutott, de az előre meghatározott kommunikációs protokollok nem váltak ki. E problémák megoldására a A ChatDev keretrendszer önreflexiós mechanizmust vezet be ami segít az emlékek előhívásában és kinyerésében. Az önreflexiós mechanizmus megvalósítása érdekében a ChatDev keretrendszer új és friss csevegést kezdeményez az „ál-én” új kérdezőként való felvételével. A „pszeudo én” elemzi a korábbi párbeszédeket és történelmi feljegyzéseket, majd tájékoztatja az aktuális asszisztenst, amely után az alábbi ábrán bemutatott meggyőző és cselekvésre érdemes információk összefoglalását kéri. 

Az önsegítő mechanizmus segítségével a ChatDev asszisztenst arra ösztönzik, hogy tükrözze és elemezze az általa javasolt döntéseket. 

Kódolás

A kódolási fázisban három előre meghatározott szerep van, nevezetesen a CTO, a programozó és a művészeti tervező. Mint általában, a chat-lánc mechanizmus a kódolási fázist egyedi szubatomi feladatokra osztja fel, mint például kódok generálása (programozó és CTO), vagy grafikus felhasználói felület kidolgozása. vagy grafikus felhasználói felület (programozó és tervező). A CTO ezután utasítja a programozót, hogy használja a markdown formátumot egy szoftverrendszer megvalósításához, amelyet követően a művészeti tervező egy felhasználóbarát és interaktív grafikus felhasználói felületet javasol, amely grafikus ikonokat használ a felhasználókkal való interakcióhoz, ahelyett, hogy a hagyományos szövegalapú parancsokra hagyatkozna. 

Kódkezelés

A ChatDev keretrendszer objektum-orientált programozási nyelveket, például Pythont, Java-t és C++-t használ összetett szoftverrendszerek kezelésére, mivel ezeknek a programozási nyelveknek a modularitása lehetővé teszi olyan önálló objektumok használatát, amelyek nemcsak a hibaelhárításban, hanem a közös fejlesztésben is segítenek. , és segít a redundanciák eltávolításában az objektumok újrafelhasználásával az öröklődés fogalmán keresztül. 

Gondolati utasítások

A kérdések megválaszolásának hagyományos módszerei gyakran irreleváns információkhoz vagy pontatlanságokhoz vezetnek, különösen a kód generálása során, mivel a naiv utasítások LLM-hallucinációkhoz vezethetnek, és ez kihívást jelenthet. A probléma megoldása érdekében a ChatDev keretrendszer bevezeti a „gondolati utasítások” mechanizmusát, amely gondolatlánc-utasításokból merít ihletet. A „gondolati utasítások” mechanizmus kifejezetten az utasításokban szereplő egyéni problémamegoldó gondolatokat kezeli, hasonlóan a feladatok szekvenciális és szervezett megoldásához. 

Tesztelés

A hibamentes kód megírása az első próbálkozásra nem csak a számára jelent kihívást LLM-ek, hanem az emberi programozók számára is, és ahelyett, hogy teljesen elvetnék a helytelen kódot, a programozók elemzik a kódjukat, hogy azonosítsák a hibákat, és kijavítsák azokat. A ChatDev keretrendszerben a tesztelési szakasz három szerepkörre oszlik: programozó, tesztelő és ellenőr. A tesztelési folyamat két egymást követő szubatomi feladatra oszlik: Peer Review vagy statikus hibakeresés (Recenzens és programozó), ill Rendszertesztelés vagy dinamikus hibakeresés (Programozó és tesztelő). A statikus hibakeresés vagy a Peer Review elemzi a forráskódot, hogy azonosítsa a hibákat, míg a dinamikus hibakeresés vagy a rendszerteszt a szoftver végrehajtását ellenőrzi különböző tesztek segítségével, amelyeket a programozó tolmács segítségével hajt végre. A dinamikus hibakeresés elsősorban a fekete doboz tesztelésére összpontosít az alkalmazások értékelésére. 

Dokumentáció

Miután a ChatDev keretrendszer elkészült a tervezési, kódolási és tesztelési fázisokkal, négy ügynököt alkalmaz, nevezetesen a CEO-t, a CTO-t, a CPO-t és a programozót a szoftverprojekt dokumentációjának generálására. A ChatDev keretrendszer LLM-eket használ a néhány pillanat alatti promptok kontextuson belüli példákkal történő kihasználására a dokumentumok létrehozásához. A CTO arra utasítja a programozót, hogy adja meg a környezeti függőségek konfigurálására vonatkozó utasításokat, és hozzon létre egy dokumentumot, mint például a „függőségi követelmények.txt”. Ezzel egyidejűleg a vezérigazgató közli a követelményeket és a rendszertervet a CPO-val, hogy elkészítse a termék felhasználói kézikönyvét. 

Eredmények

Szoftverstatisztika

A ChatDev keretrendszer teljesítményének elemzéséhez a fejlesztők csapata statisztikai elemzést végzett a keretrendszer által generált szoftveralkalmazásokon néhány kulcsfontosságú mérőszám alapján, beleértve az elhasznált tokenek, a párbeszédek teljes fordulatait, a képelemeket, a szoftverfájlokat, a verziófrissítéseket és még néhányat, és az eredmények a következők: az alábbi táblázat mutatja be. 

Időtartam elemzése

A ChatDev szoftvergyártási idejének vizsgálatához a különböző kéréspromptokhoz a fejlesztők időtartamelemzést is végeztek, és a különböző promptok fejlesztési idejének különbsége a hozzárendelt feladatok eltérő egyértelműségét és összetettségét tükrözi, és az eredményeket az alábbi ábra szemlélteti. . 

Esettanulmány

A következő ábra azt mutatja be, hogy a ChatDev egy Five in a Row vagy egy Gomoku játékot fejleszt. 

A bal szélső ábra a keretrendszer által létrehozott alapszoftvert GUI használata nélkül mutatja be. Amint az jól látható, a grafikus felhasználói felület nélküli alkalmazás korlátozott interaktivitást kínál, és a felhasználók csak a parancsterminálon keresztül játszhatják ezt a játékot. A következő ábra egy vizuálisan tetszetősebb játékot mutat be, amelyet grafikus felhasználói felület használatával hoztak létre, jobb felhasználói élményt és fokozott interaktivitást kínál egy lebilincselő játékkörnyezethez, amelyet a felhasználók sokkal jobban élvezhetnek. A tervező ügynök ezután további grafikákat hoz létre, hogy tovább javítsa a játékmenet használhatóságát és esztétikáját anélkül, hogy bármilyen funkcionalitást befolyásolna. Ha azonban az emberi felhasználók nem elégedettek a tervező által generált képpel, akkor lecserélhetik a képeket, miután a ChatDev keretrendszer befejezte a szoftvert. A ChatDev keretrendszer által kínált rugalmasság a képek manuális cseréjére lehetővé teszi a felhasználók számára, hogy preferenciáik szerint testreszabják az alkalmazásokat a fokozott interaktivitás és felhasználói élmény érdekében anélkül, hogy ez bármilyen módon befolyásolná a szoftver funkcionalitását. 

Záró gondolatok

Ebben a cikkben a ChatDevről beszéltünk LLM vagy Large Language Model alapú innovatív paradigma, amely a szoftverfejlesztési terület forradalmasítását célozza azáltal, hogy a fejlesztési folyamat minden fázisában megszünteti a speciális modellek iránti igényt. A ChatDev keretrendszer célja az LLM-keretrendszerek képességeinek kiaknázása a természetes nyelvi kommunikáció használatával a kulcsfontosságú szoftverfejlesztési folyamatok egységesítésére és egyszerűsítésére. A ChatDev keretrendszer a csevegési lánc mechanizmust használja a szoftverfejlesztési folyamat felosztására szekvenciális szubatomi feladatokra, így lehetővé teszi a szemcsés fókuszt, és elősegíti a kívánt kimeneteket minden szubatomi feladathoz. 

"Szakmailag mérnök, szívből író". Kunal egy műszaki író, aki mélyen szereti és érti az AI-t és az ML-t, és elkötelezett a komplex fogalmak egyszerűsítése ezeken a területeken lebilincselő és informatív dokumentációi révén.