Моделі та платформи ШІ

ChatDev: Комунікативні агенти для розробки програмного забезпечення

mm
Додайте Unite.AI до бажаних джерел у Google
ChatDev : AI Assisted Software Development

Індустрія розробки програмного забезпечення – це область, що часто залежить як від консультацій, так і від інтуїції, характеризується складними стратегіями прийняття рішень. Крім того, розробка, підтримка та експлуатація програмного забезпечення вимагають дисциплінованого та методичного підходу. Часто розробники програмного забезпечення приймають рішення, спираючись на інтуїцію, а не на консультації, залежно від складності проблеми. У спробі підвищити ефективність інженерії програмного забезпечення, включаючи ефективність програмного забезпечення та зниження витрат на розробку, вчені досліджують використання рамок, заснованих на глибокому навчанні, для виконання різних завдань у процесі розробки програмного забезпечення. З недавніх пір, завдяки досягненням і вдосконаленням у сфері глибокого навчання та штучного інтелекту, розробники шукають способи трансформувати процеси та практики розробки програмного забезпечення, використовуючи складні конструкції на різних етапах процесу розробки програмного забезпечення.

Сьогодні ми обговоримо ChatDev, інноваційний підхід, заснований на великих мовних моделях (LLM), який має на меті революціонізувати галузь розробки програмного забезпечення. Ця парадигма спрямована на ліквідацію потреби у спеціалізованих моделях на кожному етапі процесу розробки. Рамка ChatDev використовує можливості рамок LLM, використовуючи природну мовну комунікацію для уніфікації та оптимізації ключових процесів розробки програмного забезпечення.

У цій статті ми розглянемо ChatDev, віртуальну компанію, що спеціалізується на розробці програмного забезпечення. ChatDev приймає водоспадну модель і ретельно ділить процес розробки програмного забезпечення на чотири основні етапи.

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

Кожен з цих етапів розгортає команду віртуальних агентів, таких як програмісти або тести, які співпрацюють один з одним за допомогою діалогів, що призводять до безперебійного робочого процесу. Ланцюг чату працює як фасилітатор і розбиває кожен етап процесу розробки на атомарні підзадачі, тим самим забезпечуючи подвійні ролі, дозволяючи пропонувати рішення та валідувати рішення за допомогою контекстно-залежної комунікації, що дозволяє розробникам ефективно вирішувати задані підзадачі.

ChatDev: штучно-інтелектуальна розробка програмного забезпечення

Інструментальний аналіз ChatDev демонструє, що не тільки рамка ChatDev надзвичайно ефективна у завершенні процесу розробки програмного забезпечення, але й вона надзвичайно економічна, оскільки завершує весь процес розробки програмного забезпечення за менш ніж один долар. Крім того, рамка не тільки визначає, але й усуває потенційні уразливості, виправляє потенційні галюцинації, зберігаючи при цьому високу ефективність та економічність.

ChatDev: Введення у розробку програмного забезпечення на основі LLM

Традиційно галузь розробки програмного забезпечення будується на основі дисциплінованого та методичного підходу не тільки для розробки застосунків, але й для їхнього підтримання та експлуатації. Традиційно кажучи, типовий процес розробки програмного забезпечення – це надзвичайно складний та тривалий процес з довгими циклами розробки, оскільки в процесі розробки беруть участь різні ролі, включаючи координацію всередині організації, розподіл завдань, написання коду, тестування та, нарешті, документування.

За останні роки, завдяки великим мовним моделям (LLM), спільнота штучного інтелекту досягла значних успіхів у галузі комп’ютерного зору та обробки природної мови, а після навчання на парадигмі “передбачення наступного слова” великі мовні моделі продемонстрували свою здатність повертати ефективну продуктивність на широкому спектрі завдань, таких як машинний переклад, відповіді на питання та генерація коду.

Хоча великі мовні моделі можуть писати код для всього програмного забезпечення, вони мають суттєву недолік: галюцинації коду, які схожі на галюцинації, з якими стикаються рамки обробки природної мови. Галюцинації коду можуть включати проблеми, такі як невиявлені помилки, відсутні залежності та незавершені реалізації функцій. Існують дві основні причини галюцинацій коду.

  • Недостатня специфікація завдання: коли генерується код програмного забезпечення в одному етапі, відсутність специфікації завдання плутає LLM, оскільки завдання в процесі розробки програмного забезпечення, такі як аналіз вимог користувача або вибір мови програмування, часто забезпечують спрямоване мислення, чого немає у високорівневих завданнях, які виконуються цими LLM.
  • Недостатнє перехресне дослідження: Значні ризики виникають, коли не проводиться перехресне дослідження, особливо під час процесів прийняття рішень.

ChatDev спрямований на вирішення цих проблем та надання LLM можливості створювати сучасні та ефективні програмні застосування, створюючи віртуальну компанію для розробки програмного забезпечення, яка приймає водоспадну модель і ретельно ділить процес розробки програмного забезпечення на чотири основні етапи,

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

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

