никулец ChatDev : Комуникативни агенти за развој на софтвер - Unite.AI
Поврзете се со нас

Вештачка интелигенција

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

mm
Ажурирани on
ChatDev: Развој на софтвер со помош на AI

Индустријата за развој на софтвер е домен кој често се потпира и на консултации и на интуиција, што се карактеризира со сложени стратегии за донесување одлуки. Понатаму, развојот, одржувањето и работењето на софтверот бараат дисциплиниран и методичен пристап. Вообичаено е развивачите на софтвер да ги засноваат одлуките на интуиција наместо консултации, во зависност од сложеноста на проблемот. Во обид да ја подобрат ефикасноста на софтверското инженерство, вклучувајќи ја ефективноста на софтверот и намалените трошоци за развој, научниците истражуваат употреба на рамки засновани на длабоко учење за да се справат со различни задачи во процесот на развој на софтвер. Со неодамнешниот развој и напредок во секторите за длабоко учење и вештачка интелигенција, програмерите бараат начини да ги трансформираат процесите и практиките за развој на софтвер. Тие го прават тоа со користење на софистицирани дизајни имплементирани во различни фази од процесот на развој на софтвер.

Денес, ќе разговараме за ChatDev, иновативен пристап базиран на голем јазичен модел (LLM), кој има за цел да го револуционизира полето на развој на софтвер. Оваа парадигма се обидува да ја елиминира потребата од специјализирани модели во текот на секоја фаза од процесот на развој. Рамката ChatDev ги користи можностите на LLM рамки, користејќи ја комуникацијата на природен јазик за да ги обедини и рационализира клучните процеси за развој на софтвер.

Во оваа статија, ќе го истражиме ChatDev, компанија со виртуелна енергија специјализирана за развој на софтвер. ChatDev го прифаќа моделот на водопад и прецизно го дели процесот на развој на софтвер во четири основни фази.

  1. Дизајнирање. 
  2. Кодирање. 
  3. Тестирање. 
  4. Документација. 

Секоја од овие фази распоредува тим од виртуелни агенти како што се програмери на код или тестери кои соработуваат едни со други користејќи дијалози што резултираат со беспрекорен работен тек. Синџирот за разговор работи како олеснувач и ја разложува секоја фаза од развојниот процес на атомски подзадачи, со што овозможува двојни улоги, овозможувајќи предлози и валидација на решенија користејќи комуникации кои се свесни за контекстот што им овозможува на програмерите ефективно да ги решат наведените подзадачи. 

ChatDev: Развој на софтвер со помош на AI

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

ChatDev: Вовед во развој на софтвер со погон на LLM

Традиционално, индустријата за развој на софтвер е онаа која е изградена врз темелите на дисциплиниран и методичен пристап не само за развивање на апликациите, туку и за одржување и нивно работење. Традиционално кажано, типичен процес на развој на софтвер е многу сложен, сложен и прецизен процес кој одзема време со долги развојни циклуси, бидејќи има повеќе улоги вклучени во процесот на развој, вклучувајќи координација во организацијата, распределба на задачи, пишување код, тестирање, и конечно, документација. 

Во последните неколку години, со помош на LLM или модели на големи јазици, заедницата за вештачка интелигенција постигна значителни пресвртници во областа на компјутерската визија и обработката на природниот јазик, а по обуката за парадигми за „предвидување на следниот збор“, моделите на големи јазици добро ја покажаа својата способност да враќаат ефикасни перформанси на широк спектар на низводно задачи како машински превод, одговарање на прашања и генерирање код. 

Иако моделите на големи јазици можат да напишат код за целиот софтвер, тие имаат голем недостаток: кодни халуцинации, што е сосема слично на халуцинациите со кои се соочуваат рамки за обработка на природниот јазик. Код халуцинации може да вклучуваат прашања како неоткриени грешки, исчезнати зависности и нецелосни имплементации на функции. Постојат две главни причини за халуцинации со кодови. 

  • Недостаток на спецификација за задача: При генерирање на софтверскиот код во еден чекор, недефинирањето на специфичноста на задачата ги збунува LLM како задачи во процесот на развој на софтвер, како што е анализата на барањата на корисникот или изборот на претпочитаниот програмски јазик, честопати обезбедува водено размислување, нешто што недостасува од високото -задачи на ниво со кои се справуваат овие 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 и извршен директор) и модалитетот на целниот софтвер (CPO и CEO). Фазата на дизајнирање вклучува три клучни механизми: доделување улоги или специјализација на улоги, тек на меморија и саморефлексија. 

Доделување улоги

На секој агент во рамката Chat Dev му е доделена улога користејќи специјални пораки или специјални потсетници за време на процесот на играње улоги. За разлика од другите модели на разговорни јазици, рамката ChatDev се ограничува само на иницирање сценарија за играње улоги помеѓу агентите. Овие потсетници се користат за доделување улоги на агентите пред дијалозите. 

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

Мемориски тек

Меморискиот поток е механизам што го користи рамката ChatDev кој одржува сеопфатен разговорен запис за претходните дијалози на агентот и помага во процесот на донесување одлуки што следи на начин свесен за исказот. Рамката ChatDev користи потсетници за воспоставување на потребните протоколи за комуникација. На пример, кога вклучените страни ќе постигнат консензус, завршна порака која задоволува одредено барање за форматирање како ( : Десктоп апликација“). За да се обезбеди усогласеност со назначениот формат, рамката континуирано врши мониторинг и конечно овозможува тековниот дијалог да дојде до заклучок. 

Саморефлексија

