Полтора года мобильной разработки с использованием NLP: итоги

iOS Team Lead Globus IT Дмитрий Лемайкин на Tinkoff Mobile Meetup поделился опытом использования в работе нейросетей. Уже полтора года наша команда экспериментирует со связкой ChatGPT–CoPilot. В этой статье мы расскажем, с какими задачами нейросети действительно смогут помочь, а в каких случаях их использование может привести к неоднозначным результатам.

Полтора года мобильной разработки с использованием NLP: итоги

NLP (Natural Language Processing) на сегодняшний день стал самостоятельным инструментом разработчика, который используется почти во всех сферах и требует освоения. Он может облегчить жизнь профессионалу, взяв на себя выполнение рутинных задач. Но любителя он легко может ввести в заблуждение и осложнить жизнь. Поэтому важно уметь корректно составить промпт – запрос к модели на естественном, живом языке.Для работы с нейросетями команда Globus выбрала связку ChatGPT с CoPilot. Системы значительно упрощают процесс написания кода при разработке мобильных приложений и отлично дополняют друг друга.ChatGPT используется для больших общих промптов, он хорошо понимает контекст и помогает генерировать идеи. CoPilot же интегрируется в IDE (Integrated development environment), такую как, например, Xcode, и предлагает автодополнение кода на основе кодовой базы вашего текущего проекта.

За полтора года работы со связкой ChatGPT с CoPilot мы получили три класса кейсов:

  • Успешные, в которых применение NLP облегчает работу и экономит время
  • Средние. Здесь использование нейросетей может помочь, но придется потратить больше времени, а иногда ответы нейросети могут и вовсе увести в неправильную сторону
  • Плохие – те, в которых использование нейросетей может даже навредить

Для начала расскажем об успешных кейсах:

1. Переписывание старого кода

ChatGPT отлично справляется с переписыванием кода, например, перевод кодовой базы с Objective-C на Swift. Это был один из первых кейсов команды Globus IT с использованием нейросетей. Чтобы проверить достоверность переписанного кода, iOS Team Lead Дмитрий Лемайкин вручную проверил каждую строку: «Изначально мы не поверили, что такое возможно и что код не будет содержать ошибок. Но когда мы убедились в корректности результата, начали больше доверять ChatGPT».

Совет: ChatGPT все равно, на каком языке написан код и как он оформлен, в любом случае он успешно конвертирует его в нужный язык в Swift.

2. Перенос кода с одной платформы на другую

Globus IT разрабатывает нативные приложения и на iOS и Android, поэтому Swift и Kotlin идут рядом. Часто возникает задача переноса логики с одной платформы на другую. С помощью ChatGPT можно переносить код с одной платформы на другую, что позволяет значительно сэкономить время и ресурсы. Оба языка достаточно схожи по синтаксису и структурированы, а это значит, что такая конвертация для машины не должна быть сложной.

Совет: переносить можно модели и даже компоненты пользовательского интерфейса. Могут быть исключения по сложности или совместимости.

3. Структурирование неструктурированных данных

Если данные или текст отправлены вам в неподходящем формате, то можно не тратить время на разбор, а просто создать промпт на структуризацию и отдать неструктурированный текст ChatGPT – он выдаст текст в нужном вам формате.

Совет: текст может быть любой, например, JSON, XML, кусок литературного текста, смесь разных текстов по формату и смыслу.

4. Изменение стилей готового кода или текста

Если вы не можете использовать линтер, то ChatGPT снова придет вам на помощь. В промпте вы можете написать свои требования к тексту: изменить стилистику, формат, перевести на другой язык. Так вы можете получить еще один вариант контента.

Совет: можно использовать при составлении писем, форматировании кода.

5. Написание инструкций

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

Совет: валидировать все же придется, но это проще, чем писать с нуля.

6. Написание юнит-тестов

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

Совет: в один промпт вы можете добавить несколько классов, насколько позволяют токены.

7. Генерация Stub-данных

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

Совет: используйте, если нужно создать 1000 товаров с описанием, ценами, отзывами и другими полями.

8. Написание регулярных выражений

ChatGPT делает рутинные задачи проще. Вы можете написать регулярное выражение для проверки email – и тут же запросить у ChatGPT написать на это сто юнит-тестов.

Пришло время перейти ко второму классу кейсов. Здесь мы расскажем о случаях, когда нельзя точно сказать, было ли полезно использование нейросети или нет.

1. Неконкретизированные запросы

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

2. Когда требуется абсолютная точность

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

3. Ограниченность базы данных для обучения

На данный момент информация в ChatGPT ограничена сентябрем 2023 года. Все, что было после, нейросеть учесть не сможет, а значит, вероятно, на ваш запрос выдаст неактуальную информацию. Частично эту проблему можно решить плагинами: например, команда Globus IT использует плагин для парсинга веб-страниц.

4. Обучение стажеров

Используя ChatGPT в обучении, нужно учесть наличие или отсутствие опыта у стажера. Если опыт есть, то использование нейросетей может помочь в обучении. А вот если опыта нет, то это может направить стажера в неправильном направлении или помешать усвоить материал.

5. Преодоление страха «чистого листа»

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

Когда не стоит использовать ChatGPT:

1. Если вы не эксперт в той области, по которой задаете вопрос

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

2. Слишком объемные задачи

Не ставьте ChatGPT огромные задачи, лучше декомпозировать их и работать с небольшими кусками кода. Так и вам легче будет проверить результат, и ответы нейросети будут более корректными.

3. Использование неспециализированных NLP

Сегодня существует достаточно большое количество NLP, в том числе узкоспециализированные. И если вы хотите получить более качественные результат, то лучше выбрать нейросеть, которая будет подходить для вашей задачи.

4. ChatGPT не умеет писать стихи

Хотя он предназначен для работы с текстом и прекрасно работает с ним, такие творческие задачи, как написание стихов, выполнять ему тяжело.

5. Проброс результатов одной нейросети в другую

В этом случае мы не можем говорить об определенном результате. Первая нейронная сеть может выдать ошибочный результат, который перейдет в другую, в итоге ошибки могут образовать снежный ком. Чтобы избежать этого, потребуются значительные временные затраты на эксперименты, которые вряд ли окупятся.

6. Создание кастомных визуальных компонентов

Даже с самым точным промптом ChatGPT не всегда сможет создать тот визуал, который вы бы хотели.

У команды Globus IT также были экспериментальные кейсы, по которым еще нет сложившегося мнения:

1. Оценка проектов

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

2. Поиск утечек памяти по коду

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

3. Написание кода-экранов по нарисованному рукой на бумаге макету экрана или дизайну

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

Дмитрий Лемайкин: «На основе своего опыта использования NLP, я хотел бы поделиться следующими рекомендациями: первое – практикуйтесь в построении промптов для конкретной нейросети и конкретной задачи; второе – сохраняйте удачные промпты в отдельный файл: это поможет вам провести анализ и найти свой подход к нейросети; третье – пробуйте применять новые клиентские приложения-агенты для вашей среды разработки; и четвертое – взвешивайте плюсы и минусы применения NLP для текущей задачи».

Подводя итоги, хотим сказать, что даже несмотря на LLM, полностью исключить человека из рабочего процесса все еще нельзя. Нейросети вряд ли заменят программистов, но точно смогут сделать процесс написания кода более приятным для человека. А нам еще предстоит найти новые варианты использования нейросетей и новые подходы к ним.

11
Начать дискуссию