У цьому підході рамка ChatDev спочатку аналізує вимоги клієнта, генерує творчі ідеї, проектує та реалізує прототипові системи, визначає та усуває потенційні проблеми, створює привабливі графіки, пояснює інформацію про відлагодження та генерує керівництво користувача. Нарешті, рамка ChatDev доставляє програмне забезпечення користувачеві разом з вихідним кодом, керівництвом користувача та специфікаціями залежностей середовища.

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

Тепер, коли ми маємо коротке введення у ChatDev, давайте розглянемо архітектуру та роботу рамки ChatDev, починаючи з ланцюга чату.

Ланцюг чату

Як ми згадували у попередньому розділі, рамка ChatDev використовує водоспадний метод для розробки програмного забезпечення, який ділить процес розробки програмного забезпечення на чотири фази, включаючи проектування, кодування, тестування та документування. Кожна з цих фаз має унікальну роль у процесі розробки, і існує потреба у ефективній комунікації між ними, а також існують потенційні проблеми, пов’язані з ідентифікацією осіб для взаємодії та визначенням послідовності взаємодій.

Щоб вирішити цю проблему, рамка ChatDev використовує ланцюг чату, узагальнену архітектуру, яка розбиває кожну фазу на субатомарний чат, у кожній з цих фаз відбувається завдання-орієнтоване рольове виконання, яке включає подвійні ролі. Жаданий результат для чату є важливим компонентом для цільового програмного забезпечення, і він досягається в результаті співпраці та обміну інструкціями між агентами, які беруть участь у процесі розробки. Парадигма ланцюга чату для проміжного розв’язання завдань ілюструється на зображенні нижче.

Для кожного окремого чату інструктор спочатку ініціює інструкції, а потім спрямовує діалог до завершення завдання, а в цей час асистенти слідують інструкціям, встановленим інструктором, пропонують ідеальні рішення та вступають у дискусії про доцільність рішення. Інструктор та агент вступають у багаторівневі діалоги, поки не дійдуть до згоди та не визнають завдання виконаним успішно. Ланцюг чату надає користувачам прозорий вигляд процесу розробки, проливає світло на шлях прийняття рішень та пропонує можливості для виправлення помилок, коли вони виникають, що дозволяє кінцевим користувачам аналізувати та діагностувати помилки, інспектувати проміжні результати та втручатися у процес, якщо це необхідно.Включення ланцюга чату дозволяє рамці ChatDev зосередитися на кожній окремій підзадачі на гранульованому рівні, що не тільки сприяє ефективній співпраці між агентами, але й призводить до швидкого досягнення необхідних результатів.

Проектування

На етапі проектування рамка ChatDev вимагає початкової ідеї як вхідних даних від людини-клієнта, і існують три попередньо визначені ролі на цьому етапі.

  1. Головний виконавчий директор (CEO).
  2. Головний продукт-офіцер (CPO).
  3. Головний технічний директор (CTO).

Ланцюг чату вступає у дію, розбиваючи етап проектування на послідовні субатомарні завдання-чат, які включають мову програмування (CTO та CEO) та модальність цільового програмного забезпечення (CPO та CEO). Етап проектування включає три ключові механізми: призначення ролей, потік пам’яті та самоаналіз.

Призначення ролей

Кожному агенту у рамці ChatDev призначується роль за допомогою спеціальних повідомлень або спеціальних підказок під час процесу рольового виконання. На відміну від інших моделей мовної конверсації, рамка ChatDev обмежується лише ініціацією сценаріїв рольового виконання між агентами. Ці підказки використовуються для призначення ролей агентам до початку діалогів.

Спочатку інструктор приймає відповідальність головного виконавчого директора та займається інтерактивним плануванням, тоді як відповідальність головного продукт-офіцера виконує агент, який виконує завдання та надає необхідні відповіді. Рамка використовує “введення підказок” для спеціалізації ролей, що дозволяє агентам ефективно виконувати свої ролі. Підказки інструктора та асистента містять важливу інформацію щодо призначених ролей та завдань, критеріїв завершення, протоколів комунікації та декількох обмежень, спрямованих на запобігання нежаданих поведінок, таких як нескінченні цикли, нерозповідні відповіді та надмірність інструкцій.

Потік пам’яті

Потік пам’яті – це механізм, який використовується рамкою ChatDev для підтримання повної реєстрації попередніх діалогів агента та допомоги у процесі прийняття рішень, який відбувається у спосіб, що залежить від висловлювання. Рамка ChatDev використовує підказки для встановлення необхідних протоколів комунікації. Наприклад, коли сторони досягають згоди, повідомлення про закінчення, яке задовольняє певним вимогам формату, наприклад (<МОДАЛЬНІСТЬ>: Десктоп-застосунок”). Для забезпечення відповідності призначеному формату рамка постійно контролює та дозволяє поточному діалогу завершитися.

Самоаналіз

