Как я использую ChatGPT каждый день

Как я использую ChatGPT каждый день

Алексей Гулев
Как-то так ChatGPT и DALL-E 3 видят картинку для этой статьи в блог. Я бы не стал её вставлять, но друг попросил меня не добавлять мемы в посты, да и сюда она прямо хорошо подходит.

Очередной подход к написанию этого поста.

Сначала я хотел рассказать, что в хайповом мире нейронок годится для практического использования, а что нет. Набросав план, понял, что писать книгу, которая устареет к концу её написания, я не планирую.

Затем хотел развеять мифы и критически разобрать самые раскрученные бесполезные кейсы, но их генерируют быстрее, чем можно успеть что-то разбирать. Они сами отсеются временем.

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

Работа с текстом

Вот что DALL-E 3 сгенерировала, когда я попросил создать иллюстрацию для этого поста в блоге, добавив текст этого раздела.

Мне кажется, всё, что связано с текстом, — это первые из полезных областей применения.

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

Заготовленные чаты — это обычно чат, где я задал промпты, что ChatGPT должен делать по моему сообщению. Обычно это что-то похожее на: "независимо от того, что я тебе переслал, поправь все ошибки и ответь с исправленной версией, ничего больше не добавляя". Создаю несколько чатов: белорусский, английский, русский. Ещё есть английский чат, где я прошу пояснить ошибки. Результат я всё равно вычитываю и убираю то, что я бы никогда не использовал, и возвращаю свои варианты фраз, даже когда они не совсем правильные. Я всё ещё хочу, чтобы это были мои тексты (может, за исключением случаев документации). Чаты, которые я часто использую, время от времени приходится пересоздавать, так как, когда чат становится слишком большим, вместо исправления ошибок, он начинает отвечать, воспринимая входной текст как промпт.


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


Чистую генерацию текста использую редко, чаще всего только для маркетинговых абстрактных текстов, как, например, описание игры в Google Play, где вхождение определённых ключевых слов в органичной форме куда важнее содержания этого текста. Но опять же лучше проверять такие тексты как с точки зрения лингвистической и смысловой, так и с точки зрения конечной цели (в случае с Google Play помогут A/B тесты).


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

Работа с кодом

Иногда старый добрый гугл справляется з задачей поиска изображения лучше

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

Я нахожу самым полезным и подходящим для генерирования изолированный код, требующий минимум контекста:

  • python-скрипты, работающие с файловой системой или нужным форматом данных, например: валидация или обработка изображений, конвертация форматов, парсинг, все задачи вида "найди все файлы с расширением N в указанной папке и сделай M" и т. д.; 
  • примерно то же самое с bash-скриптами; 
  • чистые функции; 
  • unit-тесты.

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

https://github.com/defold/extension-ironsource/tree/main/updater

Такого рода скрипты пишутся за 1-3 промпта, количество входной информации достаточно небольшое, чтобы время на получение результата действительно экономилось. Кроме того, правильность работы такого кода легко проверить.

Ну и, конечно, выполнять такие скрипты нужно на папках с версией контроля или дубликатах ваших основных файлов.


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

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

Изображение себе, а полигон себе

Входные данные вот такие, и сходу разобраться в них не то чтобы просто:

{:vertices [0.5 -0.44921875 0.3984375 -0.5 -0.5 -0.5 -0.5 0.15234375 -0.37294176 0.30571663 0.015625 0.5 0.3984375 0.5 0.5 0.44921875], :center-y 74.0, :uvs [0.022460938 0.4609375 0.009765625 0.51171875 0.009765625 0.9609375 0.17285156 0.9609375 0.21119478 0.89740837 0.25976562 0.703125 0.25976562 0.51171875 0.24707031 0.4609375], :rotated true, :width 128, :center-x 138.0, :indices [0 1 2 0 2 3 0 3 4 0 4 5 0 5 6 0 6 7], :trim-mode :sprite-trim-mode-8, :height 256}

Показал чату, обсудили, попросил визуализировать:

Сразу стало понятно, что к вершинам не применяется поворот, причём до применения матрицы трансформации.

Образовательная функция

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

Самым важным для меня здесь будет использование чата для чтения и понимания кода. В свободное время я люблю выбрать какой-нибудь баг-репорт по редактору Defold, написанный на Clojure, и попытаться этот баг исправить. Этот язык для меня новый, и его синтаксические конструкции всё ещё выглядят непривычно, особенно с учётом того, что в остальное время я работаю с Си-подобными языками. Поэтому я нахожу очень полезным скинуть какую-то часть кода в чат и попросить его пояснить, затем спросить, какими средствами языка реализуется та или иная конструкция. Вот вам пример кода, попробуйте спросить ChatGPT сами:

https://github.com/defold/defold/blob/bc7a3394cdd8e86dba7c7cce7bd6d2d9c56f24fa/editor/src/clj/editor/build_errors_view.clj#L154-L165


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


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

Генерация изображений

Выше есть иллюстрации где я не старался и DALL-E 3 тоже не старался, тут я решил не вставлять еще одно такое изображение

Использование генерируемого арта, если у вас нет в команде человека, который в этом разбирается и отвечает за арт, — это просто новая реинкарнация программистского арта.

Все более или менее удачные практические кейсы генерации арта у меня сводятся к тому, что я придумал проект под генерируемый арт, а не наоборот.

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

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

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

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


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

Вместо вывода

Мое отношение к хайпу вокруг нейронок и предвкушающее "если оно сегодня вот как, то завтра ухххх", можно описать вот этим мемом:

Думаю, по этой статье видно, что я не техно-оптимист. Это никак не мешает мне использовать нейронки в том или ином виде каждый день. Меня интересует практическая сторона вопроса. Ко всему с лейблом AI я отношусь как к ещё одному инструменту, который либо реально решает какие-то проблемы, и тогда его нужно использовать. Либо просто придумывает новые проблемы, которых не существовало и решать не нужно, и тогда это не очень интересно.

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

В целом про LLM
Про токенизацию

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

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

Обсудить и задать вопросы можно тут: https://t.me/GameDevLogs/33


Report Page