Програмерите на рамката ChatDev забележале ситуации кога двете вклучени страни постигнале заеднички консензус, но претходно дефинираните протоколи за комуникација не биле активирани. За да се справи со овие прашања, на Рамката ChatDev воведува механизам за саморефлексија што помага во пронаоѓањето и извлекувањето на спомените. За да се имплементира механизмот за саморефлексија, рамката ChatDev иницира нов и свеж разговор со вклучување на „псевдо себе“ како нов прашалник. „Псевдо јас“ ги анализира претходните дијалози и историски записи и го информира тековниот асистент, по што бара резиме на конечни и вредни информации за акција како што е прикажано на сликата подолу. 

Со помош на механизмот за самопомош, асистентот ChatDev се охрабрува да ги рефлектира и анализира одлуките што ги предложил. 

Кодирање

Постојат три предефинирани улоги во фазата на кодирање, имено CTO, програмер и уметнички дизајнер. Како и обично, механизмот на синџирот на разговор ја дели фазата на кодирање на поединечни субатомски задачи како што се генерирање кодови (програмер и CTO) или да се осмисли GUI или графички кориснички интерфејс (програмер и дизајнер). Потоа, CTO му наредува на програмерот да го користи форматот за обележување за да имплементира софтверски систем, по што уметничкиот дизајнер предлага кориснички и интерактивен GUI што користи графички икони за да комуницира со корисниците наместо да се потпира на традиционалните команди базирани на текст. 

Управување со кодови

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

Инструкции за размислување

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

Тестирање

Пишувањето код без грешки во првиот обид е предизвик не само за LLMs, но исто така и за човечките програмери, и наместо целосно да го отфрлат неточниот код, програмерите го анализираат нивниот код за да ги идентификуваат грешките и да ги поправат. Фазата на тестирање во рамката ChatDev е поделена на три улоги: програмер, тестер и рецензент. Процесот на тестирање е дополнително поделен на две последователни субатомски задачи: Преглед од колеги или статичко дебагирање (Рецензент и програмер) и Системско тестирање или динамичко дебагирање (програмер и тестер). Статичкото отстранување грешки или рецензијата од колеги го анализира изворниот код за да ги идентификува грешките, додека динамичкото дебагирање или системското тестирање го потврдува извршувањето на софтверот преку различни тестови што се спроведуваат со помош на преведувач од програмерот. Динамичкото дебагирање се фокусира првенствено на тестирање на црната кутија за да се проценат апликациите. 

Документација

Откако рамката ChatDev ќе заврши со фазите на дизајнирање, кодирање и тестирање, таа вработува четири агенти, имено извршниот директор, CTO, CPO и програмер за да ја генерира документацијата за софтверскиот проект. Рамката ChatDev користи LLM за да користи неколку потсетници со примери во контекст за генерирање на документите. CTO му дава инструкции на програмерот да ги обезбеди упатствата за конфигурација на еколошките зависности и да креира документ како „dependency requirements.txt“. Истовремено, барањата и дизајнот на системот се доставуваат до CPO од страна на извршниот директор, за да го генерира упатството за употреба за производот. 

Резултати

Софтвер статистика

За да се анализираат перформансите на рамката ChatDev, тимот на програмери спроведе статистичка анализа на софтверските апликации генерирани од рамката врз основа на неколку клучни метрики, вклучувајќи потрошени токени, вкупни вртења на дијалог, средства со слики, софтверски датотеки, ажурирања на верзии и уште неколку, а резултатите се прикажан во табелата подолу. 

Анализа на времетраење

За да се испита времето на производство на ChatDev за софтвер за различни барања за барања, програмерите исто така спроведоа анализа на времетраењето, а разликата во времето на развој за различни инструкции ја одразува различната јасност и сложеност на доделените задачи, а резултатите се прикажани на сликата подолу . 

Студија на случај

Следната слика покажува како ChatDev развива пет по ред или игра Gomoku. 

Најлевата фигура го демонстрира основниот софтвер создаден од рамката без користење на никаков GUI. Како што може јасно да се види, апликацијата без никаков GUI нуди ограничена интерактивност, а корисниците можат да ја играат оваа игра само преку командниот терминал. Следната слика покажува визуелно попривлечна игра создадена со употреба на GUI, нуди подобро корисничко искуство и подобрена интерактивност за привлечна средина за играње во која корисниците можат многу повеќе да уживаат. Дизајнерскиот агент потоа создава дополнителна графика за дополнително да ја подобри употребливоста и естетиката на играта без да влијае на каква било функционалност. Меѓутоа, ако човечките корисници не се задоволни со сликата генерирана од дизајнерот, тие можат да ги заменат сликите откако рамката ChatDev ќе го заврши софтверот. Флексибилноста што ја нуди рамката ChatDev за рачно замена на сликите им овозможува на корисниците да ги приспособат апликациите според нивните преференции за подобрена интерактивност и корисничко искуство без да влијае на функционалноста на софтверот на кој било начин. 

Последни мисли

Во оваа статија, разговаравме за ChatDev, ан LLM или модел на голем јазик заснована иновативна парадигма која има за цел да го револуционизира полето за развој на софтвер со елиминирање на потребата за специјализирани модели во текот на секоја фаза од процесот на развој. Рамката ChatDev има за цел да ги искористи способностите на LLM рамки со користење на комуникација на природен јазик за да ги обедини и рационализира клучните процеси за развој на софтвер. Рамката ChatDev го користи механизмот на синџирот на разговор за да го раздели процесот на развој на софтвер во последователни субатомски задачи, со што се овозможува грануларен фокус и промовирање на посакуваните резултати за секоја субатомска задача. 

„Инженер по професија, писател напамет“. Кунал е технички писател со длабока љубов и разбирање за вештачката интелигенција и ML, посветен на поедноставување на сложените концепти во овие области преку неговата ангажирана и информативна документација.