Розробники рамки ChatDev спостерігали ситуації, коли обидві сторони досягли взаємної згоди, але призначені протоколи комунікації не були спрацьовані. Щоб вирішити ці проблеми, рамка ChatDev вводить механізм самоаналізу, який допомагає у відновленні та витягуванні пам’яті. Для реалізації механізму самоаналізу рамка ChatDev ініціює новий чат, переліставши “псевдо-сам” як нового запитувача. “Псевдо-сам” аналізує попередні діалоги та історичні записи та інформує поточного асистента, після чого він запитує підсумок висновків та інформації, яку можна виконувати, як показано на малюнку нижче.

За допомогою механізму самоаналізу асистент ChatDev заохочується до самоаналізу та аналізу рішень, які він запропонував.

Кодування

Існують три попередньо визначені ролі на етапі кодування, а саме головний технічний директор, програміст та дизайнер. Як зазвичай, ланцюг чату розбиває етап кодування на окремі субатомарні завдання, такі як генерація коду (програміст та головний технічний директор) або розробка графічного інтерфейсу користувача (програміст та дизайнер). Головний технічний директор інструктує програміста використовувати формат markdown для реалізації програмної системи, після чого дизайнер пропонує користувацький інтерфейс, який використовує графічні іконки для взаємодії з користувачами, а не традиційні текстові команди.

Управління кодом

Рамка ChatDev використовує мови програмування з об’єктно-орієнтованим програмуванням, такі як Python, Java та C++, для обробки складних програмних систем, оскільки модульність цих мов програмування дозволяє використовувати самодостатні об’єкти, які не тільки допомагають у налагодженні, але й у колективній розробці, а також дозволяють видалити надмірності, повторно використовуючи об’єкти за допомогою концепції спадковості.

Інструкції думок

Традиційні методи відповідей на питання часто призводять до нерелевантної інформації або неточностей, особливо при генерації коду, оскільки надання наївних інструкцій може призвести до галюцинацій LLM, і це може стати складною проблемою. Щоб вирішити цю проблему, рамка ChatDev вводить механізм “інструкцій думок”, який черпає натхнення з ланцюга підказок. Механізм “інструкцій думок” явно адресує окремі думки щодо розв’язання завдань, включені в інструкції, подібно до розв’язання завдань послідовно та організовано.

Тестування

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

Документування

Після того, як рамка ChatDev завершує етапи проектування, кодування та тестування, вона використовує чотири агенти: головного виконавчого директора, головного технічного директора, головного продукт-офіцера та програміста для генерації документації для проекту програмного забезпечення. Рамка ChatDev використовує LLM для використання підказок з декількома прикладами для генерації документів. Головний технічний директор інструктує програміста надати інструкції щодо конфігурації залежностей середовища та створити документ, такий як “залежності.txt”. Одночасно головний виконавчий директор повідомляє головному продукт-офіцеру про вимоги та проектну документацію для створення керівництва користувача для продукту.

Результати

Статистика програмного забезпечення

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

Аналіз тривалості

Щоб вивчити час виробництва програмного забезпечення ChatDev для різних запитів, розробники також провели аналіз тривалості, і різниця у часі розробки для різних запитів відображає різну ясність та складність завдань, призначених для виконання, і результати демонструються на малюнку нижче.

Випадковий аналіз

Наступний малюнок демонструє розробку ChatDev гри “П’ять у ряд” або “Гомоку”.

Лівий малюнок демонструє базове програмне забезпечення, створене рамкою без використання графічного інтерфейсу. Як видно, застосунок без графічного інтерфейсу пропонує обмежену інтерактивність, і користувачі можуть грати в цю гру лише через термінал. Наступний малюнок демонструє більш візуально привабливу гру, створену з використанням графічного інтерфейсу, яка пропонує кращий досвід користувача та підвищену інтерактивність для захоплюючої гри, яку користувачі можуть насолоджуватися ще більше. Дизайнер-агент потім створює додаткові графіки для подальшого поліпшення зручності та естетики гри без впливу на її функціональність. Однак, якщо люди-користувачі не задоволені зображенням, згенерованим дизайнером, вони можуть замінити зображення після того, як рамка ChatDev завершить програмне забезпечення. Гнучкість, пропонувана рамкою ChatDev для ручної заміни зображень, дозволяє користувачам налаштовувати застосунки відповідно до своїх уподобань для підвищення інтерактивності та досвіду користувача без впливу на функціональність програмного забезпечення.

Фінальні думки

У цій статті ми говорили про ChatDev, інноваційний підхід, заснований на великих мовних моделях (LLM), який має на меті революціонізувати галузь розробки програмного забезпечення, ліквідуючи потребу у спеціалізованих моделях на кожному етапі процесу розробки. Рамка ChatDev спрямована на використання можливостей рамок LLM за допомогою природної мовної комунікації для уніфікації та оптимізації ключових процесів розробки програмного забезпечення. Рамка ChatDev використовує ланцюг чату для розбиття процесу розробки програмного забезпечення на послідовні субатомарні завдання, тим самим забезпечуючи гранульований фокус та сприяння бажаним результатам для кожної субатомарної задачі.

Інженер за професією, письменник серцем. Kunal є технічним письменником з глибокою любов'ю та розумінням AI і ML, присвяченим спрощенню складних концепцій у цих галузях завдяки його цікавим та інформативним документам.