taló ChatDev : Agents comunicatius per al desenvolupament de programari - Unite.AI
Connecteu-vos amb nosaltres

Intel·ligència Artificial

ChatDev: Agents comunicatius per al desenvolupament de programari

mm
actualitzat on
ChatDev: Desenvolupament de programari assistit per IA

La indústria del desenvolupament de programari és un domini que sovint es basa tant en la consulta com en la intuïció, caracteritzat per estratègies complexes de presa de decisions. A més, el desenvolupament, manteniment i operació de programari requereixen un enfocament disciplinat i metòdic. És habitual que els desenvolupadors de programari basen les decisions en la intuïció més que en la consulta, depenent de la complexitat del problema. En un esforç per millorar l'eficiència de l'enginyeria del programari, inclosa l'eficàcia del programari i la reducció dels costos de desenvolupament, els científics estan explorant l'ús de marcs basats en l'aprenentatge profund per fer front a diverses tasques dins del procés de desenvolupament de programari. Amb els recents desenvolupaments i avenços en els sectors de l'aprenentatge profund i la IA, els desenvolupadors estan buscant maneres de transformar els processos i pràctiques de desenvolupament de programari. Ho estan fent utilitzant dissenys sofisticats implementats en diferents etapes del procés de desenvolupament de programari.

Avui parlarem de ChatDev, un enfocament innovador basat en el gran model de llenguatge (LLM) que pretén revolucionar el camp del desenvolupament de programari. Aquest paradigma pretén eliminar la necessitat de models especialitzats durant cada fase del procés de desenvolupament. El marc de ChatDev aprofita les capacitats dels marcs de LLM, utilitzant la comunicació en llenguatge natural per unificar i racionalitzar els processos clau de desenvolupament de programari.

En aquest article, explorarem ChatDev, una empresa virtual especialitzada en desenvolupament de programari. ChatDev adopta el model de cascada i divideix meticulosament el procés de desenvolupament de programari en quatre etapes principals.

  1. Disseny. 
  2. Codificació. 
  3. Proves. 
  4. Documentació. 

Cadascuna d'aquestes etapes desplega un equip d'agents virtuals com ara programadors de codi o provadors que col·laboren entre ells mitjançant diàlegs que donen lloc a un flux de treball perfecte. La cadena de xat funciona com a facilitadora i desglossa cada etapa del procés de desenvolupament en subtasques atòmiques, permetent així la doble funció, permetent propostes i validació de solucions mitjançant comunicacions conscients del context que permeten als desenvolupadors resoldre eficaçment les subtasques especificades. 

ChatDev: Desenvolupament de programari assistit per IA

L'anàlisi instrumental de ChatDev demostra que el marc de ChatDev no només és extremadament eficaç per completar el procés de desenvolupament de programari, sinó que és extremadament rendible i completa tot el procés de desenvolupament de programari en poc menys d'un dòlar. A més, el marc no només identifica, sinó que també alleuja les vulnerabilitats potencials, rectifica les al·lucinacions potencials, tot mantenint una alta eficiència i rendibilitat. 

ChatDev: una introducció al desenvolupament de programari basat en LLM

Tradicionalment, la indústria del desenvolupament de programari és aquella que es basa en un enfocament disciplinat i metòdic no només per desenvolupar les aplicacions, sinó també per mantenir-les i operar-les. Tradicionalment, un procés de desenvolupament de programari típic és un procés minuciós molt complex, complex i que requereix temps i llargs cicles de desenvolupament, ja que hi ha múltiples rols implicats en el procés de desenvolupament, com ara la coordinació dins de l'organització, l'assignació de tasques, l'escriptura de codi, etc. prova i, finalment, documentació. 

En els últims anys, amb l'ajuda de LLM o grans models de llenguatge, la comunitat d'IA ha assolit fites significatives en els camps de la visió per ordinador i el processament del llenguatge natural, i després de la formació sobre paradigmes de "predicció de la paraula següent", els models de llenguatge grans han demostrat bé la seva capacitat per retornar un rendiment eficient en una àmplia gamma de tasques posteriors. com la traducció automàtica, la resposta a preguntes i la generació de codi. 

