stub ChatDev: Agenci komunikacyjni do tworzenia oprogramowania - Unite.AI
Kontakt z nami

Artificial Intelligence

ChatDev: Agenci komunikacyjni do tworzenia oprogramowania

mm
Zaktualizowano on
ChatDev: Tworzenie oprogramowania wspomaganego sztuczną inteligencją

Branża tworzenia oprogramowania to dziedzina, która często opiera się zarówno na konsultacjach, jak i intuicji, charakteryzując się skomplikowanymi strategiami podejmowania decyzji. Co więcej, rozwój, konserwacja i obsługa oprogramowania wymagają zdyscyplinowanego i metodycznego podejścia. Twórcy oprogramowania często opierają swoje decyzje na intuicji, a nie na konsultacjach, w zależności od złożoności problemu. Starając się zwiększyć efektywność inżynierii oprogramowania, w tym efektywność oprogramowania i obniżyć koszty jego rozwoju, naukowcy badają możliwość wykorzystania frameworków opartych na uczeniu głębokim do rozwiązywania różnych zadań w procesie tworzenia oprogramowania. W związku z najnowszymi osiągnięciami w sektorach głębokiego uczenia się i sztucznej inteligencji programiści szukają sposobów na przekształcenie procesów i praktyk tworzenia oprogramowania. Robią to, korzystając z wyrafinowanych projektów wdrażanych na różnych etapach procesu tworzenia oprogramowania.

Dzisiaj omówimy ChatDev, innowacyjne podejście oparte na modelu dużego języka (LLM), którego celem jest zrewolucjonizowanie dziedziny tworzenia oprogramowania. Paradygmat ten ma na celu wyeliminowanie potrzeby stosowania wyspecjalizowanych modeli na każdym etapie procesu rozwoju. Framework ChatDev wykorzystuje możliwości frameworków LLM, wykorzystując komunikację w języku naturalnym w celu ujednolicenia i usprawnienia kluczowych procesów tworzenia oprogramowania.

W tym artykule omówimy ChatDev, firmę opartą na technologii wirtualnej, specjalizującą się w tworzeniu oprogramowania. ChatDev przyjmuje model kaskadowy i skrupulatnie dzieli proces tworzenia oprogramowania na cztery podstawowe etapy.

  1. Projektowanie. 
  2. Kodowanie. 
  3. Testowanie. 
  4. Dokumentacja. 

Na każdym z tych etapów wdrażany jest zespół wirtualnych agentów, takich jak programiści kodu lub testerzy, którzy współpracują ze sobą za pomocą dialogów, co zapewnia płynny przepływ pracy. Łańcuch czatów działa jako facylitator i dzieli każdy etap procesu programowania na atomowe podzadania, umożliwiając w ten sposób podwójną rolę, umożliwiając proponowanie i walidację rozwiązań przy użyciu komunikacji kontekstowej, która pozwala programistom skutecznie rozwiązywać określone podzadania. 

ChatDev: Tworzenie oprogramowania wspomaganego sztuczną inteligencją

Analiza instrumentalna przeprowadzona przez ChatDev pokazuje, że framework ChatDev jest nie tylko niezwykle skuteczny w realizacji procesu tworzenia oprogramowania, ale jest także niezwykle opłacalny, a także umożliwia wykonanie całego procesu tworzenia oprogramowania za niecałego dolara. Co więcej, framework nie tylko identyfikuje, ale także łagodzi potencjalne słabe punkty, naprawia potencjalne halucynacje, a wszystko to przy zachowaniu wysokiej wydajności i opłacalności. 

ChatDev: wprowadzenie do tworzenia oprogramowania w oparciu o LLM

Tradycyjnie branża tworzenia oprogramowania to taka, która opiera się na zdyscyplinowanym i metodycznym podejściu nie tylko do tworzenia aplikacji, ale także do ich utrzymywania i obsługi. Tradycyjnie mówiąc, typowy proces tworzenia oprogramowania jest bardzo skomplikowanym, złożonym i czasochłonnym, skrupulatnym procesem z długimi cyklami rozwoju, ponieważ w proces tworzenia oprogramowania zaangażowanych jest wiele ról, w tym koordynacja w organizacji, przydział zadań, pisanie kodu, testowanie i wreszcie dokumentacja. 

