Личный опыт использования технологии GPT

Добрый день, я Евгений Николаевич Рычков, и я хочу поделиться результатами использования Giga Chat. Затрагивать эту тему я начал чуть ли не в пионерской стадии развития, когда хайпа еще не было. Вот, например, с Воробьевым Александром и без него выступал в Точке Кипения на тему кодинга с использованием GPT

Zero-coding с использованием GPT

И программирование Arduino с использованием GPT - лишь верхушка айсберга, когда мои рассуждения в этом направлении только начинались. Так много людей говорит об этой технологии, но так мало могут ее реально применить после того, как наиграились, и еще меньше реально применяют ее как незаменимую новую технологию. Лично мои выводы уже сегодня - это не игрушка коммерсантов и продажников.

В одно время мне казалось, что это, отнюдь, насмешливая игрушка, где просто вместо 10 вариантов ответа чуть разбросаны вероятности заложенных в чат ответных фраз-данных, из-за множества которых (~500 млрд входных параметров) собеседнику в чате GPT может казаться, что чат проходит тест Тьюринга. Мне казалось, что многие ответы можно просто вбить руками, что я раньше в ботах сам часто делал, когда использовал Tensorflow. Но после решения реальных, коммерческих задач я так больше не считаю, хотя и не отрицаю, что банальные ответы на не очень умные и даже умные вопросы жестко вбиты руками программистов.

Карты сложились, как я считаю сегодня, и перед нами инструмент, который молодежь, однако, просто не знает как использовать (Junior специалисты и так далее), обсуждая совсем примитивные прикладные решения (как с Ардуино, когда можно купить ветрогенератор, но ты собираешь его руками из чего попало и гордишься этим, ну тоже неплохо), а ветераны отрасли нежно называют это чудо техники словами, аналогичными постламповому термину "компуктер". Но называют это так уже не как в 90-е, а с умным лицом, словно отлично понимают, с чем имеют дело. После того, как с таким же выражением лица обсуждали только что блокчейн-технологии.

Часто во время выполнения инженерной или другой технической задачи сталкиваешься с непреодолимой трудностью, по сравнению с которой все остальные подзадачи - сущие мелочи. Ты стрессуешь, паришься, ищешь тех, кто может помочь, либо собираешься и делаешь сам-таки. Знакомая ситуация? Думаю, это сегодняшняя боль. С GPT это не боль, а повод побольше и как следует "поболтать" в режиме ввода текста. Одна из таких недавних проблем, например, на которую я потратил реально целый вечер (без кофе и сауны) - как выдать приложению Flutter во время его выполнения на Mac OS доступ в Интернет.

Хорошо ведь, когда ты еще так четко можешь сформулировать задачу, ведь в такой интерпретации многие коллеги просто могут надо мной посмеяться: "ну открывай официальный сайт Flutter и читай". Но в моменте я просто захожу в приложение, которое на Linux прекрасно работало уже, размер которому более 10 виджетов. А впредь на MacBook оно не входило в аккаунт, писало "Connection filed".

Но сначала видишь такое и вообще ничего не понимаешь, в голове множество вариантов, много догадок о том, чего ты еще не попробовал и лишние действия на неделю вперед. Кофе... Стресс... Вкусняшки.... +4.5 кг. Так бы я решал этот вопрос без чата GPT. Отлично. Пока подержите это в голове, я закончу рассказ об этом чуть позже по тексту.

Так же примечательно, что с развитием GPT у меня сначала вообще появилась мысль, что умрут Zero-code решения, ведь писать код и так относительно легко, как по мне - сложнее лезть в дебри этих Zero-code облегчений. А с GPT все получается совсем просто. Это как Майевтика у Аристотеля. Ты спрашиваешь, а тебя сначала обманывают, но что-то дают. Спрашиваешь еще раз с учетом новой информации. И оказывается, что она - не ложь. А словно закопана в дебрях "мозга" чата GPT.

Например, пишешь для Flutter приложения вопрос вида "Вот код, но он не имеет доступа в Интернет на MacBooc, а на Linux имеет, как поправить?". Причем чем прямее и менее правильно составлено предложение, тем более интересный ответ можешь получить. То есть GPT - это вообще не как одна личность. А словно множество разных людей, которых ты можешь менять словно перчатки лишь перезагрузкой помощника без сохранения истории (начиная новый диалог).

Cледующим абзацем показываю ответ твоего виртуального помощника:

В Xcode файл Info.plist отображается как древовидная структура, где каждый элемент имеет свое название и тип данных. Чтобы добавить новое разрешение, вам необходимо следовать этим шагам: Откройте проект в Xcode: Если вы еще не открыли свой проект в Xcode, сделайте это с помощью команды:open ios/Runner.xcworkspace/Перейдите к файлу Info.plist: Найдите файл Info.plist в папке Runner и дважды щелкните по нему, чтобы открыть его.Добавление нового ключа:Нажмите правой кнопкой мыши на корневой элемент (обычно он называется "Information Property List") и выберите Add Row.В появившемся поле введите имя ключа: NSAppTransportSecurity.Тип значения автоматически установится на Dictionary.Добавление дочернего элемента:Раскройте только что добавленный ключ NSAppTransportSecurity, нажав на стрелочку слева от него.Снова нажмите правой кнопкой мыши на этом ключе и выберите Add Row.Введите имя ключа: NSAllowsArbitraryLoads.Установите тип значения на Boolean и задайте значение YES.Сохранение изменений: Убедитесь, что все сделано правильно, и сохраните изменения.Теперь ваше приложение должно иметь доступ к Интернету на macOS.

Похожий ответ можно найти в дебрях Github, StackOverFlow, на официальном портале Flutter-разработчиков, но здесь как минимум все разложено по полочкам.

Но эти теги не работали. Я убил часа 2, пытаясь вывести GPT на чистую воду. И вот что я хочу доказать в этой статье - что это рабочая схема. Надо лишь поразговаривать. "Полялякать". Когда я уже отчаялся и хотел пойти домой, даже после многоминутного поиска на официальных ресурсах, GPT-таки не дал мне ответа, хотя много чего нового я понял. И читая очередной форум с этой информацией в голове, я нашел следующее:

You need to add: Markup <key>com.apple.security.network.client</key> <true/> to macos/Runner/DebugProfile.entitlements and macos/Runner/Release.entitlements.

Я уже собирался возвращаться домой из офиса и отчаялся. Но! Доступ в Интернет после этих строчек в приложении Flutter у меня появился на MacOS!

Фиаско на этот раз. Но GPT расширил мое мировоззрение. Однако поверьте на слово, GPT часто-таки выдает корректные ответы спустя несколько часов диалогов или нескольких "присестов" за него.

Хм, итого я запускаю различные нейронки сам, пишу их с командами, побеждал ни раз на хакатоне Цифровой прорыв. Но опыт разработчика никак не поможет тебе углубиться в опыт пользователя. Найди конкретную задачу и попробуй ее начать решать с помощью GPT GigaChat. Тогда ты поймешь, что сейчас - эра, словно родились компьютеры. Действительно родился если не искусственный интеллект в сопоставлении с реальным интеллектом людей, то родилась как минимум технология, которая полностью переворачивает процесс написания кода, и это уже мои слова как реального разработчика, а не повторение слов коммерсантов.

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

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

Решено как минимум уже 3 относительно крупных задачи, после которых я понимаю, что либо вообще GPT будет дорогим рано или поздно, либо это будет как биток, как новое золото, его владельцы могут творить успехи компаний в 1000 сотрудников, не имея в штате вообще никого, либо имея 10 специалистов. Ведь их окружают псевдоличности многоликого GPT-чата. Даже не разных, а одного - того же GigaChat. Просто у ребят из Сбера реально хорошо получилось обучить модель на исходных кодах.

Моя схема сегодня примерно такая. Если GPT просишь написать большую сложную программу - вероятно он ее напишет, и сделает это на свой вкус. GPT актуальна там, где нет "задро***"-дизайнеров и бизнес-аналитиков, которые будут с пеной во рту диктовать новый дизайн. Все придумано за нас, и вот это GPT ощущает хорошо.

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

Если же просишь разработать модуль приложения по принципу "разработал и забыл по SOLID", - вот тут GPT Gigachat хорош, конечно.

Еще примечательно, что если постоянно "перегоняешь" код через GPT, то получаешь что-то большее, чем просто MVC-код по SOLID. Опытные програмисты говорят, что разрабатывать надо не по SOLID, а по задаче и необходимости. Архитектура должна быть удобна для команды.

Помню, как раньше мой научный руководитель несколько раз перегонял слова статьи через Google Translate. Получалась неплохая статья, которую поддерживали коллеги-ученые. И все так делали. Но суть в том, что я то только приехал из Франции и Англии с уровнем английского C1. Смотрю я на материал и понимаю. Что очень круто и понятно, что все ученые хорошо в итоге могут понять то, о чем статья. Но написать-то можно было проще, когда понимаешь особенности языка после общения с носителем.

