кочан ChatDev : Комуникационни агенти за разработка на софтуер - Unite.AI
Свържете се с нас

Изкуствен интелект

ChatDev : Комуникационни агенти за разработка на софтуер

mm
Обновено on
ChatDev : Разработка на софтуер с помощта на AI

Индустрията за разработка на софтуер е област, която често разчита както на консултации, така и на интуиция, характеризираща се със сложни стратегии за вземане на решения. Освен това разработването, поддръжката и експлоатацията на софтуер изискват дисциплиниран и методичен подход. Обичайно е разработчиците на софтуер да базират решенията си на интуиция, а не на консултация, в зависимост от сложността на проблема. В опит да подобрят ефективността на софтуерното инженерство, включително ефективността на софтуера и намалените разходи за разработка, учените проучват използването на рамки, базирани на дълбоко обучение, за справяне с различни задачи в процеса на разработка на софтуер. С последните разработки и напредък в секторите на дълбокото обучение и AI, разработчиците търсят начини да трансформират процесите и практиките за разработка на софтуер. Те правят това, като използват сложни проекти, внедрени на различни етапи от процеса на разработка на софтуер.

Днес ще обсъдим ChatDev, базиран на голям езиков модел (LLM), иновативен подход, който има за цел да революционизира областта на разработката на софтуер. Тази парадигма се стреми да елиминира необходимостта от специализирани модели по време на всяка фаза от процеса на разработка. Рамката ChatDev използва възможностите на рамките на LLM, като използва комуникация на естествен език, за да обедини и рационализира ключови процеси за разработка на софтуер.

В тази статия ще разгледаме ChatDev, компания с виртуално захранване, специализирана в разработката на софтуер. ChatDev приема модела на водопада и щателно разделя процеса на разработка на софтуер на четири основни етапа.

  1. Проектиране. 
  2. Кодиране. 
  3. Тестване. 
  4. Документация. 

Всеки от тези етапи разгръща екип от виртуални агенти като програмисти на код или тестери, които си сътрудничат помежду си, като използват диалози, които водят до безпроблемен работен процес. Веригата за чат работи като фасилитатор и разделя всеки етап от процеса на разработка на атомарни подзадачи, като по този начин позволява двойни роли, позволявайки предложения и валидиране на решения, използвайки комуникации, съобразени с контекста, което позволява на разработчиците ефективно да разрешават посочените подзадачи. 

ChatDev : Разработка на софтуер с помощта на AI

Инструменталният анализ на ChatDev демонстрира, че не само рамката на ChatDev е изключително ефективна за завършване на процеса на разработка на софтуер, но е изключително ефективна по отношение на разходите, както и че завършва целия процес на разработка на софтуер за малко под един долар. Освен това рамката не само идентифицира, но и облекчава потенциалните уязвимости, коригира потенциалните халюцинации, като същевременно поддържа висока ефективност и рентабилност. 

ChatDev : Въведение в разработването на софтуер, базирано на LLM

Традиционно индустрията за разработка на софтуер е тази, която е изградена върху основите на дисциплиниран и методичен подход не само за разработване на приложения, но и за поддръжката и работата с тях. Традиционно казано, типичният процес на разработка на софтуер е изключително сложен, комплексен и отнемащ време щателен процес с дълги цикли на разработка, тъй като има множество роли, включени в процеса на разработка, включително координация в рамките на организацията, разпределяне на задачи, писане на код, тестване и накрая документация. 

През последните няколко години с помощта на LLM или големи езикови модели, AI общността е постигнала значителни етапи в областта на компютърното зрение и обработката на естествения език и след обучение по парадигми за „предсказване на следваща дума“, Големите езикови модели добре демонстрираха способността си да възстановят ефективна производителност при широк набор от задачи надолу по веригата като машинен превод, отговаряне на въпроси и генериране на код. 

Въпреки че големите езикови модели могат да пишат код за целия софтуер, те имат основен недостатък: кодови халюцинации, което е доста подобно на халюцинациите, пред които са изправени рамките за обработка на естествен език. Халюцинациите на кода могат да включват проблеми като неоткрити грешки, липсващи зависимости и непълни реализации на функции. Има две основни причини за кодови халюцинации. 

  • Липса на спецификация на задачата: Когато генерирате софтуерния код в една единствена стъпка, липсата на дефиниране на спецификата на задачата обърква LLMs като задачи в процеса на разработка на софтуер, като например анализиране на потребителските изисквания или избор на предпочитания език за програмиране, често осигуряват насочено мислене, нещо, което липсва във високите -задачи на ниво, обработвани от тези LLM. 
  • Липса на кръстосан разпит : Съществуват значителни рискове, когато не се извършва кръстосан разпит, особено по време на процесите на вземане на решения. 