W ciągu ostatnich kilku lat, przy pomocy Modele LLM lub duże językispołeczność sztucznej inteligencji osiągnęła znaczące kamienie milowe w dziedzinie widzenia komputerowego i przetwarzania języka naturalnego, a po szkoleniu w zakresie paradygmatów „przewidywania następnego słowa” modele wielkojęzykowe dobrze wykazały swoją zdolność do zapewniania wydajnej wydajności w szerokim zakresie dalszych zadań jak tłumaczenie maszynowe, odpowiadanie na pytania i generowanie kodu. 

Chociaż modele wielkojęzykowe mogą pisać kod dla całego oprogramowania, mają one poważną wadę: halucynacje kodowe, co jest dość podobne do halucynacji, z którymi borykają się struktury przetwarzania języka naturalnego. Halucynacje związane z kodem mogą obejmować problemy takie jak nieodkryte błędy, brakujące zależności i niekompletne implementacje funkcji. Istnieją dwie główne przyczyny halucynacji kodowych. 

  • Brak specyfikacji zadania: Podczas generowania kodu oprogramowania w jednym kroku brak określenia specyfiki zadania dezorientuje LLM jako zadania w procesie tworzenia oprogramowania, takie jak analiza wymagań użytkownika lub wybór preferowanego języka programowania, często zapewniają myślenie kierowane, czego brakuje w wysokim -zadania na poziomie obsługiwane przez te LLM. 
  • Brak egzaminu krzyżowego : Nieprzeprowadzenie analizy krzyżowej wiąże się ze znacznym ryzykiem, zwłaszcza podczas procesów decyzyjnych. 

Celem ChatDev jest rozwiązanie tych problemów i ułatwienie LLM możliwości tworzenia najnowocześniejszych i skutecznych aplikacji poprzez utworzenie opartej na technologii wirtualnej firmy zajmującej się tworzeniem oprogramowania, która ustanawia model kaskadowy i skrupulatnie dzieli proces tworzenia oprogramowania na cztery podstawowe gradacja,

  1. Projektowanie. 
  2. Kodowanie. 
  3. Testowanie. 
  4. Dokumentacja. 

Na każdym z tych etapów wdrażany jest zespół wirtualnych agentów, takich jak programiści kodu lub testerzy, którzy współpracują ze sobą za pomocą dialogów, co zapewnia płynny przepływ pracy. Co więcej, ChatDev korzysta z łańcucha czatów, który działa jako facylitator i dzieli każdy etap procesu programowania na atomowe podzadania, umożliwiając w ten sposób podwójną rolę, pozwalając na propozycje i walidację rozwiązań przy użyciu komunikacji kontekstowej, która pozwala programistom skutecznie rozwiązać określone podzadania. Łańcuch czatu składa się z kilku węzłów, z których każdy indywidualny węzeł reprezentuje określone podzadanie, a te dwie role angażują się w wielostronne dyskusje kontekstowe, aby nie tylko proponować, ale także weryfikować rozwiązania. 

W tym podejściu framework ChatDev najpierw analizuje wymagania klienta, generuje kreatywne pomysły, projektuje i wdraża prototypowe systemy, identyfikuje i rozwiązuje potencjalne problemy, tworzy atrakcyjną grafikę, wyjaśnia informacje dotyczące debugowania i generuje podręczniki użytkownika. Wreszcie platforma ChatDev dostarcza oprogramowanie użytkownikowi wraz z kodem źródłowym, instrukcjami obsługi i specyfikacjami środowiska zależności. 

ChatDev: Architektura i działanie

Teraz, gdy mamy już krótkie wprowadzenie do ChatDev, przyjrzyjmy się architekturze i działaniu frameworku ChatDev, zaczynając od łańcucha czatów. 

Łańcuch czatów

Jak wspomnieliśmy w poprzedniej sekcji, framework ChatDev wykorzystuje metodę kaskadową do tworzenia oprogramowania, która dzieli proces tworzenia oprogramowania na cztery fazy obejmujące projektowanie, kodowanie, testowanie i dokumentację. Każda z tych faz odgrywa wyjątkową rolę w procesie rozwoju i istnieje potrzeba skutecznej komunikacji między nimi, a także istnieją potencjalne wyzwania związane z identyfikacją osób, z którymi można nawiązać kontakt, oraz określeniem kolejności interakcji. 

