Качество ответов ChatGPT уже сейчас позволяет разработчику делегировать чат-боту некоторые несложные задачи. В лице нейросети можно получить ассистента-джуниора, который способен выполнять простые и рутинные задачи. Пока речь не идет о решении задач высокого уровня, с ними, по-прежнему, лучше справляется человек. Но сокращение времени на выполнение задачи с 30 минут до 30 секунд — это ощутимая разница.
15 апреля наш бэкендер Максим Чипурнов стал спикером CosySoft на IT TALKS MEETUP в Ереване, где он поделился реальными сценариями применения ChatGPT. Они помогут оптимизировать работу над скучными задачами, сохранить высокую скорость работы и получить больше удовольствия от написания кода.
Выкладываем ниже запись митапа, а под ним — разбор примеров из доклада Максима.
Смотрите, слушайте и листайте 👇
Hibernate + SQL
Используем ChatGPT, чтобы сократить время написания кода для простой задачи.
Получаем сущность пользователей:
Напиши код на Kotlin для создания сущностей пользователей и статей с использованием Hibernate и PostgreSQL
![6.jpg](https://static.tildacdn.com/tild6536-6165-4839-b538-386438323036/6.jpg)
Получаем сущность статей.
![7.jpg](https://static.tildacdn.com/tild3764-3932-4636-b836-636563326530/7.jpg)
Получаем миграцию для PostgreSQL.
![8.jpg](https://static.tildacdn.com/tild3737-3538-4931-a637-383139656433/8.jpg)
Модифицируем код:
Добавь пароль для пользователей и дату создания статей.
Получаем обновленный код.
![9.jpg](https://static.tildacdn.com/tild3964-3162-4363-a163-333830666532/9.jpg)
![10.jpg](https://static.tildacdn.com/tild6665-3930-4336-b365-303832343436/10_1.jpg)
![11.jpg](https://static.tildacdn.com/tild3462-3863-4635-b736-646139353536/11.jpg)
Поменяй код так, чтобы одна статья могла принадлежать нескольким пользователям.
Получаем финальный результат.
![12.jpg](https://static.tildacdn.com/tild3333-3634-4661-a662-393338393665/12.jpg)
![13.jpg](https://static.tildacdn.com/tild3139-3763-4231-a333-623136633361/13.jpg)
![14.jpg](https://static.tildacdn.com/tild6239-6332-4064-b062-393861363338/14.jpg)
Работа с коллекциями
Пишем запрос на 6 действий за одну минуту:
У меня есть dataclass User c полями name и hobbies. Нужно найти 3 самых частых хобби из списка пользователей. Напиши решение на Kotlin.
Получаем код, в котором видим заданный нами датасет.
![16.jpg](https://static.tildacdn.com/tild3965-3033-4631-a130-353665386230/16.jpg)
ChatGPT cначала создает карту с подсчетом количества каждого хобби, а потом с помощью сортировки выдает 3 самых частых хобби.
![17.jpg](https://static.tildacdn.com/tild3137-3732-4432-b061-633133393937/17.jpg)
Уточняйте библиотеку или язык, когда просите написать код, иначе чат-бот будет вставлять не подходящие конструкции. Например, без уточнения ChatGPT пишет код на Kotlin, как на Java. В таком случае уточните запрос: используй Kotlin для работы.
Псевдовыполнение и объяснение кода
Этот сценарий подойдет, если вам нужно выполнить код изолированно без написания unit-теста, или разобраться что в нем происходит.
Например, ChatGPT может определить алгоритм, даже когда из кода удалены все его признаки и составляющие.
Так ChatGPT определяет алгоритм quicksort
![20.jpg](https://static.tildacdn.com/tild3234-3434-4061-b665-316162393733/20.jpg)
Починка бага
Находим причину бага за 2 запроса к ChatGPT.
Например, есть код на Java, который выдает ошибку:
NPE (NullPointerException) на строчке valueProcessor.process(entity == null ? 0 : entity.value;
Загружаем в чат-бот и просим разобраться.
![22.jpg](https://static.tildacdn.com/tild6131-3963-4266-a462-666237303061/22.jpg)
Сначала бот предлагает добавить проверку на null, хотя проверка и так есть.
![23.jpg](https://static.tildacdn.com/tild3932-3863-4230-b963-316438363263/23.jpg)
Сообщаем об этом боту и получаем решение.
![24.jpg](https://static.tildacdn.com/tild3239-6634-4632-b062-363136336637/24.jpg)
Конфигурирование
ChatGPT выполняет рутинную задачу для нового проекта:
Напиши мне yaml конфигурацию для spring для работы с pem ssl сертификатом.
![33.jpg](https://static.tildacdn.com/tild3464-6366-4436-b432-326464316664/33.jpg)
Напиши docker compose файл с поднятие базы Postgrees и Redis.
![34.jpg](https://static.tildacdn.com/tild3833-3365-4462-b835-643135646432/34.jpg)
ChatGPT не умеет говорить «Я не знаю». Он будет отвечать утвердительно даже если у него нет данных. Он может писать абсолютную чушь, не имеющую ничего общего с действительностью. Проверяйте все получаемые ответы.
Написание документации в ChatGPT
Можно покрыть документацией целый проект за пару часов...
Вставляем код и просим написать документацию
![37.jpg](https://static.tildacdn.com/tild3830-6163-4134-a261-336636653462/37.jpg)
Получаем результат
![38.jpg](https://static.tildacdn.com/tild6564-3030-4537-b464-303339353830/38.jpg)
Если хотим видеть документацию в коде, уточняем запрос — получаем полную документацию для классов, функций и т.д.
![39.jpg](https://static.tildacdn.com/tild3236-3535-4537-a461-613636316463/39.jpg)
![40.jpg](https://static.tildacdn.com/tild6337-6636-4430-b865-343833666566/40.jpg)
Не вставляйте код с чувствительными данными в ChatGPT, особенно если работаете на коммерческом проекте.
Обучение новым технологиям с примерами
Лучший способ лучше понять как работает та или иная технология — это увидеть ее применение проиллюстрированное реальными примерами. ChatGPT неплохо справляется с такой задачей.
Пишем запрос и уточняем: покажи как с этим работать и сгенерируй реальный пример.
Пишем запрос и уточняем: покажи как с этим работать и сгенерируй реальный пример.
Что такое Either (Arrow) в Kotlin?
![42.jpg](https://static.tildacdn.com/tild6333-6234-4831-b365-656466373764/42.jpg)
![43.jpg](https://static.tildacdn.com/tild6133-3038-4262-a236-336430333435/43.jpg)
![44.jpg](https://static.tildacdn.com/tild6362-3535-4466-a538-653465343134/44.jpg)
![45.jpg](https://static.tildacdn.com/tild3363-3864-4161-b231-623963613435/45.jpg)
Что такое Spring Cloud?
Что такое Spring Cloud? На примере покажи использование
![46.jpg](https://static.tildacdn.com/tild6165-3137-4164-a662-386261396636/46.jpg)
![47.jpg](https://static.tildacdn.com/tild3835-6336-4764-b665-386631663336/47.jpg)
![48.jpg](https://static.tildacdn.com/tild3166-3236-4762-b132-316432643464/48.jpg)
ChatGPT склонен с вами соглашаться. Его можно даже убедить что 2 x 2 = 5.
Имейте это в виду. Используйте более нейтральные формулировки вместо утвердительных.
Решение нетривиальных задач
ChatGPT может помочь, если вам нужно выполнить задачу из незнакомой вам области знаний. Представим, что, вы бэкенд-разработчик, но увлекаетесь еще и геймдевом.
Напиши компонент для unity для движения объекта согласно динамике второго порядка с dumping.
ChatGPT предлагает общий подход к решению и объясняет роли каждого параметра.
![30.jpg](https://static.tildacdn.com/tild3139-6466-4237-b436-303666323462/30.jpg)
![31.jpg](https://static.tildacdn.com/tild6332-3739-4338-b939-316465363430/31.jpg)
Освежить знания
ChatGPT может помочь вспомнить или изучить какие-то новые технологии. Даст краткий и емкий ответ, приведет пример и расскажет о проблеме и решении.
Что такое n+1 проблема в контексте Hibernate
![26.jpg](https://static.tildacdn.com/tild3738-3231-4734-b062-376233636539/26.jpg)
В чем разница между библиотекой и фреймворком?
![27.jpg](https://static.tildacdn.com/tild6662-3238-4137-b231-626161613132/27.jpg)
Когда лучше использовать наследование, а не агрегацию?
![28.jpg](https://static.tildacdn.com/tild3866-3863-4035-a264-386261383139/28.jpg)
ChatGPT всегда подробно описывает свою работу. Используйте это. Спрашивайте, уточняйте, давайте больше контекста. ChatGPT не всегда сразу может справиться с поставленной задачей, но с помощью ваших подсказок вы сможете получить решение.
Доверяйте и проверяйте
Условный мыслительный процесс нейросети — это не то же самое, что человеческий разум. Часто он допускает очевидные ошибки, которых не допустил бы человек. Например, разработчик, если не знает как лучше решить задачу, спросит совет у команды или подойдет к лиду. В свою очередь ChatGPT так не умеет и в отсутствии данных будет делать все по наитию, часто выдавая нерелевантные ответы.
Проверяйте все получаемые ответы. Не забывайте, код-ревью — на вашей стороне.
Проверяйте все получаемые ответы. Не забывайте, код-ревью — на вашей стороне.