ChatDev има за цел да разреши тези проблеми и да улесни LLM със силата да създават най-съвременни и ефективни софтуерни приложения чрез създаване на виртуално задвижвана компания за разработка на софтуер, която установява водопадния модел и щателно разделя процеса на разработка на софтуер на четири основни етапи,

  1. Проектиране. 
  2. Кодиране. 
  3. Тестване. 
  4. Документация. 

Всеки от тези етапи разгръща екип от виртуални агенти като програмисти на код или тестери, които си сътрудничат помежду си, като използват диалози, които водят до безпроблемен работен процес. Освен това ChatDev използва верига за чат, която работи като фасилитатор, и разбива всеки етап от процеса на разработка на атомарни подзадачи, като по този начин позволява двойни роли, позволявайки предложения и валидиране на решения, използвайки комуникации, съобразени с контекста, което позволява на разработчиците ефективно разрешаване на посочените подзадачи. Веригата за чат се състои от няколко възела, където всеки отделен възел представлява конкретна подзадача, и тези две роли участват в многооборотни контекстно-съобразени дискусии, за да не само предложат, но и да валидират решенията. 

При този подход рамката ChatDev първо анализира изискванията на клиента, генерира творчески идеи, проектира и внедрява прототипни системи, идентифицира и адресира потенциални проблеми, създава привлекателни графики, обяснява информацията за отстраняване на грешки и генерира ръководства за потребителя. И накрая, рамката ChatDev доставя софтуера на потребителя заедно с изходния код, ръководствата за потребителя и спецификациите на средата на зависимост. 

ChatDev: Архитектура и работа

Сега, след като имаме кратко въведение в ChatDev, нека да разгледаме архитектурата и работата на рамката на ChatDev, като започнем с Chat Chain. 

Верига за чат

Както споменахме в предишния раздел, рамката ChatDev използва метод на водопад за разработка на софтуер, който разделя процеса на разработка на софтуер на четири фази, включително проектиране, кодиране, тестване и документиране. Всяка от тези фази има уникална роля в процеса на развитие и има нужда от ефективна комуникация между тях и съществуват потенциални предизвикателства, пред които да се изправят при идентифицирането на лица, с които да се ангажират, и определянето на последователността на взаимодействията. 

За да се справи с този проблем, рамката ChatDev използва Chat Chain, обобщена архитектура, която разделя всяка фаза на субатомен чат, като всяка от тези фази се фокусира върху ролева игра, ориентирана към задачи, която включва двойни роли. Желаният изход за чата представлява жизненоважен компонент за целевия софтуер и се постига в резултат на сътрудничество и обмен на инструкции между агентите, участващи в процеса на разработка. Парадигмата на чат веригата за междинно решаване на задачи е илюстрирана на изображението по-долу. 

За всеки отделен чат инструкторът първо инициира инструкциите и след това насочва диалога към изпълнение на задачата, а междувременно асистентите следват инструкциите, дадени от инструктора, предоставят идеални решения и участват в дискусии относно осъществимостта на разтвора. След това инструкторът и агентът участват в диалози с няколко хода, докато стигнат до консенсус и считат, че задачата е изпълнена успешно. Верижната верига предоставя на потребителите прозрачен поглед върху процеса на разработка, хвърля светлина върху пътя за вземане на решения и предлага възможности за отстраняване на грешки, когато възникнат, което позволява на крайните потребители да анализират и диагностицират грешките, да проверяват междинните изходи, и да се намеси в процеса, ако сметне за необходимо. Чрез включването на верига за чат, рамката на ChatDev е в състояние да се фокусира върху всяка конкретна подзадача в гранулиран мащаб, който не само улеснява ефективното сътрудничество между агентите, но също така води до бързо постигане на необходимите резултати. 

Проектиране

Във фазата на проектиране рамката ChatDev изисква първоначална идея като вход от човешкия клиент и има три предварително дефинирани роли на този етап. 

  1. Главен изпълнителен директор или главен изпълнителен директор. 
  2. CPO или главен продуктов директор. 
  3. CTO или главен технически директор. 