Aby rozwiązać ten problem, środowisko ChatDev wykorzystuje Chat Chain, uogólnioną architekturę, która dzieli każdą fazę na subatomowy czat, przy czym każda z tych faz koncentruje się na odgrywaniu ról zorientowanych na zadania, które obejmują podwójne role. Pożądany wynik czatu stanowi istotny element oprogramowania docelowego i jest osiągany w wyniku współpracy i wymiany instrukcji pomiędzy agentami uczestniczącymi w procesie rozwoju. Paradygmat łańcucha czatu do rozwiązywania zadań pośrednich przedstawiono na poniższym obrazku. 

W przypadku każdej indywidualnej rozmowy instruktor najpierw inicjuje instrukcje, następnie prowadzi dialog do zakończenia zadania, a w międzyczasie asystenci postępują zgodnie z instrukcjami instruktora, podają idealne rozwiązania i dyskutują o wykonalności rozwiązania. Następnie instruktor i agent prowadzą wieloobrotowy dialog, aż dojdą do konsensusu i uznają, że zadanie zostało wykonane pomyślnie. Łańcuch łańcucha zapewnia użytkownikom przejrzysty obraz procesu rozwoju, rzuca światło na ścieżkę podejmowania decyzji i oferuje możliwości debugowania błędów, gdy się pojawią, co pozwala użytkownikom końcowym analizować i diagnozować błędy, sprawdzać wyniki pośrednie, i interweniować w procesie, jeżeli zostanie to uznane za konieczne. Włączając łańcuch czatów, framework ChatDev jest w stanie skoncentrować się na każdym konkretnym podzadaniu w szczegółowej skali, co nie tylko ułatwia efektywną współpracę między agentami, ale także skutkuje szybkim osiągnięciem wymaganych wyników. 

Projektowanie

W fazie projektowania środowisko ChatDev wymaga wstępnego pomysłu jako wkładu klienta, a na tym etapie istnieją trzy predefiniowane role. 

  1. Dyrektor generalny lub dyrektor generalny. 
  2. CPO lub dyrektor ds. produktu. 
  3. CTO lub dyrektor techniczny. 

Następnie do gry wchodzi łańcuch czatów, dzielący fazę projektowania na sekwencyjne subatomowe zadania na czacie, które obejmują język programowania (CTO i dyrektor generalny) oraz modalność oprogramowania docelowego (CPO i dyrektor generalny). Faza projektowania obejmuje trzy kluczowe mechanizmy: przypisanie roli lub specjalizację roli, strumień pamięci i autorefleksję. 

Przypisanie roli

Każdemu agentowi w środowisku Chat Dev przypisuje się rolę za pomocą specjalnych komunikatów lub specjalnych podpowiedzi podczas procesu odgrywania ról. W przeciwieństwie do innych modeli języka konwersacyjnego, framework ChatDev ogranicza się wyłącznie do inicjowania scenariuszy odgrywania ról pomiędzy agentami. Te podpowiedzi służą do przypisywania ról agentom przed dialogami. 

Początkowo instruktor przejmuje obowiązki dyrektora generalnego i angażuje się w interaktywne planowanie, natomiast obowiązki CPO wykonuje agent, który wykonuje zadania i zapewnia wymagane odpowiedzi. Framework wykorzystuje „zachęta do rozpoczęcia” na rzecz specjalizacji ról, która pozwala agentom skutecznie wypełniać swoje role. Wskazówki asystenta i instruktora obejmują istotne szczegóły dotyczące wyznaczonych ról i zadań, kryteriów zakończenia, protokołów komunikacyjnych i kilku ograniczeń, które mają na celu zapobieganie niepożądanym zachowaniom, takim jak nieskończone pętle, odpowiedzi pozbawione informacji i nadmiarowość instrukcji. 

Strumień pamięci