Tot i que els grans models de llenguatge poden escriure codi per a tot el programari, tenen un inconvenient important: codi al·lucinacions, que és força semblant a les al·lucinacions a les quals s'enfronten els marcs de processament del llenguatge natural. Les al·lucinacions de codi poden incloure problemes com ara errors no descoberts, dependències que falten i implementacions de funcions incompletes. Hi ha dues causes principals de les al·lucinacions del codi. 

  • Falta d'especificació de la tasca: Quan es genera el codi de programari en un sol pas, no definir l'especificitat de la tasca confon els LLM ja que les tasques del procés de desenvolupament de programari com ara l'anàlisi dels requisits de l'usuari o la selecció del llenguatge de programació preferit sovint proporcionen un pensament guiat, una cosa que falta a l'alt nivell. -Tasques de nivell gestionades per aquests LLM. 
  • Falta d'interrogatori : Els riscos significatius arriben quan no es realitza un examen creuat, especialment durant els processos de presa de decisions. 

ChatDev té com a objectiu resoldre aquests problemes i facilitar que els LLM tinguin el poder de crear aplicacions de programari d'última generació i efectives mitjançant la creació d'una empresa virtual per al desenvolupament de programari que estableixi el model de cascada i divideix meticulosament el procés de desenvolupament de programari en quatre principals. etapes,

  1. Disseny. 
  2. Codificació. 
  3. Proves. 
  4. Documentació. 

Cadascuna d'aquestes etapes desplega un equip d'agents virtuals com ara programadors de codi o provadors que col·laboren entre ells mitjançant diàlegs que donen lloc a un flux de treball perfecte. A més, ChatDev fa ús d'una cadena de xat que funciona com a facilitador i desglossa cada etapa del procés de desenvolupament en subtasques atòmiques, permetent així un doble rol, permetent propostes i validació de solucions mitjançant comunicacions conscients del context que permeten als desenvolupadors resoldre les subtasques especificades. La cadena de xat consta de diversos nodes on cada node individual representa una subtasca específica, i aquests dos rols participen en debats conscients del context de diversos torns per no només proposar, sinó també validar les solucions. 

En aquest enfocament, el marc de ChatDev analitza primer els requisits d'un client, genera idees creatives, dissenya i implementa sistemes prototipus, identifica i aborda problemes potencials, crea gràfics atractius, explica la informació de depuració i genera els manuals d'usuari. Finalment, el marc de ChatDev ofereix el programari a l'usuari juntament amb el codi font, els manuals d'usuari i les especificacions de l'entorn de dependència. 

ChatDev: Arquitectura i Treball

Ara que tenim una breu introducció a ChatDev, fem una ullada a l'arquitectura i el funcionament del marc de ChatDev començant per la cadena de xat. 

Cadena de xat

Com hem esmentat a la secció anterior, el marc de ChatDev utilitza un mètode en cascada per al desenvolupament de programari que divideix el procés de desenvolupament de programari en quatre fases que inclouen disseny, codificació, prova i documentació. Cadascuna d'aquestes fases té un paper únic en el procés de desenvolupament, i hi ha una necessitat d'una comunicació eficaç entre elles, i hi ha possibles reptes que s'enfronten a l'hora d'identificar les persones amb les quals participar i determinar la seqüència d'interaccions. 

Per abordar aquest problema, el marc de ChatDev utilitza Chat Chain, una arquitectura generalitzada que desglossa cada fase en un xat subatòmic, amb cadascuna d'aquestes fases centrada en el joc de rols orientat a tasques que implica rols duals. La sortida desitjada per al xat és un component vital per al programari objectiu, i s'aconsegueix com a resultat de la col·laboració i l'intercanvi d'instruccions entre els agents que participen en el procés de desenvolupament. El paradigma de la cadena de xat per a la resolució de tasques intermèdies s'il·lustra a la imatge següent. 

Per a cada xat individual, un instructor primer inicia les instruccions i després guia el diàleg cap a la finalització de la tasca i, mentrestant, els assistents segueixen les instruccions donades per l'instructor, proporcionen solucions ideals i participen en discussions sobre la viabilitat. de la solució. A continuació, l'instructor i l'agent inicien diàlegs de diversos torns fins que arriben a un consens i consideren que la tasca s'ha realitzat amb èxit. La cadena de cadena ofereix als usuaris una visió transparent del procés de desenvolupament, il·lumina el camí per prendre decisions i ofereix oportunitats per depurar els errors quan sorgeixen, que permet als usuaris finals analitzar i diagnosticar els errors, inspeccionar les sortides intermèdies, i intervenir en el procés si es considera necessari. Mitjançant la incorporació d'una cadena de xat, el marc de ChatDev és capaç de centrar-se en cada subtasca específica a una escala granular que no només facilita la col·laboració efectiva entre els agents, sinó que també dóna com a resultat l'assoliment ràpid dels resultats requerits. 

Disseny

