Как мы автоматизировали процесс разработки ПО за 3 дня
Будучи студентом я с удовольствием участвовал в хакатонах. Нам давали сложные задачи, которые нужно было решить за пару дней. Ночь без сна - классика этого жанра, но желание победить и денежные призы отлично мотивировали.
На прошлой неделе меня пригласили стать ментором на «антихакатоне» в формате JASS (Joint Advanced Student School). В этом формате участникам предоставляется три дня для решения сложной задачи, но вместо соревнований несколько команд работают над общей задачей “на грани науки” (участникам даже можно было спать по ночам). Поэтому моя роль заключалась в разработке общей задачи для шести команд по пять человек.
Одно из правил JASS заключается в том, что участники не пишут код самостоятельно, а активно используют ИИ-ассистентов, таких как
Cursor. Мероприятие ставило цель изменить парадигму программирования для участников. Но можем ли мы не просто использовать умных помощников для написания кода, а полностью заменить разработчиков уже сегодня? (Спойлер: отчасти да). Именно такую задачу я предложил участникам - разработать мультиагентную систему для автоматизации разработки ПО.
Работая техническим директором, я хорошо знаком с процессами разработки ПО. Возможно, вы слышали о
Devin AI, который стремится автоматизировать создание простых приложений. Также существует опенсорсный фреймворк
ChatDev — мультиагентная платформа, автоматизирующая проектирование, написание кода, тестирование и ведение документации, что значительно облегчает разработку. Недавно
Microsoft представила собственный фреймворк, способный автоматизировать весь цикл разработки: от генерации идей и создания технической спецификации до планирования, написания кода, тестирования и деплоя.
Однако мы стремились создать не простой продукт, а решение с использованием ИИ. Поэтому я предложил мультиагентную архитектуру, включающую следующие ИИ-агенты:
- ИИ-продуктовый аналитик — собирает требования от пользователя и формирует общие требования к продукту;
- ИИ-архитектор — проектирует архитектуру решения, разрабатывает техническую спецификацию и декомпозирует ее на более простые задачи;
- ИИ-исследователь — ищет научные статьи для решения ИИ-задач в
arxiv и соответствующий код на гитхабе;
- ИИ-разработчик — определяет структуру проекта, пишет и рефакторит код;
- ИИ-инженер — тестирует полученный код и, в случае успешного прохождения тестов, разворачивает приложение;
- ИИ-поисковик документации — генерирует документацию к проекту и позволяет пользователю находить необходимые файлы.
Мы планировали связать всех агентов в фиксированный процесс, но в итоге решили отказаться от этой идеи. Вместо этого внедрили подход
blackboard. В этом подходе все агенты работают в единой цифровой среде — GitHub — и реагируют на изменения в этой среде, а не на сигналы от других агентов. Например, когда в репозитории появляется новый код, ИИ-инженер автоматически берет его для тестирования и деплоя.
Таким образом, нам не нужно создавать сложные процессы для взаимодействия агентов: система сама распределяет задачи между агентами, обладающими необходимыми навыками, которые самостоятельно «подхватывают» соответствующие задания. Также мы использовали такие методы как
Tree-of-thoughts,
ReAct,
RAG и
Reflection.
В качестве теста мы попросили систему разработать инструмент для анализа токсичности текста. Система завелась не с первого раза, но в итоге каждый из агентов сделал свое дело. На более сложных проектах система все еще ломается, однако этот опыт показал потенциал мультиагентных систем в области разработки ПО.
Если вы разработчик и еще не используете ИИ-помощников, пора начать это делать прямо сейчас — ведь уже завтра вы станете операторами еще более умных систем.
В комментариях прикрепил концептуальную архитектуру системы, ссылку на гитхаб (загрузили не все) и итоговое приложение (пока оно работает).
#кейсы