След това влиза в действие веригата за чат, като разделя фазата на проектиране на последователни субатомни задачи за чат, които включват езика за програмиране (CTO и CEO) и модалността на целевия софтуер (CPO и CEO). Фазата на проектиране включва три ключови механизма: присвояване на роли или специализация на роли, поток от памет и саморефлексия. 

Назначаване на роли

На всеки агент в рамката на Chat Dev се присвоява роля, като се използват специални съобщения или специални подкани по време на процеса на ролева игра. За разлика от други модели на разговорен език, рамката на ChatDev се ограничава единствено до иницииране на сценарии за ролева игра между агентите. Тези подкани се използват за присвояване на роли на агентите преди диалозите. 

Първоначално инструкторът поема отговорностите на главния изпълнителен директор и се ангажира с интерактивно планиране, докато отговорностите на CPO се поемат от агента, който изпълнява задачите и предоставя необходимите отговори. Рамката използва „начален подтик” за специализация на ролите, която позволява на агентите да изпълняват ролите си ефективно. Подканите за асистент и инструктор се състоят от жизненоважни подробности относно определените роли и задачи, критерии за прекратяване, комуникационни протоколи и няколко ограничения, които имат за цел да предотвратят нежелано поведение като безкрайни цикли, неинформативни отговори и излишък на инструкции. 

Поток от памет

Потокът от памет е механизъм, използван от рамката на ChatDev, който поддържа изчерпателен запис на разговори на предишните диалози на агент и подпомага процеса на вземане на решение, който следва по начин, съобразен с изказването. Рамката ChatDev използва подкани за установяване на необходимите комуникационни протоколи. Например, когато участващите страни постигнат консенсус, крайно съобщение, което отговаря на специфично изискване за форматиране като ( : Настолно приложение”). За да гарантира съответствие с определения формат, рамката непрекъснато наблюдава и накрая позволява текущият диалог да стигне до заключение. 

Самоотражение

Разработчиците на рамката ChatDev са наблюдавали ситуации, при които и двете участващи страни са постигнали взаимен консенсус, но предварително дефинираните комуникационни протоколи не са били задействани. За да се справят с тези проблеми, Рамката ChatDev въвежда механизъм за саморефлексия който помага при извличането и извличането на спомени. За да приложи механизма за саморефлексия, рамката на ChatDev инициира нов и нов чат, като включва „псевдо аз“ като нов питащ. „Псевдо себе си“ анализира предишни диалози и исторически записи и информира текущия асистент, след което изисква обобщение на убедителна и заслужаваща действие информация, както е показано на фигурата по-долу. 

С помощта на механизма за самопомощ асистентът на ChatDev се насърчава да отразява и анализира решенията, които е предложил. 

Кодиране

Има три предварително дефинирани роли във фазата на кодиране, а именно CTO, програмист и арт дизайнер. Както обикновено, механизмът на веригата за чат разделя фазата на кодиране на отделни субатомни задачи като генериране на кодове (програмист & CTO) или разработване на GUI или графичен потребителски интерфейс (програмист и дизайнер). След това техническият директор инструктира програмиста да използва формата на маркиране, за да внедри софтуерна система, след което арт дизайнерът предлага удобен за потребителя и интерактивен GUI, който използва графични икони за взаимодействие с потребителите, вместо да разчита на традиционни текстови команди. 

Управление на кода

Рамката ChatDev използва обектно-ориентирани езици за програмиране като Python, Java и C++ за работа със сложни софтуерни системи, тъй като модулността на тези езици за програмиране позволява използването на самостоятелни обекти, които не само помагат при отстраняване на неизправности, но и при съвместна разработка , а също така помага за премахване на излишъци чрез повторно използване на обектите чрез концепцията за наследяване. 

Мислени инструкции

Традиционните методи за отговаряне на въпроси често водят до неуместна информация или неточности, особено при генериране на код, тъй като предоставянето на наивни инструкции може да доведе до халюцинации за LLM и това може да се превърне в предизвикателство. За да се справи с този проблем, рамката на ChatDev въвежда механизма „инструкции за мислене“, който черпи вдъхновение от подкани от верига от мисли. Механизмът „мисловни инструкции“ изрично адресира отделни мисли за решаване на проблеми, включени в инструкциите, подобно на решаване на задачи по последователен и организиран начин. 