En la fase de disseny, el marc de ChatDev requereix una idea inicial com a entrada del client humà, i hi ha tres rols predefinits en aquesta etapa. 

  1. CEO o conseller delegat. 
  2. CPO o director de producte. 
  3. CTO o director tècnic. 

La cadena de xat entra en joc dividint la fase de disseny en tasques de xat subatòmics seqüencials que inclouen el llenguatge de programació (CTO i CEO) i la modalitat del programari objectiu (CPO i CEO). La fase de disseny implica tres mecanismes clau: l'assignació de rols o especialització de rols, el flux de memòria i l'auto-reflexió. 

Assignació de rols

A cada agent del marc de desenvolupament de xat se li assigna una funció mitjançant missatges especials o indicacions especials durant el procés de joc de rol. A diferència d'altres models de llenguatge conversacional, el marc de ChatDev es limita únicament a iniciar els escenaris de joc de rol entre els agents. Aquestes indicacions s'utilitzen per assignar rols als agents abans dels diàlegs. 

Inicialment, l'instructor assumeix les responsabilitats del CEO i es dedica a la planificació interactiva, mentre que les responsabilitats del CPO les gestiona l'agent que executa les tasques i proporciona les respostes necessàries. El marc utilitza "incitació inicial” per a l'especialització de rols que permeti als agents complir les seves funcions de manera eficaç. Les indicacions de l'assistent i de l'instructor consten de detalls vitals sobre els rols i les tasques designats, els criteris de terminació, els protocols de comunicació i diverses limitacions que tenen com a objectiu evitar comportaments no desitjats com bucles infinits, respostes poc informatives i redundància d'instruccions. 

Flux de memòria

