Модели и платформы ИИ

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

mm
Добавьте Unite.AI в избранные источники в Google
ChatDev : AI Assisted Software Development

Отрасль разработки программного обеспечения – это область, которая часто полагается на консультации и интуицию, характеризующаяся сложными стратегиями принятия решений. Кроме того, разработка, поддержка и эксплуатация программного обеспечения требуют дисциплинированного и методического подхода. Часто разработчики программного обеспечения основывают свои решения на интуиции, а не на консультациях, в зависимости от сложности проблемы. Чтобы повысить эффективность программной инженерии, включая эффективность программного обеспечения и снижение затрат на разработку, ученые исследуют использование глубоко обучаемых фреймворков для решения различных задач в процессе разработки программного обеспечения. С учетом недавних разработок и достижений в области глубокого обучения и ИИ, разработчики ищут способы трансформации процессов и практик разработки программного обеспечения, используя сложные конструкции, реализованные на различных этапах процесса разработки программного обеспечения.

Сегодня мы будем обсуждать ChatDev, инновационный подход, основанный на Большой Языковой Модели (LLM), который стремится революционизировать область разработки программного обеспечения. Этот подход стремится исключить необходимость в специализированных моделях на каждом этапе процесса разработки. Фреймворк ChatDev использует возможности фреймворков LLM, используя естественную языковую коммуникацию для унификации и оптимизации ключевых процессов разработки программного обеспечения.

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

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

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

ChatDev : AI-ассистированная разработка программного обеспечения

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

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

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

В последние годы, с помощью LLM или Большой Языковой Модели, сообщество ИИ достигло значительных успехов в области компьютерного зрения и обработки естественного языка, и после обучения на “предсказании следующего слова” фреймворки LLM хорошо продемонстрировали свою способность возвращать эффективные результаты на широком спектре задач, таких как машинный перевод, ответы на вопросы и генерация кода.

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

  • Отсутствие спецификации задачи: Когда генерируется программный код в одном шаге, не определяя конкретики задачи, это сбивает с толку LLM, поскольку задачи в процессе разработки программного обеспечения, такие как анализ требований пользователей или выбор предпочитаемого языка программирования, часто обеспечивают руководящую мысль, что отсутствует в высокоуровневых задачах, обрабатываемых этими LLM.
  • Отсутствие перекрестного осмотра: : Значительные риски возникают, когда не проводится перекрестный осмотр, особенно во время процессов принятия решений.

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

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

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

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

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

Теперь, когда у нас есть краткое введение в ChatDev, давайте рассмотрим архитектуру и работу фреймворка ChatDev, начиная с цепочки чата.

Цепочка чата

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

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

Для каждого отдельного чата инструктор сначала инициирует инструкции, а затем направляет диалог к завершению задачи, и в meantime, помощники следуют инструкциям, данным инструктором, предоставляют идеальные решения и участвуют в обсуждениях о осуществимости решения. Инструктор и агент затем участвуют в многоходовых диалогах, пока они не придут к консенсусу и не сочтут задачу успешно выполненной. Цепочка чата предоставляет пользователям прозрачный вид процесса разработки, проливает свет на путь принятия решений и предлагает возможности для отладки ошибок, когда они возникают, что позволяет конечным пользователям анализировать и диагностировать ошибки, осматривать промежуточные результаты и вмешиваться в процесс, если это необходимо.Включая цепочку чата, фреймворк ChatDev может сосредоточиться на каждой конкретной подзадаче на гранулярном уровне, что не только облегчает эффективное сотрудничество между агентами, но и приводит к быстрому достижению необходимых результатов.

Проектирование

На этапе проектирования фреймворк ChatDev требует первоначальной идеи в качестве входных данных от человеческого клиента, и существуют три предопределенные роли на этом этапе.

  1. Генеральный директор или главный исполнительный директор.
  2. Главный продукт-менеджер или главный офицер по продукту.
  3. Главный технический директор или главный технический офицер.

Цепочка чата затем вступает в действие, разделяя этап проектирования на последовательные субатомарные задачи чата, включая язык программирования (Главный технический директор и Генеральный директор) и модальность целевого программного обеспечения (Главный продукт-менеджер и Генеральный директор). Этап проектирования включает три ключевых механизма: назначение ролей или специализация ролей, поток памяти и самоанализ.

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

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

Первоначально инструктор принимает на себя ответственность Генерального директора и участвует в интерактивном планировании, тогда как ответственность Главного продукт-менеджера выполняется агентом, который выполняет задачи и предоставляет необходимые ответы. Фреймворк использует “промптинг-внедрения” для специализации ролей, что позволяет агентам эффективно выполнять свои роли. Подсказки помощника и инструктора включают важные детали, касающиеся назначенных ролей и задач, критериев завершения, протоколов коммуникации и нескольких ограничений, направленных на предотвращение нежелательного поведения, такого как бесконечные циклы, неинформативные ответы и избыточность инструкций.

Поток памяти

Поток памяти – это механизм, используемый фреймворком ChatDev, который поддерживает полную запись предыдущих диалогов агента и помогает в процессе принятия решений, следующем за высказыванием в осведомленном о контексте порядке. Фреймворк ChatDev использует подсказки для установления необходимых протоколов коммуникации. Например, когда стороны достигают консенсуса, сообщение, удовлетворяющее конкретному форматному требованию, такое как (<МОДАЛЬНОСТЬ>: Desktop Application”). Чтобы обеспечить соблюдение назначенного формата, фреймворк постоянно отслеживает и, наконец, позволяет текущему диалогу достичь завершения.

Самоанализ

Разработчики фреймворка 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 использует механизм цепочки чата для разбиения процесса разработки программного обеспечения на последовательные субатомарные задачи, что позволяет сосредоточиться на каждой конкретной подзадаче на гранулярном уровне и способствует достижению желаемых результатов для каждой субатомарной задачи.

"Инженер по профессии, писатель по сердцу". Кунал - технический писатель с глубокой любовью и пониманием ИИ и МО, посвященный упрощению сложных концепций в этих областях посредством своей увлекательной и информативной документации.