ИИ в разработке ПО: стоит ли бояться конкуренции с машиной?
Сегодня генеративный искусственный интеллект (ориентированный на творческий потенциал алгоритмов) достаточно широко используется для написания кода в разработке ПО. Невольно возникает вопрос: сможет ли нейросеть вытеснить человека из профессии и полностью заменить разработчиков? Свой ответ предлагает Михаил Красильников, директор департамента разработки и внедрения систем искусственного интеллекта BIA Technologies.
Генеративный ИИ в целом понятен обычному пользователю. Нужно сделать запрос – и он, прогнозируя набор следующих токенов, генерирует последовательность: продолжает текст или отвечает на вопрос. Это самый распространенный сценарий использования ИИ, но в нем есть узкое место, а именно так называемые галлюцинации.
Что это такое? ИИ отвечает грамотным языком, – возможно, даже лучше, чем человек, – но при этом с полной уверенностью говорит странные вещи. Для примера можно привести известный кейс, когда ИИ предложил рецепт ядовитого чесночного масла: если следовать этой технологии, в результате получится смертельно опасный ботулотоксин.
Чтобы отличить такие галлюцинации, необходимо быть экспертом в соответствующей области знаний. То же самое касается и разработки. Можно попросить ИИ написать или дописать код, и в несложных случаях он справится, возможно, лучше и быстрее человека, но для сложных кейсов необходима верификация. И если человек, отправляющий запрос, плохо умеет программировать, верифицировать результат не получится.
Другой минус генеративного ИИ с точки зрения разработки заключается в том, что все запросы отправляются в облако. Уже неоднократно возникали случаи, связанные с неправомерным использованием закрытого исходного кода. Авторы приложений предъявляли разработчикам генеративного ИИ претензии, что модели обучались на исходном коде, который они не открывали. Но юридически привлечь за неправомерное использование кода сейчас невозможно. Более того, нет возможности даже просто доказать, что использовался именно этот код.
Сейчас в разработке часто задействуют копилоты: человек вводит информацию, чтобы машина ее запрограммировала, а ИИ генерирует код. Копилот дообучен на базе кода и может решать такие задачи. Однако опять возникает обратная сторона медали: при таком взаимодействии ты отдаешь в облако свою структуру баз данных, а ни один разумный программист так поступать не будет.
Тем не менее дообучение – довольно распространенный сценарий в разработке. Генеративный ИИ, который базируется на больших языковых моделях, совершенствуют в определенной области. Это может быть поиск по внутренней базе знаний, суммаризация информации и так далее. В результате можно делать умные запросы к своей собственной базе знаний. В качестве примера можно привести специфические задачи на написание техзаданий. Ориентируясь на уже существующие стандарты, ИИ напишет по ним задание на новую функциональность. Но специалисту-аналитику обязательно придется его верифицировать и при необходимости подправить.
Такие системы хороши для решения небольших и несложных задач, особенно для пользователя-любителя. Конечно, технически можно решать и более глубокие задачи, но в этом случае уже необходимо понимать, как именно модель думает. Если от языковой модели требуются специфические доменные знания, необходимо предельно уточнять запрос, а без хорошей квалификации этого сделать не получится.
Можно сказать, что простые задачи ИИ решает примерно на уровне добросовестного студента-старшекурсника. Кусок кода, который он предложит, в большинстве случаев достаточно просто скопировать и использовать. Но при усложнении запроса копированием уже не обойтись. В целом наблюдается прямая корреляция: насколько сложна задача, настолько же высоким должен быть уровень специалиста, который решает ее с помощью языковой модели.
Поэтому опасения, что искусственный интеллект заменит разработчиков ПО, пока преждевременны. Как было еще несколько лет назад? Если разработчик сталкивался с проблемой, он искал информацию в интернете, шел на Stack Overflow или другие площадки и спрашивал у тех, кто уже встречался с подобными сложностями. Этого пути хватало для закрытия всех мелких задач. И сейчас ИИ закрывает именно этот участок – он помогает справляться с подобными вопросами быстрее и проще. Уже не нужно спрашивать сообщество – можно написать запрос модели.
Но, во-первых, остается актуальным момент с верификацией. Во-вторых, сделать подобным образом комплексную сложную систему не получится – и на горизонте как минимум трех-пяти лет. ИИ, несомненно, будет развиваться, но «большой взрыв» уже произошел. Дальше развитие технологии пойдет по поступательной схеме: будут дорабатываться какие-то мелкие функции, но еще одного скачка в ближайшие годы или даже десятилетия ждать не стоит.
Создается впечатление, что в развитии технологии лингвистических моделей наступила «зима». Как следствие, сильным специалистам, которые их разрабатывали, уже не так интересно заниматься этой темой. Они переходят в другие области – например, в сферу мультимодальных моделей, сочетающих текст и картинку, текст и звук и т.д. Дальше пойдет борьба за повышение точности даже не на проценты, а на доли процента.
Резюмируя, можно сказать, что разработчики могут пользоваться генеративным ИИ в его текущем виде для решения рутинных несложных задач, но развитие именно лингвистических моделей в ближайшие годы будет почти нулевым. К тому же обучать модели очень дорого с точки зрения инфраструктурной загрузки. Как следствие, такого роста, какой мы наблюдали еще недавно, уже не предвидится – как и серьезной конкуренции ИИ с человеком в области разработки ПО.
Фото: Kandinsky
мероприятий