El flux de memòria és un mecanisme utilitzat pel marc de ChatDev que manté un registre de conversa complet dels diàlegs anteriors d'un agent i ajuda en el procés de presa de decisions que segueix d'una manera conscient de les emissions. El marc de ChatDev utilitza indicacions per establir els protocols de comunicació necessaris. Per exemple, quan les parts implicades arriben a un consens, un missatge final que compleix un requisit de format específic com ( : Aplicació d'escriptori”). Per garantir el compliment del format designat, el marc fa un seguiment continuat i, finalment, permet que el diàleg actual arribi a una conclusió. 

Reflexió personal

Els desenvolupadors del marc de ChatDev han observat situacions en què les dues parts implicades havien arribat a un consens mutu, però els protocols de comunicació predefinits no es van activar. Per abordar aquests problemes, el El marc de ChatDev introdueix un mecanisme d'autoreflexió que ajuda en la recuperació i extracció de records. Per implementar el mecanisme d'autoreflexió, el marc de ChatDev inicia un xat nou i nou allistant el "pseudo jo" com a nou interrogador. El "pseudo jo" analitza els diàlegs anteriors i els registres històrics i informa a l'assistent actual, a continuació, sol·licita un resum d'informació concloent i digne d'acció, tal com es mostra a la figura següent. 

Amb l'ajuda del mecanisme d'autoajuda, s'anima l'assistent de ChatDev a reflexionar i analitzar les decisions que ha proposat. 

Codificació

Hi ha tres rols predefinits a la fase de codificació, és a dir, el CTO, el programador i el dissenyador d'art. Com és habitual, el mecanisme de la cadena de xat divideix la fase de codificació en tasques subatòmiques individuals, com ara generar codis (programador i CTO) o dissenyar una GUI. o interfície gràfica d'usuari (programador i dissenyador). Aleshores, el CTO indica al programador que utilitzi el format de reducció per implementar un sistema de programari després del qual el dissenyador d'art proposa una GUI fàcil d'utilitzar i interactiva que fa ús d'icones gràfiques per interactuar amb els usuaris en lloc de confiar en ordres tradicionals basades en text. 

Gestió de codis

El marc de ChatDev utilitza llenguatges de programació orientats a objectes com Python, Java i C++ per gestionar sistemes de programari complexos perquè la modularitat d'aquests llenguatges de programació permet l'ús d'objectes autònoms que no només ajuden a la resolució de problemes, sinó també al desenvolupament col·laboratiu. , i també ajuda a eliminar les redundàncies reutilitzant els objectes mitjançant el concepte d'herència. 

Instruccions de pensament

Els mètodes tradicionals de resposta a preguntes sovint donen lloc a informació irrellevant o inexactituds, especialment quan es genera codi, ja que proporcionar instruccions ingènues pot provocar al·lucinacions de LLM i es pot convertir en un problema difícil. Per fer front a aquest problema, el marc de ChatDev introdueix el mecanisme d'"instruccions de pensament" que s'inspira en les indicacions de la cadena de pensament. El mecanisme de "instruccions de pensament" aborda explícitament els pensaments individuals de resolució de problemes inclosos a les instruccions, de manera similar a la resolució de tasques de manera seqüencial i organitzada. 

Proves

Escriure un codi sense errors en el primer intent és un repte no només per a LLMs, però també per als programadors humans, i en lloc de descartar completament el codi incorrecte, els programadors analitzen el seu codi per identificar els errors i rectificar-los. La fase de prova al marc de ChatDev es divideix en tres rols: programador, provador i revisor. El procés de prova es divideix a més en dues tasques subatòmiques seqüencials: Revisió entre iguals o depuració estàtica (Revisor i Programador), i Prova del sistema o depuració dinàmica (Programador i Tester). La depuració estàtica o la revisió entre iguals analitza el codi font per identificar errors, mentre que la depuració dinàmica o la prova del sistema verifica l'execució del programari mitjançant diverses proves que el programador realitza mitjançant un intèrpret. La depuració dinàmica se centra principalment en les proves de caixa negra per avaluar les aplicacions. 

documentació

Després que el marc de ChatDev s'hagi fet amb les fases de disseny, codificació i prova, empra quatre agents, a saber, el CEO, el CTO, el CPO i el programador per generar la documentació del projecte de programari. El marc de ChatDev utilitza LLM per aprofitar les indicacions de pocs cops amb exemples en context per generar els documents. El CTO indica al programador que proporcioni les instruccions per a la configuració de les dependències ambientals i que creï un document com "dependency requirements.txt". Simultàniament, els requisits i el disseny del sistema són comunicats al CPO pel CEO, per generar el manual d'usuari del producte. 

Resultats

Estadístiques de programari

Per analitzar el rendiment del marc de ChatDev, l'equip de desenvolupadors va realitzar una anàlisi estadística de les aplicacions de programari generades pel marc sobre la base d'unes quantes mètriques clau, com ara fitxes consumides, torns totals de diàleg, actius d'imatge, fitxers de programari, actualitzacions de versions i uns quants més, i els resultats són demostrat a la taula següent. 

Anàlisi de durada

Per examinar el temps de producció de programari de ChatDev per a diferents sol·licituds de sol·licitud, els desenvolupadors també van realitzar una anàlisi de durada i la diferència en el temps de desenvolupament de diferents indicacions reflecteix la claredat i la complexitat variables de les tasques assignades, i els resultats es mostren a la figura següent. . 

Estudi de casos

La figura següent mostra ChatDev desenvolupant un joc Five in a Row o Gomoku. 

La figura de l'esquerra mostra el programari bàsic creat pel marc sense utilitzar cap GUI. Com es pot veure clarament, l'aplicació sense cap GUI ofereix una interactivitat limitada i els usuaris només poden jugar a aquest joc mitjançant el terminal de comandaments. La següent figura mostra un joc més atractiu visualment creat amb l'ús de la GUI, ofereix una millor experiència d'usuari i una interactivitat millorada per a un entorn de joc atractiu que els usuaris poden gaudir molt més. Aleshores, l'agent dissenyador crea gràfics addicionals per millorar encara més la usabilitat i l'estètica del joc sense afectar cap funcionalitat. Tanmateix, si els usuaris humans no estan satisfets amb la imatge generada pel dissenyador, poden substituir les imatges després que el marc de ChatDev hagi completat el programari. La flexibilitat que ofereix el marc de ChatDev per substituir manualment les imatges permet als usuaris personalitzar les aplicacions segons les seves preferències per millorar la interactivitat i l'experiència de l'usuari sense afectar de cap manera la funcionalitat del programari. 

Consideracions finals

En aquest article, hem parlat de ChatDev, un LLM o gran model de llengua paradigma innovador basat que pretén revolucionar el camp del desenvolupament de programari eliminant la necessitat de models especialitzats durant cada fase del procés de desenvolupament. El marc de ChatDev pretén aprofitar les habilitats dels marcs de LLM mitjançant l'ús de la comunicació en llenguatge natural per unificar i racionalitzar els processos clau de desenvolupament de programari. El marc de ChatDev utilitza el mecanisme de la cadena de xat per dividir el procés de desenvolupament de programari en tasques subatòmiques seqüencials, permetent així un enfocament granular i promoure les sortides desitjades per a cada tasca subatòmica. 

"Enginyer de professió, escriptor de memòria". Kunal és un escriptor tècnic amb un profund amor i comprensió de la IA i el ML, dedicat a simplificar conceptes complexos en aquests camps mitjançant la seva documentació atractiva i informativa.