Нейросети всё глубже проникают не только в нашу повседневную жизнь, но и активно влияют на многие процессы внутри различных компаний. Это действительно очень удобный инструмент, позволяющий существенно сократить затраты ресурсов по множеству направлений. Однако крайне важно понимать, что и у него есть свои ограничения, и их понимание ответственными лицами является ключом к тому, чтобы ускорить и упростить работу сотрудников (что, в свою очередь, приведёт к повышению объёма задач, выполняемых сотрудником за единицу времени).

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

Ключевые ограничения ИИ

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

Ещё одним важным ограничением является обязательная перепроверка ответов, предлагаемых нейросетью. Особенно критично это проявляется при сложных запросах или в не самых популярных областях. Например, если попросить нейросеть написать некий код, подробно описав требования и указав десяток условий, часть запроса может быть просто-напросто проигнорирована. Да, она напишет код, который даже будет работать, но в некоторых случаях — не так, как предполагалось.

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

Более того, на подобные моменты крайне важно обращать внимание ещё и потому, что злоумышленники могут использовать «промашки» нейросети. Например, если известно, что нейросеть обычно включает в ответ несуществующую библиотеку, можно создать свой репозиторий с таким названием, поместив туда вредоносный код. И это не теория — подобные случаи уже были зафиксированы.

Роль квалифицированного оператора

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

В дополнение к предыдущему пункту хочу отметить ещё одну причину, почему необходим квалифицированный оператор: нейросеть отвечает только на тот вопрос, который ей задают. Она не предугадает все тонкости и не учтет их заранее. Если вы зададите вопрос «Как повесить картину на гвозди?», нейросеть подробно отправит вам инструкцию о том, как пользоваться молотком, как ровно отметить точки для забивания гвоздей и повесить на них картинку. Но она совершенно точно не догадается, что у вас в квартире железобетонные стены и гвозди в них забить не выйдет.

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

В первую очередь нейросети хорошо справляются с задачами по анализу информации, и спектр их применения огромен. Например, можно получить быструю выжимку из огромного документа по указанным критериям, попросить структурировать найденную информацию, заранее указав желаемый формат ответа, найти логические ошибки дополнить уже найденную информацию. При этом на подобную работу способны не только крупные языковые модели, но и небольшие локально развёрнутые сети (я лично экспериментировал с моделями на 8 млрд. параметров, тогда как всем известные онлайн-продукты оперируют сотнями миллиардов параметров).

Нейросети как инструмент обучения и развития сотрудников

Но не только работу с документами может облегчить использование нейросетей. Обычно, когда дело касается разработки продуктов, все по какой-то причине смотрят только в сторону прямого написания кода нейросетью. Но куда больше пользы она может принести в обучении разработчиков. Возьмём для примера банальную задачу — появилась необходимость создать мобильное приложение. В штате нет разработчиков с подобным опытом, и все резервы распланированы на год вперёд. Можно перекинуть кого-то с других проектов, но это будет долго: нужно разобраться с новой для человека платформой, особенностями языка программирования и прочим.

Да, разбираться в новой платформе и языке программирования всё равно придётся, но тут нейросети становятся отличным помощником — не только как продвинутый справочник, но и как «виртуальный коллега», который моментально может ответить на любой возникающий по ходу работы вопрос. Конечно, они могут ошибаться, и иногда решение придётся искать самостоятельно. Но скорость обучения вырастает кратно. В том числе, их можно использовать для подтягивания уровня разработчиков. И это не просто голая теория, а опыт, проверенный на себе. Ради интереса я попробовал создать небольшой тестовый сайт на новом для себя фреймворке (при этом новыми для меня были все механизмы, начиная от взаимодействия с БД и заканчивая общением между фронтендом и бэкендом). И за пару выходных у меня получился вполне работоспособный результат. Понятно, что для дальнейшего закрепления необходима практика, однако помощь нейросети была неоценима.

Прототипирование и разработка с помощью нейросетей

Нельзя обойти стороной и само написание кода. По моему опыту, наиболее продуктивным направлением является прототипирование. Когда необходимо собрать некий прототип приложения для демонстрации MVP, не важно, насколько красиво и удачно написан код — качество и поддерживаемость кода вторичны: после демонстрации его всё равно будут перерабатывать. В таком случае нейросети позволяют ускорить работу в разы.

Что касается классической разработки, тут всё несколько сложнее. Всё-таки главным критерием оценки кода является удобство его поддержки. И тут у нейросетей всё не очень радужно. Нужно сначала подробно описать задачу нейросети, потом получить от неё код и переписать его «на чистовую», чтобы с ним потом можно было удобно работать. Иначе неудачные решения будут наслаиваться друг на друга, что впоследствии неизбежно приведёт к повышению затрат времени на изменение кода. И, что самое главное, не только человеком, но и нейросетью, так как каждый раз необходимо будет давать всё больше и больше контекста, необходимого для решения задачи.

Более того, я уже упоминал о необходимости высокой квалификации оператора — и не просто так. Нельзя закинуть в нейросеть архив с кодом и попросить добавить в код функционал чата. Как человек, который достаточно много задач решает при помощи нейросети, я могу сказать, что полученное в итоге решение с крайне высокой вероятностью работать не будет. Подобные задачи всё ещё слишком сложны для современных нейросетей. Нужен отдельный человек, который разобьёт задачу на отдельные шаги, попросит нейросеть решить их по отдельности, интегрирует результаты и удостоверится в том, что всё действительно работает так, как и было задумано. Итоговый прирост производительности разработчика будет не таким уж и большим. Да, он однозначно будет, но не стоит ожидать многократного ускорения темпа работы.

Вывод

Главная и самая сложная задача при внедрении нейросетей — это изменить формат мышления тех людей, которые ими будут пользоваться. При получении задачи они должны думать не «что я должен сделать, чтобы решить её», а «как мне упростить себе жизнь, используя нейросеть». И перебороть эту косность мышления не так-то просто — зачастую мысль о том, что какую-то часть работы можно было скинуть на нейросеть, приходит с сильным запозданием, когда часть работы уже была выполнена.

Захар Максименко, руководитель отдела аналитики компании Secret Technologies