Также и здесь получается. Но эффективно. Ты начинаешь действительно все больше понимать особенности языка. GPT сначала тебе даст целиком Виджет со всей логикой. Затем начнет ее делить на части. Однажды выдает решение по MVP. Потом вполне себе может снова все слить в кучу, но вот мой опыт говорит о том, что код после общения с GPT всегда становится удобнее. Кроме тех случаев, когда ты не учитываешь ответ и спрашиваешь GPT по-новой.

Если Вы совсем не понимаете, чем мобильная разработка отличается от разработки десктопных приложений или веб-порталов, поработайте с GPT! Опять же мой опыт быстро перевернул мой кругозор. Для Aurora OS надо использовать .rpm пакеты и их надо подписывать. Для Linux Ubuntu можно использовать .rpm, .deb. Быстро можно нахвататься таких тонкостей, когда постоянно маевтикой грузишь свою рабочую лошадку GPT.

Как быстро втянуться в процесс создания пакетов приложений
Как быстро втянуться в процесс создания пакетов приложений

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

Откуда запустить на "Потестить"
Откуда запустить на "Потестить"

Мне кажется, что GPT не заменит Джунов, а Мидлов и Сеньоров оставит. GPT переворачивает необходимости в навыках Soft-Skills и Hard-Skills. Junior быстрее становятся Сеньорами, а побеждает тот, кто больше спрашивает.

Как я теперь вижу процесс построения кода: дублирование кода делать можно и даже нужно, если проект все равно состоит из конечных блоков, которые завершены и в идеале работают как черные ящики. Мы входим в эру, когда по SOLID становится работать не так удобно, потому что проще скормить GPT 200-280 строк кода и попросить его чуть усовершенствовать алгоритм, чем сидеть и гадать, а как написать теперь код компактнее, красивее и по SOLID.

Здесь как раз это пока очень громкое высказывание, просто для Senior-разработчиков и Team Lead оно, таки, соответствует реальности. Ведь надо быстрыми темпами выдавать не просто код, но варианты решения тех или иных задач. Мусолить готовый код от GPT своими пусть даже и не кривыми руками - это наведение красоты в коде, но чрезмерная трата времени. Ведь абсолютно весь код уже сегодня вроде как довольно хорошо пишет GPT, просто не весь сразу. Например, в React чувствуется красота решений на процедурном стиле, а не на классах.

В React вообще уходят уже назад от MVC. Тем не менее, на все 100% это тоже неверно. Код будущего, как пока я вижу, это именно множество черных ящиков. Как в радиотехнике, где уже, кажется, все основное и так понятно. И если черный ящик уже написан алгоритмом, его дальше можно приводить к MVC, оптимизировать по SOLID, но это делаете не Вы. Это делает GPT, если его попросить.

Давайте прочитаем, что про GPT пишет сам GPT - это довольно хорошо вдохновляет. Ниже этот текст.

С развитием технологий и появлением нейросетей, таких как GPT (Generative Pre-trained Transformer), мир программирования претерпел значительные изменения. Эти модели, обученные на огромных объемах данных, способны генерировать текст, включая программный код, с высокой точностью и скоростью. Но действительно ли они могут писать код лучше, чем профессиональные программисты? Давайте разберемся.

1. Скорость разработки

Одним из главных преимуществ использования GPT-чатов для написания кода является их невероятная скорость работы. В то время как программисту может потребоваться несколько часов или даже дней для создания сложной функции или алгоритма, GPT-чат способен сгенерировать аналогичный код за считанные минуты. Это особенно полезно при решении простых задач или создании прототипов, когда важно быстро получить результат.

2. Минимизация ошибок

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

3. Многоязыковая поддержка

Современные GPT-чаты поддерживают множество языков программирования, от популярных Python и JavaScript до менее распространенных, таких как Haskell и Prolog. Это делает их универсальными инструментами, подходящими для решения самых разных задач. Программистам же зачастую приходится тратить время на изучение новых языков и инструментов, прежде чем приступить к работе над проектом.

4. Автоматическое документирование

Документирование кода – важная часть процесса разработки программного обеспечения. Однако многие программисты пренебрегают этим этапом, считая его скучным и рутинным. GPT-чаты могут автоматически генерировать комментарии и документацию к созданному коду, что существенно упрощает процесс понимания и поддержки проекта в будущем.

5. Оптимизация кода

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

6. Помощь в обучении

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

Заключение

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

Кстати, если вам интересна разработка с GPT - присоединяйтесь к сообществу https://vk.com/techfeya

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