Всех приветствую. В свое время, когда ChatGPT только запускался и сфера IT была на волне хайпа ИИ, когда чуть ли не каждый в айти, кто не связан с непосредственно написанем кода/хард скиллами, твердил (или хотел верить), что теперь программистов заменят, мое отношение к новым технологиям, как и у многих (не считая тех, кто работал в сфере ИИ), было таким же, как у художников/дизайнеров, а именно непринятие и полная убежденность в том, что это не нужно и никогда не заменит программистов, и что для работы программиста у нас уже все есть.
Но с течением времени, технология распространялась, появлялось все больше игроков с бесплатными предложениями, ИИ все больше находило применение среди самих программистов, и менялось также мое отношение к нему. В итоге я пришел к позиции, как у некоторых художников/дизайнеров, а именно к тому, что полностью ИИ вряд-ли когда-либо заменит человека, но почему бы не идти в ногу со временем и не использовать его себе на пользу. Именно поэтому я решил написать эту статью и поделиться опытом использования чат-ботов с ИИ в своей работе.
Для чего нужна эта статья, какую пользу она несет и почему я решил ее написать? Собирая свою внутреннюю статистику среди знакомых коллег, я пришел к выводу, что до сих пор достаточно людей, не использующих ИИ в работе. Погуглив по теме "как программисту использовать ИИ", увидел, что в топе пара статей с Хабра, одна из которых скрытая реклама одной компании, с размышлениями о том, что именно было бы хорошо, если бы ИИ мог делать, чтобы сильно помочь программисту, и немного о том, почему в конечном итоге AI не заменит полностью программистов, а вторая - это короткая статья с примерами, как AI уже помог улучшить что-то в программировании, и как он, опять же, не заменит программистов. Поэтому захотелось написать статью, больше направленную на практику, с некоторыми реальными примерами.
Ну и, справедливости ради, периодически вижу на Хабре достаточное количество "около айти" статей, не связанных напрямую с хард скиллами, поэтому решил, что если и сам напишу статью, в которой не будет напрямую много хард скилла, но которая может принести практическую пользу начинающим и практикующим программистам, то ничего страшного не произойдет. Да и к тому же наткнулся в интернете на рекламу курсов по использованию ИИ, что уж на отдельные, тем более платные курсы, точно не тянет, а вот бесплатную статью написать можно. Ну что, надеюсь существование такой статьи я оправдал, поэтому перейдем непосредственно к теме. То, что AI не заменит программистов мы уже поняли, но хотелось бы уже перейти реальным кейсам и опыту использования чат-ботов на практике. Заодно также поделюсь небольшими наблюдениями о их работе с точки зрения среднестатистического программиста, не работающего в сфере AI и успешно не ходившего на спец. курсы по этой теме.
Итак, первое и основное - это, конечно, краткий обзор доступных вариантов. Прежде чем начать, стоит сказать, что все чат-боты лучше всего работают с английским языком, поэтому многие могут выдавать информацию на английском, даже если ввести запрос на русском, поэтому стоит держать в уме, что подразумевается использование именно на английском языке. Теперь касательно непосредственно чат-ботов. Ясное дело, что вариантов, в том числе имеющих свободный доступ, на данный момент достаточно много, топ вы легко можете найти в вашем любимом поисковике, но я расскажу про продукты больших компаний, те, которые на слуху и которые, по моим наблюдениям, используются наиболее широко:
ChatGPT - самый очевидный и популярный вариант, разрабатывается и поддерживается компанией OpenAi. Имеет бесплатную версию 3.5, которая ограничена данными до 2021 года и не имеет доступа в интернет, и 4 версию - платную, не ограниченную 2021 годом и имеющей доступ к интернету.
По своему опыту использования могу сказать, что из всех вариантов, именно ChatGPT предоставляет наиболее удобный интерфейс и быструю генерацию, составляет наиболее связные ответы, лучше понимает запросы и контекст. Однако очевидно, что использовать бесплатную версию нужно помня о том, что информация ограничена данными до 2021 года.
1. Microsoft Bing Chat. Тоже относительно новый, по крайней мере пока не так широко используемый вариант, вышел на рынок в феврале 2023 года. Минус в том, что UI достаточно неудобный: использовать нужно в поисковике, медленная анимация генерации, которая останавливается, если снять фокус с вкладки, и отвечает зачастую достаточно коротко, даже в "точном режиме".
Однако самый главный плюс в том, что работает он на ChatGPT 4 версии, что гордо написано в названии страницы (однако если спросить самого чат-бота работает ли он на ChatGPT4, то он отвечает что нет, что забавно), это значит, что он имеет доступ к интернету и обрабатывает актуальную информацию. То есть можно получить бесплатный доступ к технологии OpenAI, хоть и с небольшими минусами. Поэтому не выделяю его отдельно и далее буду называть его просто ChatGPT4.
Google Bard. Относительно новый "игрок" на рынке, в данный момент находится все еще в стадии разработки, однако уже открыт публике, был выпущен в марте 2023 г. Из своего опыта скажу, что пока отвечает часто не связно, не совсем то, придумывает то, чего нет (например может придумать maven зависимость, которой не существует), однако его большой плюс по сравнению c ChatGPT в том, что он в бесплатной версии имеет доступ к интернету и не ограничен данными до 2021 года, т.е. обрабатывает актуальную информацию, однако он ограничен по размеру ответа, но на практике мне это пока не мешало.
Разумеется, есть еще варианты, какие-то более известные, какие-то менее, но статью я пишу из своего опыта использования, а мне пока что было более чем достаточно этих 3 (2) вариантов, по сути сравнение идет между ChatGPT и Bard, со сноской на то, какая версия ChatGPT имеется ввиду. Итак, с доступными чат-ботами разобрались, как же можно их использовать, как они могут пригодиться программисту в работе? Если суммировать коротко: забудьте про Google и другие поисковики. Зачем писать специфичный вопрос в поисковик, серфить кучу сайтов и ответов, слабо связанных конкретно с вашей ситуацией, чтобы в итоге найти ответ где-то на затворках интернета? Именно эту проблему хорошо решает ИИ, и именно так я его и использовал до сих пор.
Давайте пройдемся по парочке конкретных кейсов использования, когда это действительно может принести пользу:
Получение информации об утилитах/настройках Линукса.
Это самый простой пример использования. До сих пор, основным аргументом против Линукса у его не любителей являлось нежелание пользоваться терминалом, проводить его настройку, читать документации и т.д. Забудьте про все эти проблемы. Теперь достаточно набрать в любой из этих чат-ботов интересующий вас вопрос, вроде "scp copy folder" и вспомнить, что флаг для копирования папки это
-r
, или спросить "ubuntu make shift alt change languages" и получить ответ.Кстати говоря, для сравнения, с этим вопросом лучше всего справился ChatGPT4 (Bing), выдав актуальный и рабочий вариант. Конечно, кто-то может сказать, что легче вызывать help у утилит, легче пользоваться Гуглом, легче самому везде копаться, но это уже дело вкуса, всегда будут олды, кто за хардовый старый стиль. Однако тем, кому легче посмотреть ответ в человекочитаемом варианте, коротко по делу, легче воспользоваться чат-ботом. Это также сокращает время, теперь достаточно держать вкладку любимого чатбота открытой, и спрашивать у него все по необходимости. Сисадмины/девопсы/линуксоиды ликуют.
Изучение/разъяснение незнакомых технологий.
Допустим, вы впервые столкнулись с конфигурационным файлом CircleCi, gitlab-ci, незнакомыми настройками в application.yml, незнакомой конфигурацией nginx и т.д.
Пойти изучить вопрос с нуля, по официальной документации и гуглу - достаточно трудо/время затратное дело, однако, скопировать файл и скормить его любимому чат-боту, подписав в начале "explain this file" - дело 5 секунд.Также как и дело 5 секунд спросить базовую информацию по незнакомой технологии, спросив "what is nginx, how it's used, how commonly it's used" и т.д. Однако помните, что скармливая файлы, предварительно стоит удалить какую-то приватную информацию, потому что, например, Bard до сих пор в стадии обучения и вполне может сохранить ваш код, если найдет в нем что-то полезное (источник: сам же Bard).
Теперь касательно сравнения работы чат-ботов, справедливости ради, с задачей разъяснения файлов или первого знакомства с технологиями, достаточно неплохо справляются и Bard, и ChatGPT3 версии и, разумеется, 4-й (Bing).
Второе мнение.
Иногда, чат-ботов можно использовать, чтобы узнать насколько будет нормально, если сделать "так", насколько распространено делать "так", используют ли что-то тем или иным образом. Конечно, это не сеньор или тимлид, мнение которых скорее всего будет решающим в каких-либо вопросах, однако, если в вашей компании приветствуется открытый конструктивный диалог, чего я всем желаю, то перед тем, как пойти спорить о чем-либо, вполне можно узнать мнение чат-бота, и, возможно, где-то сослаться на него (но, конечно, не стоит воспринимать их ответы как абсолютную истину).
А тем более можно поинтересоваться мнением чат-бота, если у вас есть свобода действий, и вы делаете что-то впервые, или не уверены в чем-то. Например, стоит ли использовать spring gateway или можно обойтись nginx, какой naming convention стоит придерживаться в каком-либо случае, какого подхода проектирования api лучше придерживаться в каком-то конкретном случае, и т.д.
По своему опыту скажу, что более связно отвечает ChatGPT, однако стоит помнить, что если у вас вопросы по относительно новым темам, стоит воспользоваться 4-й версией.
Генерация кода.
Пожалуй это единственный пункт, который я не совсем одобряю и не часто использую, однако, стоит его упомянуть. Иногда бывает полезно попросить чат-бота сгенерировать какой-либо файл конфигурации, пример использования какой-либо технологии, спросить пример кода, как можно что-либо решить, и т.д., вместо того чтобы, опять же, лезть в архивы своих репозиториев и копировать что-то оттуда, или идти в Гугл и искать нужный тебе пример.
Из опыта скажу, что Bard достаточно неплохо справляется с данной задачей, однако, как я уже упомянул ранее, иногда может выдать отсебятину по аналогии (например, как-то он выдал мне несуществующую maven зависимость, назвав её по аналогии с другими). У ChatGPT пока такой проблемы вроде не наблюдалось, и с этой задачей он справляется хорошо.
Анализ кода.
Иногда бывает такое, что что-то не работает, и не понятно почему. В таких случаях также можно использовать чат-ботов, скормив им конфигурационные файлы, и спросив "I want ... but it doesn't work, what is the problem here?". Или иногда смотришь на код, он тебе не нравится, но тебе лень его рефакторить самостоятельно, а джуна под рукой, чтобы поручить ему эту задачу, нет. В таких случаях также можно скормить код чат-боту и попросить отформатировать его в соответствии с какими-либо указаниями.
Лично я функцией рефакторинга пока не пользовался, однако пользовался функцией "че-то не работает, подскажи что". Из опыта скажу, что в Bing неудобно скармливать что-либо, часто он сам сворачивает ответ, если он получился большой, и приходится как-то подстраиваться, Bard достаточно неплохо справляется с анализом, однако, не всегда точен, а бесплатная версия ChatGPT справляется хорошо, но нужно помнить про ограничение.
Ну что же, на данный момент это все кейсы использования чат-ботов, с которыми я лично столкнулся, нашел их полезными, и которыми решил поделиться. Очевидно, что достаточно большой процент уже и так пользуются ИИ, и эта статья для них много полезной информации не несет, однако, все же думаю, что она будет полезна начинающим разработчикам, не знавшим как можно использовать ИИ, поможет кому-то пересилить неприязнь к ИИ и использовать его на практике, поможет кому-то взглянуть на ИИ с новой точки зрения и использовать его новым для себя способом. Ну а напоследок добавлю парочку honorable mentions, которые связаны с программированием не напрямую, либо с которыми я лично не столкнулся, а соответственно не могу что-либо сказать конкретно
Анализ данных.
Где-то читал, что чат-ботов можно использовать для анализа данных. Однако, по крайней мере, в веб версиях данных чат-ботов, функции загрузки файлов я не увидел. Однако, очевидно, что можно использовать API. У ChatGPT АПИ платное, поэтому конкретно сказать, насколько игра стоит свеч - не могу, т.к. не использовал его таким образом, да и кажется это противоречит посылу статьи "открой вкладку с чат-ботом, используй вместо гугла", вряд-ли кто-то вместо этого захочет писать себе утилиту для использования, к тому же платную. Но если кто-то все-таки захочет, то АПИ Bard пока бесплатное.
Генерирование картинок.
Не стал включать это в основной список потому, что это связано с конкретной нишей, а именно game dev'ом. Однако не упомянуть об этом тоже нельзя. Недавно узнал, что нашумевшее "Бесконечное лето" было сделано на бесплатном движке, работающем на Python2. Узнав это и вдохновившись трендом на dark fantasy генерации в ТикТоке, подумываю попробовать в качестве хобби разрабатывать свою игру. И, очевидно, в этом очень сильно поможет генерация картинок. С этической точки зрения, не считаю, что это что-то неправильное, ведь куча маленьких гейм-дев студий и энтузиастов, кто просто не может себе позволить нанять или найти профессионального художника, однако с нынешним качеством генераций картинок, вполне может использовать персонажей, фоны и т.д., сгенерированные ИИ, немного применив к ним навыки фотошопа и рисования. Поэтому если кого-то заинтересовала эта тема - пишите в комментарии, возможно, что-нибудь придумаем.
Ну а касательно технологий, то самыми передовыми на данный момент считаются Dall-E 3 и Midjourney. Microsoft снова приходит на помощь, и предоставляет бесплатный доступ к генерации картинок Dalle, ограниченный токенами, которые можно заработать, выполняя задания на платформах Microsoft. Midjourney, к сожалению, платный, работает по подписке, предоставляя интерфейс в их Discord сервере, АПИ, даже платного, пока не имеет.
![Т.к. к теме статьи сложно привести какую-либо иллюстрацию, держите изображение, сгенерированное мной в Midjourney в стиле того самого dark fantasy. Если кого-то заинтересовал prompt или кто-то узнал персонажа - пишите в комментарии. Т.к. к теме статьи сложно привести какую-либо иллюстрацию, держите изображение, сгенерированное мной в Midjourney в стиле того самого dark fantasy. Если кого-то заинтересовал prompt или кто-то узнал персонажа - пишите в комментарии.](https://habrastorage.org/getpro/habr/upload_files/495/963/789/4959637891bd8a652b27d36e37ab9afc.jpg)
P.S: ChatGPT, Bard и Bing AI недоступны на территории России. Однако на волне этой недоступности, в телеграмме появилась куча ботов, предоставляющих доступ к ним. Думаю, в некоторых из них есть и возможность загрузить файлы, для кейса анализа данных. Но точно знаю, что в некоторых есть доступ к генерации картинок Midjourney, однако, ограниченный. В общем, это все уже детали того, как найти доступ и использовать эти технологии, поэтому эти моменты я не стал поднимать в основной части статьи, как говорится, желающий найдет.
UPD: Да уж, ну и заминусили, хотя видал я статьи откровенно и похуже, гораздо менее связанные с тематикой Хабра, которые не минусились так активно... Ладно за "низкий технический уровень материала", хотя я указал "простой уровень" материала и объяснил причины существования статьи, но за "личную неприязнь", "несогласие с изложенным" и "небрежное оформление" можно уж не минусить, тем более что над оформлением я вроде как поработал... Эх, видимо, пора заканчивать писать статьи на Хабре, хотя вполне возможно, что эта статья, как моя предыдущая, соберет множество просмотров и закладок, а значит будет кому-то полезна, что для меня важнее рейтинга, но будет в минусе по итогу. Видимо, все-таки писать здесь статьи иногда себе дороже, предупреждали меня об этом, а я не верил, печально это немного, конечно. Ну да ладно, статью все равно оставлю, накормлю какой-нибудь чат-бот, активно серфящий интернет, маленькой долей информации.