Strumień pamięci to mechanizm używany w środowisku ChatDev, który utrzymuje kompleksowy zapis konwersacji poprzednich dialogów agenta i pomaga w procesie podejmowania decyzji, który następuje w sposób świadomy wypowiedzi. Struktura ChatDev wykorzystuje podpowiedzi w celu ustalenia wymaganych protokołów komunikacyjnych. Na przykład, gdy zaangażowane strony osiągną konsensus, wiadomość końcowa spełniająca określone wymagania dotyczące formatowania, np. ( : Aplikacja pulpitu"). Aby zapewnić zgodność z wyznaczonym formatem, ramy stale monitorują i ostatecznie umożliwiają zakończenie bieżącego dialogu. 

autorefleksja

Twórcy frameworka ChatDev zaobserwowali sytuacje, w których obie zaangażowane strony osiągnęły obustronny konsensus, ale nie zostały uruchomione predefiniowane protokoły komunikacyjne. Aby rozwiązać te problemy, Framework ChatDev wprowadza mechanizm autorefleksji pomaga w odzyskiwaniu i wydobywaniu wspomnień. Aby zaimplementować mechanizm autorefleksji, środowisko ChatDev inicjuje nowy, świeży czat, werbując „pseudo siebie” jako nowego pytającego. „Pseudoja” analizuje poprzednie dialogi i zapisy historyczne, a następnie informuje obecnego asystenta, po czym żąda podsumowania rozstrzygających i godnych działania informacji, jak pokazano na poniższym rysunku. 

Za pomocą mechanizmu samopomocy asystent ChatDev jest zachęcany do refleksji i analizy zaproponowanych przez siebie decyzji. 

Kodowanie

Na etapie kodowania istnieją trzy predefiniowane role, mianowicie CTO, programista i projektant graficzny. Jak zwykle mechanizm łańcucha czatu dzieli fazę kodowania na poszczególne zadania subatomowe, takie jak generowanie kodów (programista i CTO) lub opracowanie GUI lub graficzny interfejs użytkownika (programista i projektant). Następnie dyrektor techniczny instruuje programistę, aby użył formatu przecen do wdrożenia systemu oprogramowania, po czym projektant graficzny proponuje przyjazny dla użytkownika i interaktywny interfejs GUI, który wykorzystuje ikony graficzne do interakcji z użytkownikami, zamiast polegać na tradycyjnych poleceniach tekstowych. 

Zarządzanie kodem

Struktura ChatDev wykorzystuje zorientowane obiektowo języki programowania, takie jak Python, Java i C++, do obsługi złożonych systemów oprogramowania, ponieważ modułowość tych języków programowania umożliwia korzystanie z samodzielnych obiektów, które nie tylko pomagają w rozwiązywaniu problemów, ale także we wspólnym opracowywaniu , a także pomaga w usuwaniu zbędnych elementów poprzez ponowne wykorzystanie obiektów zgodnie z koncepcją dziedziczenia. 

Instrukcje myślowe

Tradycyjne metody odpowiadania na pytania często prowadzą do nieistotnych informacji lub nieścisłości, szczególnie podczas generowania kodu, ponieważ podawanie naiwnych instrukcji może prowadzić do halucynacji LLM i może stać się trudnym problemem. Aby rozwiązać ten problem, środowisko ChatDev wprowadza mechanizm „instrukcji myślowych”, który czerpie inspirację z podpowiedzi łańcucha myślowego. Mechanizm „instrukcji myślowych” wyraźnie odnosi się do indywidualnych myśli dotyczących rozwiązywania problemów zawartych w instrukcjach, podobnie jak w przypadku rozwiązywania zadań w sposób sekwencyjny i zorganizowany. 

Testowanie

Napisanie bezbłędnego kodu już za pierwszym podejściem jest wyzwaniem nie tylko dla LLM, ale także dla programistów-ludzi i zamiast całkowicie odrzucać nieprawidłowy kod, programiści analizują swój kod, aby zidentyfikować błędy i je naprawić. Faza testowania w środowisku ChatDev jest podzielona na trzy role: programistę, testera i recenzenta. Proces testowania jest dalej podzielony na dwa kolejne zadania subatomowe: Recenzja partnerska lub debugowanie statyczne (Recenzent i programista) oraz Testowanie systemu lub debugowanie dynamiczne (Programista i Tester). Debugowanie statyczne lub recenzja partnerska analizuje kod źródłowy w celu zidentyfikowania błędów, podczas gdy debugowanie dynamiczne lub testowanie systemu weryfikuje wykonanie oprogramowania za pomocą różnych testów przeprowadzanych przez programistę przy użyciu interpretera. Debugowanie dynamiczne skupia się przede wszystkim na testowaniu czarnej skrzynki w celu oceny aplikacji. 

Dokumenty

Po ukończeniu platformy ChatDev obejmującej fazy projektowania, kodowania i testowania zatrudnia ona czterech agentów, a mianowicie dyrektora generalnego, dyrektora technologicznego, CPO i programistę, aby wygenerować dokumentację dla projektu oprogramowania. Struktura ChatDev wykorzystuje LLM do wykorzystania kilku podpowiedzi z przykładami w kontekście do generowania dokumentów. CTO instruuje programistę, aby dostarczył instrukcje dotyczące konfiguracji zależności środowiskowych i utworzył dokument taki jak „wymagania zależności.txt”. Jednocześnie wymagania i projekt systemu są przekazywane CPO przez dyrektora generalnego w celu wygenerowania instrukcji użytkownika dla produktu. 

Efekt

Statystyki oprogramowania

Aby przeanalizować wydajność środowiska ChatDev, zespół programistów przeprowadził analizę statystyczną aplikacji generowanych przez platformę na podstawie kilku kluczowych wskaźników, w tym wykorzystanych tokenów, całkowitej liczby tur dialogów, zasobów obrazów, plików oprogramowania, aktualizacji wersji i kilku innych, a wyniki są następujące: pokazano w poniższej tabeli. 

Analiza czasu trwania

Aby zbadać czas produkcji oprogramowania ChatDev dla różnych podpowiedzi, programiści przeprowadzili również analizę czasu trwania, a różnica w czasie programowania dla różnych podpowiedzi odzwierciedla różną przejrzystość i złożoność przydzielonych zadań, a wyniki pokazano na poniższym rysunku . 

Studium przypadku

Poniższy rysunek przedstawia, jak ChatDev tworzy grę Five in a Row lub Gomoku. 

Rysunek skrajnie po lewej stronie przedstawia podstawowe oprogramowanie utworzone przez framework bez użycia GUI. Jak wyraźnie widać, aplikacja bez GUI oferuje ograniczoną interaktywność, a użytkownicy mogą grać w tę grę wyłącznie poprzez terminal poleceń. Następna ilustracja przedstawia bardziej atrakcyjną wizualnie grę stworzoną przy użyciu GUI, oferującą lepsze doświadczenia użytkownika i ulepszoną interaktywność dla wciągającego środowiska rozgrywki, które może cieszyć się znacznie bardziej użytkownikami. Następnie agent projektanta tworzy dodatkową grafikę, aby jeszcze bardziej poprawić użyteczność i estetykę rozgrywki, nie wpływając na żadną funkcjonalność. Jeśli jednak użytkownicy nie będą zadowoleni z obrazu wygenerowanego przez projektanta, mogą zastąpić obrazy po ukończeniu oprogramowania przez platformę ChatDev. Elastyczność oferowana przez platformę ChatDev w zakresie ręcznej zamiany obrazów pozwala użytkownikom dostosowywać aplikacje zgodnie z ich preferencjami, zapewniając lepszą interaktywność i wygodę użytkownika, bez żadnego wpływu na funkcjonalność oprogramowania. 

Final Thoughts

W tym artykule rozmawialiśmy o ChatDev, an LLM lub model dużego języka oparty na innowacyjnym paradygmacie, którego celem jest zrewolucjonizowanie dziedziny tworzenia oprogramowania poprzez wyeliminowanie wymogu stosowania wyspecjalizowanych modeli na każdym etapie procesu tworzenia oprogramowania. Framework ChatDev ma na celu wykorzystanie możliwości frameworków LLM poprzez komunikację w języku naturalnym w celu ujednolicenia i usprawnienia kluczowych procesów tworzenia oprogramowania. Struktura ChatDev wykorzystuje mechanizm łańcucha czatu, aby podzielić proces tworzenia oprogramowania na sekwencyjne zadania subatomowe, umożliwiając w ten sposób szczegółowe skupienie i promowanie pożądanych wyników dla każdego zadania subatomowego. 

„Inżynier z zawodu, pisarz z zamiłowania”. Kunal jest pisarzem technicznym, który głęboko kocha i rozumie sztuczną inteligencję i uczenie maszynowe, a którego celem jest upraszczanie złożonych koncepcji w tych dziedzinach poprzez swoją wciągającą i pouczającą dokumentację.