Тестване

Написването на код без грешки от първия опит е предизвикателство не само за LLM, но също и за човешките програмисти и вместо напълно да изхвърлят неправилния код, програмистите анализират своя код, за да идентифицират грешките и да ги коригират. Фазата на тестване в рамките на ChatDev е разделена на три роли: програмист, тестер и рецензент. Процесът на тестване е допълнително разделен на две последователни субатомни задачи: Партньорска проверка или статично отстраняване на грешки (Рецензент и програмист) и Системно тестване или динамично отстраняване на грешки (Програмист и Тестер). Статичното отстраняване на грешки или партньорската проверка анализира изходния код, за да идентифицира грешки, докато динамичното отстраняване на грешки или системното тестване проверява изпълнението на софтуера чрез различни тестове, които се провеждат с помощта на интерпретатор от програмиста. Динамичното отстраняване на грешки се фокусира основно върху тестване в черна кутия за оценка на приложенията. 

документация

След като рамката на ChatDev приключи с фазите на проектиране, кодиране и тестване, тя наема четирима агенти, а именно главен изпълнителен директор, технически директор, CPO и програмист, за да генерират документацията за софтуерния проект. Рамката ChatDev използва LLMs, за да се възползва от кратки подкани с примери в контекста за генериране на документите. Техническият директор инструктира програмиста да предостави инструкциите за конфигуриране на зависимостите от околната среда и да създаде документ като „dependency requirements.txt“. Едновременно с това изискванията и дизайнът на системата се съобщават на CPO от главния изпълнителен директор, за да се генерира ръководството за потребителя на продукта. 

Резултати

Софтуерна статистика

За да анализирате ефективността на рамката ChatDev, екипът от разработчици проведе статистически анализ на софтуерните приложения, генерирани от рамката, въз основа на няколко ключови показателя, включително консумирани токени, общи редове на диалог, активи на изображения, софтуерни файлове, актуализации на версии и още няколко, и резултатите са демонстрирани в таблицата по-долу. 

Анализ на продължителността

За да проучат производственото време на ChatDev за софтуер за различни подкани за заявки, разработчиците също проведоха анализ на продължителността и разликата във времето за разработка на различни подкани отразява различната яснота и сложност на възложените задачи, а резултатите са демонстрирани на фигурата по-долу . 

Казус

Следващата фигура демонстрира ChatDev, разработващ Five in a Row или игра Gomoku. 

Най-лявата фигура демонстрира основния софтуер, създаден от рамката без използване на GUI. Както може да се види ясно, приложението без GUI предлага ограничена интерактивност и потребителите могат да играят тази игра само през командния терминал. Следващата фигура демонстрира по-визуално привлекателна игра, създадена с помощта на GUI, предлага по-добро потребителско изживяване и подобрена интерактивност за ангажираща среда за игра, която може да се хареса много повече от потребителите. След това дизайнерският агент създава допълнителни графики, за да подобри допълнително използваемостта и естетиката на играта, без да засяга функционалността. Въпреки това, ако човешките потребители не са доволни от изображението, генерирано от дизайнера, те могат да заменят изображенията, след като рамката на ChatDev завърши софтуера. Гъвкавостта, предлагана от рамката на ChatDev за ръчно заместване на изображенията, позволява на потребителите да персонализират приложенията според предпочитанията си за подобрена интерактивност и потребителско изживяване, без да се засяга по никакъв начин функционалността на софтуера. 

Заключителни мисли

В тази статия говорихме за ChatDev, an LLM или голям езиков модел основана на иновативна парадигма, която има за цел да революционизира областта на разработката на софтуер чрез елиминиране на изискването за специализирани модели по време на всяка фаза от процеса на разработка. Рамката ChatDev има за цел да използва възможностите на рамките на LLM чрез използване на комуникация на естествен език за унифициране и рационализиране на ключови процеси за разработка на софтуер. Рамката ChatDev използва механизма на веригата за чат, за да раздели процеса на разработка на софтуер на последователни субатомни задачи, като по този начин позволява гранулиран фокус и насърчава желаните резултати за всяка субатомна задача. 

„Инженер по професия, писател по душа“. Kunal е технически писател с дълбока любов и разбиране на AI и ML, посветен на опростяването на сложни концепции в тези области чрез своята ангажираща и информативна документация.