Нейроночки: ChatGPT
Дмитрий Бахтенков
Нейронные сети всё плотнее входят в нашу жизнь - начиная от различных рекомендательных систем, например в Spotify или Яндекс Музыке, заканчивая Mindjourney и ChatGPT. Слова о том, что “нейросети заменят программистов” уже не кажутся шуткой, а при должных навыках составления запросов сделать простой дизайн на генеративных нейронках может любой prompt-engineer.
В этой статье мы поговорим о ChatGPT. Как его можно использовать, какие ограничения и вообще что это и зачем.
ChatGPT
Ну и начнём, наверное, с самой нашумевшей в последнее время нейронки - ChatGPT.
ChatGPT — чат-бот с искусственным интеллектом, разработанный компанией OpenAI, способный работать в диалоговом режиме и поддерживающий запросы на естественных языках. ChatGPT — большая языковая модель, для тренировки которой использовались методы обучения с учителем и обучения с подкреплением. Данный чат-бот основывается на другой языковой модели от OpenAI — GPT-3.5 — улучшенной версии модели GPT-3.
(с) Википедия.
Вообще, OpenAI - компания, которая плотно занимается нейронными сетями и связанными с этим всем технологиями. Одним из её основателей является Илон Маск.
А ещё OpenAI не совсем Open. А жаль 😟
Что он может?
Как было написано выше, ChatGPT работает в формате диалога. Так давайте же спросим, а что, собственно, он умеет?

Звучит так, как будто он умеет всё 🙂
Для тех, кто не любит много читать: ChatGPT умеет общаться, отвечать на вопросы, генерировать тексты, и всё это в рамках диалога на естественном языке
Ещё я спросил его про ограничения:

Не может выполнять сложные творческие задачи, ограничен базой данных на конец 2к22 года, нет эмоций. Понял, принял.
Как я его использую
Идея использования ChatGPT для упрощения жизни пришла мне благодаря телеграм-каналу “Пределы профессионализма” и вот этой статье. Мне зашло, и я решил попробовать.
В первую очередь, ChatGPT неплохо составляет планы. Для теста я попросил его составить план изучения DevSecOps, посоветовать литературу, рассказать об основных задачах DevSecOps-специалиста и сравнить его с обычным ИБ-специалистом. Вышло неплохо, книги вроде существующие, информация понятная. Бери и учи.

При желании можно попросить составить под-план для каждого пункта и много чего ещё. Но так как это был тест - к теме DevSecOps я уже немного остыл - я решил попробовать что-то ещё.
В моём текущем пет-проекте есть модуль парсинга текста - с помощью регулярных грамматик мы вытаскиваем из свободного ввода даты, например “Завтра в 9 иду гулять” → “Гулять”, “25.02.2023 9:00”. (Делал я это с помощью библиотеки, в которой парсинг уже был заложен, а не с нуля, если что)

Я попросил его сделать такой парсер для русского языка на C# и написать под него тесты.

На первый взгляд норм, он даже написал тесты:

Но тесты не проходят, код не работает как надо. Потому что задача нетривиальная, да и русским языком он работает хуже, чем с английским.
Далее я написал статью про кэш вместе с ChatGPT - тут уже лучше, хотя он внёс некоторую путаницу в понятие “Тип кэша”.
План статьи:

Детализация разных пунктов:

И так далее. Это неплохо ускорило написание статьи, да и в целом довольно удобный инструмент.
А ещё он очень хорошо кодит на питоне - за час я написал простое API на FastAPI и SQLAlchemy. С минимальными правками оно запустилось и вроде как заработало

Но задачка была максимально тривиальная, да и пайтон очень популярен - результат не удивляет.
Подводя итоги, лично я использую ChatGPT следующим образом:
- Написание статей и их планов (для этой статьи он тоже использовался)
- Рутинные штуки в коде (CRUD- операции, несложные тесты)
- Написание планов обучения и первичный рисёрч информации
Ограничения ChatGPT
Самое главное ограничение в ChatGPT - он может обмануть. Посоветовать несуществующую библиотеку, статью, книгу, подсказать кривую регулярку и неправильный код. Поэтому при исследованиях нужно проводить фактчекинг (это нетрудно), при кодинге надо проверять код и т.д.
Например, я общался с ним про реализацию протокола ActivityPub на Python, и он посоветовал несуществующую библиотеку (или она в приватном репозитории):

Я сказал ему об этом, и вот что получил в ответ - две из трёх предложенных ссылок невалидны:

Ну ещё ChatGPT недоступен в России, и он имеет ограничение на количество входящего текста и на размер ответа. Первая проблема решается иностранным номером телефона и впн, а вторая - словом “continue”, если вы заметили что бот не договорил. Так что это мелочи.
Выводы
ChatGPT - это в первую очередь удачный эксперимент в области генеративных нейронных сетей. На данный момент он много чего не умеет, и остро стоит проблема, например, достоверности информации. При этом уже сейчас его можно использовать, и он будет приносить пользу.
ChatGPT пока что не способен заменить программистов. Он неплохо пишет некоторые рутинные штуки - коннекты к БД, CRUD, простые тесты, но как только задача выходит за рамки этой рутины - он становится плох.
Ну и под конец - по мнению ChatGPT ИИ не захватит мир (или я его плохо уговаривал)
