Transcription
Ну что, всем привет. Опять пятница. Мы снова продолжаем знакомиться с тем, как искусственный интеллект меняет индустрию, в том числе рынок разработки. А, и сегодня у нас вебинар на весьма интересную тему. Мы поговорим о том, как меняется, собственно, промтинг, потому что, ну, как промт-инжиниринг, как термин, мне кажется, уже довольно давно, как это и безбожно устарел. Стыдно-то и говорить про такое. А, и сегодня мы перешли уже давно находимся в процессе, скажем так, миграции к новым, а, методам взаимодействия. Ну и, собственно, сегодня и поговорим, что такое инжиниринг контекста, чем это отличается от промт-инжиниринга, а почему так важны спецификации при разработке, ну, и так далее и тому подобное. А, и сегодня с нами традиционно Майк Савченко. Спасибо ещё раз, что э присоединился к нам. Э-э, в общем, не не не знаю, расскажешь сам поподробнее про актуальные изменения в твоём проекте или я могу чуть-чуть рассказать, но лучше, наверное, давай ты как раз расскажи.
>> Давай пере сейчас, наверное, мне нужно перезайти будет, потому что у меня Zoom просит это вот, чтобы я ему выдал права на шеринг. Сейчас я 2 секунды вернусь.
Супер, всё, я вернулся. А по поводу новых проектов, слушай, да, очень много такой прямо оперативной информации накопилось. А, поделюсь такой интересной историей. Я планирую сегодня на ней прямо построить своё повествование. У нас получается вот в "Инайте" есть ряд направлений. И [музыка] у нас для каждого направления есть свой лендинг. И лендинг для каждого из этих направлений у нас до текущего момента был на "Тильде", а сейчас мы что-то решили с этой "Тильды" переехать. Вот. И у меня вот последний прямо такой опыт, который я ещё начал сразу там с коллегами шерить, потому что, ну, у нас там вообще ассистент лендингами занимается. Это, собственно, как с "Тильды" переехать на вайп-кодинг. Ну, потому что интуитивно вроде бы понятно, что чем там в "Тильде" что-то пытаться редактировать. В ней редактор там, на мой вкус такой довольно отвратительный. А-а проще взять это всё загнать куда-то условно под курсор, и ты тогда можешь фактически м сидеть и диктовать, что там поменяй текст в таком-то блоке или там поменяй такой-то блок. Вот. Но сначала, соответственно, нужно сайты с "Тильды" в курсор смигрировать. Вот я этим процессом начал заниматься. Он очень сильно связан аа с тем, о чём мы сегодня будем разговаривать. А, во-вторых, нужно из этого какой-то тоже сделать контролируемый процесс, потому что у нас есть такой очень большой мм нюанс с вайп-кодингом, что результаты этого вайп-кодинга, они, во-первых, очень сильно не детерминированы. То есть, если открыть курсор и просто ему сказать там, сделай лендинг на такую тематику. И я хочу, чтобы там были вот такие вот разделы. то можно поиграть в такой очень интересный эксперимент. Можно прямо взять этот запрос, его заново перезапускать и смотреть, как он будет каждый раз выполняться мм заново. Ну, то есть в финале каждый раз результат будет получаться разный. Причём иногда этот результат будет получаться рабочий, иногда будет результат получаться абсолютно нерабочий, будут какие-то ошибки, и эти ошибки будут там потом в цикле а крутиться и вообще конца и края им не будет. И даже, ну, так вот со стороны сложно сказать, почему так происходит. Бывает, один раз запрос отправил и всё нормально произошло, а второй раз запрос такой же точно отправил в соседнем проекте. Я вот тоже классный тут нащупал пример, который по постоянно с ним такая хрень возникает. Это мультиязычность. У меня одна из причин переезда с "Тильды" как раз была связана с тем, что я хочу, чтобы наши лендинги в "Инайте", они были на разных языках. В "Тильде" есть мультиязычная поддержка, она там очень сильно через жопу сделана, а особенно в плане поддержания вот этих переводов. И надо их ещё как-то где-то в другом месте переводить, потом руками в "Тильду" относить. Понятно, что с вайп-кодингом это ээ вроде бы достаточно проще, можно сказать. Просто сделай мне перевод там вот вот такой-то страницы и там добавь этот замечательный переключатель. То есть такие э довольно простые запросы, но можно легко столкнуться с тем, что переключатель, например, есть, а не работает. Или вообще переключателя нету, а в момент добавления переключателя вылезла какая-то ошибка. А я когда один из первых раз это делал, они же там ещё всякие бывают уже вот тоже потихоньку переходя к теме и, собственно, сейчас к презентации. Сами пакеты бывают разные. И, соответственно, если ты вот не программист, для тебя это мм получается просто требование: "Хочу переключатель языка", но м сама вот эта вот условно там технология, плагин, модуль, там что угодно, их вариантов очень много. И если ты явно в запросе не укажешь: "Сделай мне переводы с использованием именно вот этого модуля", то он как это, ну, как личари возьмёт первое, что в голову придёт. И, соответственно, даже при каждом новом перезапуске, вот о чём я выше говорил, он будет пробовать либо этот пакет использовать, либо вот тот. И, соответственно, если он пакет какой-нибудь возьмёт не очень стабильный, не сильно популярный или, например, устаревший, который раньше развивался, а потом перестал, то вот результат он получается такой, а, слабо прогнозируемый.
А давайте, знаете, как, если вот перед тем, как я думаю, к докладу перейдём и пока я там вступительную часть рассказываю, покидайте в чат, кто вообще вот как-то уже вайп-кодит. А, и интересно вот услышать, у кого какие кейсы были положительные. Ну, то есть прямо "вау". Я вот взял, не знаю, курсор поставил там или квот-код, и вот у меня вот такая штука получилась. Или у кого наоборот был негативный опыт, там вот пытался вот это сделать, а не получилось, потому что я вот вот эту информацию я постараюсь её так максимально органично встроить в своё повествование и просто ценность там информации, которую я сегодня рассказываю, её станет немножечко больше. Думаю, можно даже если есть у кого-то желание, руку поднять и прямо голосом рассказать. И мы этот кейс тоже а в процессе рассмотрим, чтобы прямо на конкретных примерах это было. Андрей, давай.
>> Да, да, да. Ну вот как раз кейс. То есть попробовал курсором, значит, поставил там MСP-шку N8N. Вот. И он мне в как бы workflow создал нормально. Да. Вот теперь пробую. Мне нужен плагин у нас билетной платформы там на на Java, но она очень серьёзная, там свои кодеры. И вот просто интеграция нужна под клиентов с WordPress. Потому что у нас нету эквайринга израильского на платформе. Вот. И вот, значит, что мне показал курсор? То есть мне не хватало не хватало лимитов. Ну, я не то что жадный, просто реально вся жизнь с нуля тут после эмиграции, поэтому бюджет очень ограниченный. Вот. Ээ вроде вроде получалось. Потом у меня даже плагин не грузится, не открывается в WordPress. Вот пришёл, начал параллельно спрашивать, значит, ChatGPT, который двадцатидолларовый чат, да? Вот я его спрашиваю здесь, спрашиваю там. Вот всё равно пока и полностью попробовал вот буквально вчера на ChatGPT. Всё, он мне подтянул API-шку, подтянул AC в поля все, всё загрузил. Я уже там в WordPress их сейчас вот настраиваю. То есть я в процессе, вот я думаю, через пару дней у меня это всё будет готово. Там дойду до платы и вот что использую. Сейчас я покажу там в этот поставил MСP-шки ээ контекст 7. И ещё есть MС-шка, которая таскер, которая раскладывает задачи. Вот если я помню, тогда Денис рассказывал про неё, поэтому поставил вот расписывает, рассказывает, но именно с таскмастером просто вот так не получилось. Может быть, это потому что не хватает контекстного окна, может тарифа не хватает мне.
>> А отличный пример. А можно я тебе один наводящий вопрос задам вот с этим замечательным плагином? А ты каким образом? Прямо очень максимально релевантный. И самое главное, я достаточно большое количество, ну, не под WordPress, правда, а под такие более современные платформы уже плагинов написал. И у меня эти счёт уже этих платформ open sourceных, ну, разных штук пять. Ну, то есть я могу хотя бы для себя как так уверенно сформулировать, что у меня есть какая-то методология, она максимально релевантна теме нашего сегодняшнего вебинара. Я попробую тебе сейчас её передать, если не получится, можем даже с тобой созвониться. Я никогда плагины под WordPress ещё не делал. Мне тоже просто интересно. Попробую.
>> Я тоже не поверишь.
>> Вот. Но я я я как бы так как тоже в лёгкое оправдание себя. Я просто небольшой фанат PHP. Насколько я помню, WordPress он у нас на PHP написан.
>> А вот у меня платформа вот open sourceная именно PHP. Ну, то есть я понимаю для себя, что нейронки умеют на PHP программировать. Ну, в отличие там хорошо программировать, причём поправлюсь в отличие от того же Rust. На Rust тоже у меня есть опыт вайп-кодинга. Я не могу сказать, что я там супер хорошо знаю Rust. Я его, скорее всего, не знаю вовсе. Ну, то есть я могу какие-то общепринятые конструкции читать, но вот это всё там какие-то >> меня приятель очень хвалит. >> Не раскладная штука. Ну, к тому, что, ну, там на Rust нейронки, если даже и пишут, то пишут, ну, так себе просто вот с точки зрения чистоты кода и там всех вот этих вот ходов специфичных для языка. На PHP они пишут хорошо, но просто вот то, что ты делал, это точно очень сильно связано с спецификацией. Поэтому, да, прежде чем мы вперёд двинемся, ты можешь так как-то вот вот пошагово рассказать, как у тебя вот этот вот процесс был. Вот это ты такой: "Хочу, чтобы в WordPress появился плагин". Я услышал, что вы как-то это интегрируете с N8N. Значит, скорее всего, это >> не не не N8N - это отдельно, это просто отдельный опыт. А интегрируем с платформы, которая плагин для самостоятельный для WordPress. Вот ты говоришь такой: "Хочу, чтобы в WordPress появился плагин". Ты дальше, ну, как какие твои следующие шаги? Ты пришёл в курсор, написал ему: "Напиши плагин для WordPress". А >> нет, нет, сначала сначала я написал, что я хочу и систематизировал это в отдельном чате. Да. >> Вот. Да. Следующие. Ну я пользовался вот этим вот таскмастером. Вот. Но следующее я как бы, ну, я, во-первых, сам изучил API, хотя я я не кодер, понимаешь? Я как бы сверху я уже дофига проектов сделал, но мне приходится осваивать, ну, физик по образованию и лечу сверху. Кодить уже, я думаю, поздно учиться. И в общем, тяжело в этом возрасте нашем. Ну, не то, что тяжело, а так вот, э, что я сделал? Я хорошо понимаю AI, потому что с этой платформой уже многих ээ интегрировал, то есть хорошо понимаю логику, да, понимаю JSON, я скормил ему AI, там документация нормальная. Вот. И ещё подсказал, вот мне нужно вот вот ээ использовать такой метод такой то есть там есть несколько методов билетная система, билетная платформа. Я говорю: "Мне нужна билетная платформа вот с такими-то функциями". Вот вот вот вот. И вот с этого как бы начал >> в курсоре, но в курсоре, скорее всего, не хватило контекстного окна. >> Вообще никак это не не смотреть. Да, извини, буду перебивать. Не может >> вообще вообще вообще вообще вообще никак не связано с контекстным окном. Есть небольшое на это влияние майндсета, что ты не действительно не программист. И вот я сейчас прямо попробую сейчас найти там, и может быть, кто-то вот из коллег скажет, а как он решал, я озвучу свой вариант, и мы, соответственно, перейдём уже непосредственно к вебинара, потому что это вот прямо стопроцентное попадание. Денис, может быть, ты, а-э, есть вариант у тебя что, что Андрей делал неправильно и как тут можно было вообще вот прям за за за полчаса, наверное, его задача решить легко и непринуждённо.
>> Ну, я пока лучше со стороны посижу и не буду как это влезать.
>> О'кей. О'кей, друзья, давайте я просто расскажу тогда стандартную методологию. Она у меня случайно достаточно получилась. Ну как она не то чтобы не случайно, как бы с другого запроса получилась, но я её уже оттестировал. Ну вот говорю, как минимум пять прямо вот вот с ходу, включая, кстати, N8N, включая ActiveCampaign, потому что у меня есть плагины написанные под N8N, это в качестве социального доказательства можно проверить [музыка] на GTE Awesome N, потому что замечательный плагин. Ну, единственное, чтобы, который там в топ вышел, это я заброшенный плагин взял и починил его как раз с помощью вайп-кодинга. Ну, и добавил туда какие-то свои вещи. Это плагин называется Pilot, и он нужен для того, чтобы через TDIP э вот эти вот ноды N8N-ские подключать не к ботам, а к стандартным Telegram-аккаунтам. И, собственно, это такой был один из первых опытов. В Дифе я тоже ещё вайп-кодил плагины. И, собственно, алгоритм вот этого замечательного вайп-кодинга, он выстроился стандартный. Тебе не хватило контекста в плане лимитов, тебе не хватило контекста в плане создания правильного контекста с помощью курсора для нейронки, потому что по по большому счёту вот сам по себе курсор - это, ну, с одной стороны среда разработки, а с другой стороны это такой >> робот-конструктор, который можно ещё дополнительными там вот этими в виде MCP серверов инструментами, а, обвесить, который умеет сам правильный контекст собирать для нейронки. И если ты ему не дал достаточно на вход еды, то ему этот контекст будет собирать не из чего. То есть как я пишу плагины под любые open source системы? Я беру первым делом иду в Git и скачиваю целиком исходник этой платформы. Я даже изначально к этой методологии пришёл, как а я там на одном из прошлых вебинаров, э рассказывал про Дифи, и я давно давно слежу за Дифи, потом у меня появился N8N, и Дифи N8N можно развернуть в Docker, просто сказав docker-compose. Но когда ты говоришь docker-compose, ты на самом деле Open source проекты собираешь не из исходников. У тебя Docker просто идёт куда-то в репозиторий, он скачивает оттуда готовый контейнер, и у тебя там где-то в облаке или на твоём компьютере он этот контейнер как такую формулу виртуальной машины запускает. Ты ничего там не можешь поменять, поменять. Это фактически как ты прикомпилил, ну, как будто ты предсобранный проект себе взял и запустил, а мы, предположим, вот у нас исходники лежат, мы хотим там что-то начать менять, правильно? Соответственно, нам нужно эти исходники запускать без Docker самостоятельно. И это то, как я туда первый раз залетел. Я скачал исходники Дифи, они у меня долго лежали, пылились. У меня Дифи работал в контейнере. Я даже пытался там в этом контейнере как-то залазить, что-то какие-то конфиги там подкручивать, потому что часто в конфигурации переменных окружениях просто там, например, какой-то функционал недокументированный меняется. Но в какой-то момент я пришёл к тому, что мне нужно прямо в исходники залезть и что-то поменять, самому поменять ручками. Ну, я умею немножечко программировать. Вот, соответственно, я что сделал? Я взял проект целиком, скачанный из GitHub, скормил ему курсор. Можете попробовать на досуге сделать самостоятельно. И говорю: "Сделай мне инструкцию, как мне это у себя запустить без Docker". Он этот проект начал анализировать. Это тоже отдельная магия. Рекомендую всем понаблюдать, потому что можно на основании этого анализа блок-схемы какие-то строить, документацию писать. В общем, короче, фактически у тебя есть куратор, которому ты говоришь: "Изучи этот проект и мне, идиоту, объясни, как он устроен". Потому что там много всего написано. Я столько за какой-то приемлемый мм отрезок времени даже прочитать не смогу. И вот у меня первый опыт, у меня э появилась у меня инструкция. Я по этой инструкции прямо по шагам всё сделал, и у меня появился, получился Дифи, запущенный из исходников. После этого я смог уже ему говорить: "А теперь сходи, ну, какие-то простые вещи там, вот, не знаю, в меню, а вот этот пункт переименуй". Ну, мы от простого же сначала начинаем. Это такие незначительные изменения внеси в проект, я его перезапущу или он там автоматом перезапустится, чтобы я увидел, что эти изменения приняты, ну, что они вообще как это исполнились. И это вот был второй шаг. А дальше уже, когда у тебя есть, то есть у тебя фактически курсор в этот момент, он сам себе, а, построил контекст, потому что в курсоре под капотом, на самом деле, там очень много скрытых от глаз пользователя работает механизмов. Как только ты в курсор добавил свой там проект из Git или папку какую-то закинул в проект, он эту папку сразу начал индексировать. Он сам у себя там уже под капотом начал изучать себе этот код и писать себе к этому коду комментарии, где там какой файл, за что он отвечает и так далее. Для чего он это делает? Чтобы когда ты его попросишь какие-то изменения внести, он уже знал, куда ему бежать. Потому что у тебя есть два варианта: поставить ему задачу, сказать ему: "Сделай с нуля". И он тогда как бы должен как-то что-то это там нафантазировать или сказать: "Внеси изменения". И он тогда должен знать, куда эти изменения вносить. Ему либо заново каждый раз перечитывать твой проект, эти изменения искать до до недавнего времени, пока они там вот вот эти под капотом всякие штуки не повстраивали. Так и было. И он там и даже находил их через раз. И сейчас они его вот этими механизмами обложили. Когда ты подключаешь MCP сервера, ты фактически даёшь ему ещё дополнительные инструменты индексации своего проекта. И вот разложение его там на атомы и молекулы, контроля этих всяких внутренних связей и так далее, и так далее. Вот. И, соответственно, нам плагин надо. Значит, нам нужно, что лучше всего нейронки, они у нас программируют на примерах. Соответственно, если мы хотим, чтобы он нам написал плагин, а мы можем что сделать? Можем сказать: "Так, а в этом проекте, по-моему, есть механизм плагинов". Он скажет: "Сейчас посмотрим". Я именно так я и двигался. Изучает проект, целиком лежит, исходник, говорит: "Точно, есть плагины". Ты ему говоришь: "Где?" Он тебе показывает папку. Ты говоришь: "А можешь мне рассказать, какие плагины", э-э, сейчас вот следите за руками, какие плагины уже есть? Он, ну, там же бывает как, что уже какие-то плагины предустановлены как по умолчанию. И можно ещё новые добавить, они туда же, в эту вот структуру впишутся, правильно? Он им анализирует, говорит: "Так, я нашёл, что у тебя есть уже ээ механизм плагинов и есть вот там вот такие-то плагины". Читаешь описание плагинов. Зачем это надо? Ищешь плагин, который максимально похож на тот, который ты хочешь написать. Предположим, такой плагин есть. Тогда ты ему просто говоришь: "Сделай мне новый плагин на основании плагина, который уже есть, >> но в котором поменяется вот такой-то функционал и задача, ну, потому что у него в плане контекста, который ты ему создал, не только что плагин должен будет делать, сразу есть, но и как этот плагин с точки зрения внутренних связей подключен в сам проект, потому что у него все исходники перед глазами, правильно?" соединения перестали смотреть. Теперь есть вариант посложнее. Предположим, плагина, похожего на тот, который нам нужен, нету. Что тут можно делать? Можно пытаться просто там изучи, как устроены плагины и напиши свой, >> которого ещё нету. Это тоже, возможно, сработает, но может сработать. Мм. не с первого раза, потому что плагин, который тебе нужен, может оказаться существенно сложнее, чем те стандартные, которые уже предустановлены. Но можно же сделать хитрее. Я вот когда писал плагины для работы там со всякими Zero-спами, как раз у меня там первый опыт был, я не помню, я на нём о нём кодекстауне, по-моему, рассказывал. У меня получается под Zero-спам был плагин в N8N, а в Дифе был плагин только под мем. И я, соответственно, сделал, ну, как вот это вот местами. Я я плагин, который был под Zero-спам из Дифи, я его перемигрировал в N8N, потому что как бы у меня, ну, всё необходимое есть. У меня в одном плагине написано, а как оно работает, а в другом плагине, как оно интегрируется. Сказать, дать нейронке два примера и сказать, чтобы она их миксанула. Это, ну, как бы достаточный контекст. Не надо нигде сбоку там типа объяснять, как оно устроено, как оно подключается. И, соответственно, я плагин из Zero-спама смигрировал в Дифи, а плагин из Дифи Zero-спама смигрировал в N8N. Именно вот вот такой методологии. И, соответственно, я к чему это рассказываю, что вот у тебя, например, есть задачка интеграции с платёжной системой, наверное, от платёжной системы конкретно твоей под WordPress может и не быть, но под WordPress есть 100% интеграция какого-то условного Stripe, другой платёжной системы, которая отличается, ну, типа найди 10 отличий. Ты берёшь, устанавливаешь этот плагин в развёрнутый свой свой вот этот вот WordPress. А, ну тут получается единственное, что, ну, программистом профессиональным становиться не обязательно, но инженером ПК, который умеет это хотя бы всё запускать и как-то вот вот вот на какие-то там инциденты реагировать, всё-таки придётся. И, соответственно, ты берёшь этот на аа замечательный плагин, прямо на него травишь нейронку и говоришь: "Напиши мне новый плагин на основании вот конкретно вот этого плагина, только под мою платёжку. Вот её спецификация. И вот это твой контекст. Тебе не хватает контекста вот в плане, сколько его за раз можно кормить, потому что контекстное окно не резиновое, а как бы то, что там даже Google говорит. Давайте, я сейчас уже вот всё, перехожу теперь а-а к презентации. Где моя? Вот так вот здесь она у меня есть. Поехали. Видно, видно мой экран. Отлично. Вот. А контекстное окно не резиновое, чтобы там Google не говорил, что они там сделали, а его там миллионный, можно туда всё скормить. Там получается включается такая штука, которая называется разфокус. И по состоянию на сегодняшний день чем пытаться вот в это вот м контекстное окно на этом, собственно, вот я про мультиагента же на прошлом, по-моему, вот вебинаре как раз рассказывал. Я же там об этом пытался как раз сказать, что результат э взять и просто вот всё подряд навалить в контекстное окно, потому что оно большое, ну, скажет, вот тебе свалка, разгребай, и если ты там из этого Boeing соберёшь, будет хорошо. Ну, так себе затея даже. Вот она звучит. А можно что сделать? Можно сказать: "Вот тебе все запчасти от Boeing". Ну, вроде вроде ничего лишнего нету. Точно вот это вот вот вот было лежало в пакете с надписью Boeing. Собери из этого Boeing. Конструкции, к сожалению, нету, но запчасти все точно от Boeing. Вот второй вариант. Он точно работает на порядок эффективней, а чем что вот вот тебе свалка и давай разгребая. Когда мы просто вот в тупую аа пользуемся большим контекстным окном, мы именно этим занимаемся. Вот поэтому курс, собственно, его задача как раз взять вот вот максимально вот этот вот пакетик с запчастями, все запчасти подписать и уже вот на сборку конкретного компонента передавать только нужные запчасти. Поэтому чем больше ты изначально вот в курсор этих запчастей засунешь, чтобы он их все проиндексировал, тем будет лучше. Ну а соответственно все вот эти вот дополнительные а истории, они возникают как раз вот в плане того, о чём мы сегодня собрались э поговорить. Это управление контекстами, потому что вот у нас, соответственно, некоторое время назад появился вайп-кодинг, и это как будто бы а стало таким ошибочным суждением, что это возможность нейронки и сказать: "Вот сделай хорошо". И она сделает. Но, мм, не совсем об вайп-кодинге внезапно оказалось об этом, потому что если мы посмотрим на то, что сейчас происходит в той же самой Силиконовой долине, потому что вот эти начали какие-то вот дешёвые спекуляции происходить, что, блин, сейчас вот нейронки, а, всех заменят и вообще программисты останутся без еды? Нет, ребята, не программисты останутся без еды. Без еды останутся все люди, которые не станут завтра программистами. Потому что раньше, чтобы стать программистом, надо было учить язык программирования, а теперь, чтобы стать программистом, язык программирования не надо учить. Теперь нужно учить именно саму методологию программирования, потому что внезапно, опять же, об этом почему-то никто не говорит. Программист - это не человек, который код пишет. Нормальный программист нормальной компании пишет код, дай бог, если 20% своего времени, а в остальное время он занимается абсолютно другими вещами. И то, что мы вот эти 20% написания кода программистам с его плеч сняли, и теперь этим занимается нейронка, его как бы функции, они от этого менее востребованными не стали. Поэтому до сих пор, как бы, я просто, ну, вот как реально этих идиотов хочется их, если честно, назвать более с таким словом, там из из категорий инфоцыган, ещё каких-то таких просто, блин, там, умственно отсталых клоунов. Я их встречаю каждый божий день. Twitter завален, блин. Twitter этот
Кто-то трет сообщениями, типа: "Э, там, ну что, программисты, вы уже готовы, типа, там идти на завод?" Нет, ребята, мы готовы смотреть люди, которые заводы эти строят, как завтра, блин, вы, которые раньше на этом заводе могли теоретически устроиться на работу, будете с голоду помирать.
Но это так, отступление от темы. А вот, значит, что произошло? У нас программы раньше писались на PHP, теперь программу нужно писать на естественном языке. И вот тут возникает самая такая интересная история, что а как правильно-то нейронку спрашивать? Потому что одну и ту же задачу, давайте вернёмся вот к нашей такой изначальной истории, её же можно по-разному сформулировать. То есть вот, например, есть задача там вот вот мы там с Андреем про плагин обсуждали, или есть задача вот лендинг сделать, как я занимался там, переносили мы там стильды, переносим лендинги. Вот можно же просто сказать: "Перенеси этот, ну как вот вот поста иди туда, не знаю куда, принеси то, не зная что". Да. И как бы нейронка, она штука такая, она будет вынуждена сказать: "Есть и пойди что-то делать".
А можно эту задачу сформулировать немножечко более полнее, да? То есть мы можем, например, там, если вот на примере плагина, я уже пример выше привёл, мы можем сначала весь проект сгрузить, в этом проекте найти сначала, где эти там плагины лежат, какой-то плагин в качестве примера выбрать. И это же всё у нас превращается в такую инструкцию. Чем не программирование? Программирование - это, на самом деле, процесс написания инструкций. Только раньше инструкции писались, ну, на таких немножко не нечеловеческих языках, а теперь бери язык, который ты знаешь, любой. Хочешь китайский, хочешь киргизский, я не знаю, там корейский, португальский, какой угодно, как каким лучше владеешь, пиши инструкцию на нём. Но инструкцию надо писать.
Проблема большинства, м, как бы вот обывателей, кто с нейронками начинает работать, в том, что майндсета вот этого написания инструкции его нету. С одной стороны, с другой стороны, и вот в какой момент возникает уже контекст инженеринг, что а зачем инструкцию, собственно, писать самостоятельно? Главное эту инструкцию в голове иметь. Ну, вообще представлять, что ты хочешь и зачем. И хотя бы приблизительно какую последовательность шагов э нужно пройти, мм, чтобы этот результат достичь. Это ещё по-другому называется декомпозиция, да? Зачем это нужно иметь в голове, если мы не хотим это писать? Потому что саму инструкцию, как Андрей правильно заметил, когда вот мы с ним обсуждали его методологию, нейронка может написать сама, правильно? Но нам же эту инструкцию надо проверить.
То есть мы можем сказать, что дорогая нейронка, я хочу там сделать плагин или я хочу а сделать сайт. Напиши мне инструкцию, как мы будем это делать. И вот тут возникает самое интересное, для чего нужен вот этот вот кругозор или там понимание инструментов. Потому что в тот момент, когда нейронка, а нейронке пофиг, да, я с самого начала начал, что если мы 10 раз ей скажем: "Напиши инструкцию", ну просто вот в даже 10 соседних окон откроем, то у нас получится, скорее всего, 10 абсолютно разных вариантов. Особенно, если мы вот просто скажем: "Напиши инструкцию там по переносу, например, моего сайта, там из Тильды, вот чтобы в курсоре я мог этим управлять". И там, чем больше раз мы это запустим, тем больше получится. Если мы ещё будем там или вот этот переключатель авто мы оставим, или если мы, а-а, будем каждый раз новую модельку выбирать, то вариантов у нас, ну, можно будет просто их там нагенерить за день, что, ну, просто миллион штук, они все будут разные.
Почему? Потому что методик много, вариантов решения в плане инструментов их ещё больше. То есть это можно взять, не знаю, там на HTML, не HTML, с такой там CSS библиотекой, ской. То есть ты знаешь, что такое CSS библиотека, верно? Если ты вот вот из каких, как это, как это, вари борщ, если ты в ингредиентах, как повар не разбираешься, то он тебе там может и пирог вместо торта испечь, и сверху это кремом подписать, что это борщ. И вроде бы и приготовь борщ с изначальной спецификацией, это будет соответствовать. Поэтому у нас получается, если вот в метафоре хорошая, кстати, люблю её очень метафора кулинарии, у нас задача какая? Сначала понять, что мы хотим на выходе съесть и какими хотя бы вкусовыми характеристиками это обладает. Зачем нам нужно попросить нейронку написать рецепт? Было бы очень неплохо, если бы мы хотя бы базовое представление кулинарии имели и по мы могли проверить, что у нас там нету просроченных продуктов или тех продуктов, которые там по тем или иным причинам есть нельзя. Предположим, у нас на них аллергия. А или вообще, что мы точно знаем, что там как бы вот в нашей системе ценностей сладкое и кислое не сочетаются там или солёное, потому что вот, например, замечательная страна, вот Денис знает не хуже меня, они там с удовольствием сразу и перчат, и солят, и сахарят, и это всё в пределах одного блюда и в каких-то просто невообразимых количествах. И считают для себя, что это вкусно. А простой европейский человек для него это дико. Да. Вот.
И, ээ, в случае написания проектов с нейронками выглядит точно так же. И поэтому вот этот вот процесс формирования рецепта и потом его исполнения, это как раз вот наша есть контекст инженеринг. Причём часть этих задач за нас большую часть, большой пласт этих задач за нас решает нейросеть. Но нейросеть, повторюсь, самая большая вот с ней, как это проблема или как её особенность. Ей совершенно пофиг, какие у нас вкусовые предпочтения. И даже вот в моменте она не способна принять решение, что для тебя вот так вот лучше, если ты сам ей об этом не расскажешь. Поэтому спецификация "сделай мне новый сайт", например, или "напиши мне новый плагин" - это заранее плохая спецификация. Вот если там пример на атом и молекулы, которые Андрей привёл разбирать, то тут уже получше. Он сказал, дал, дал нейронке определённый контекст. Он говорит, что а контекст что у нас этот плагин под WordPress, значит, уже нейронка знает. Ага. Вот я могу посмотреть про WordPress. WordPress точно написан на языке программирования PHP. Вот у него есть какая-то спецификация там и так далее. Но есть нюанс. Например, если нейронка пойдёт, ну, ей же надо будет что сделать? Ей нужно будет как-то разобраться. Она вот что-то знает про WordPress и, вероятно, даже знает про плагины. Но вот вот этот набор знаний, который у неё есть просто в голове, это тоже вот какая-то свалка. Она знает, она видела когда-то какие-то отрывочные версии разных версий плагинов для WordPress, да, и как бы она вот если просто ей сказать: "Давай по памяти напиши плагин для WordPress", то она его скорее всего напишет. Но не факт, что этот плагин он будет правильной версией. И там вот эти все спецификации по интеграции а будут соблюдены. И это это то, что точно сделает там условный курсор или квод-код.
А что тут можно сделать? Можно сказать, что я точно знаю, например, даже если не использовать мою методологию, я точно знаю, можно сказать, что плагин к WordPress, он делается по документации. И свежая версия документации к этому плагину, она лежит по вот этой ссылке. Потому что если ты нейронке, например, просто скажешь: "Давай ты, ну ты, я знаю, что ты знаешь". Ну, скорее всего, знания у тебя не свежие. Давай в интернете просто почитай и, ну, ну, найди правильную спецификацию и по ней сделай. Так тоже можно. И там условный курсор он даже и это прямо в чистом виде у нас уже контекст-инженеринг, да. И просто я вот тоже пытаюсь, чтобы вот как бы мы научились думать так, как вот вот нейронка будет действовать, то нейронка, она откроет Google, ведёт там "свежая спецификация м там на плагин WordPress". Прямо так она и сделает. И так бы сделал, наверное, какой-нибудь этот нерадивый там джуниор программист. Ему там в нейронке выпадет пять сайтов, и она вот из этих пяти не ну и причём среди них может быть даже официальная документация к плагинам к WordPress. Ну вот вероятность того, что там из пяти она зайдёт именно на документацию к плагину с плагинами к WordPress, она меньше 20%. Потому что, во-первых, оно там ну как бы как это как бог на душу положит на любые из этих пять ссылок. Во-вторых, ссылка она может быть в моменте просто недоступна. В-третьих, там наверняка вендер он при применил кучу всяких каких-то хитрых, а, оптимизаций, типа того, чтобы не тратить дополнительно на это деньги. Он же мы же с этими с э жадными капиталистами имеем дело. Вот они привыкли всё оптимизировать. И, соответственно, нейронка точно пойдёт по пути наименьшего сопротивления. Наверное, не факт, что информация на этом пути будет. Ну и в экономическом плане тоже, что информация будет там актуальна. Соответственно, что дальше происходит? Нейронка идёт не на ту ссылку, там документация, например, она её из кэша взяла, и документация оказалась неактуальной и устаревшая. Нейронка долго-долго думает, пишет тебе плагин. И этот плагин не работает, потому что она его по устаревшей документации сделала. Ну так себе вариант, правильно?
Поэтому, а вариант получше - это, собственно, дать нейронке конкретную, ну, если вот у нас, предположим, даже исходников нету, можно дать конкретную ссылку, что вот документация, а, в которой точно написано, что делать, и это уже будет вариант лучше. Какие тут могут быть, мм, подводные камни? Если документация будет большая, она её может плохо прочитать. Ну, потому что много. А времени оно всё равно вот на на задачу там даже тайм-аут есть. Часики тикают, поэтому она её так на искосок почитает. Таймер сработал, прозвенел, 10 секунд прошло, что успела из документации заполнить, то и при написании твоего плагина применит. Тоже вариант не очень. Поэтому следующий вариант, что можно сделать? Можно документацию перед тем, как мы её нейронке будем скармливать. А мы же её всё равно в итоге в контекст скормим. Можно её самому самостоятельно обработать. То есть можно взять документацию плагину, пойти в условный там курс или чат GPT, сказать: "Сделай выжимку отсюда, самую мякотку, чтобы я на основании этой документации мог вот такой вот плагин разработать". Ну, это если вот мы хотим в таком полуручном режиме двигаться абсолютно. Вот мы сейчас прямо с вами этот а процесс создания контекста. Причём самое главное, что вот если мы это там не не J for fun занимаемся, а если это как-то вот какое какое-то промышленное производство, мы обязаны так сделать. Почему? Потому что у нас вот этот вот запрос, который в итоге наш плагин напишет, напишет наша задача как вот этих таких, а, как это, вайб-код программистов, программистов, которые, а, нейронку просят что-то писать, настолько вот сузить вот это пространство вариации, что если мы в следующий раз этот, э, эту задачу перезапустим, чтобы оно её не какой-то был опять произвольное решение, а чтобы оно было максимально похоже на предыдущее, а чтобы оно было максимально похоже на предыдущее. Мы максимальное количество нюансов используют такие-то библиотеки, используют такую-то версию спецификации. Вот она сама спецификация. Шаг лево, шаг правого, расстрел. Мы это всё должны максимально подготовить и в этот вопрос, в этот запрос запихать.
И вот тут возникает уже вот то, что близко именно к самому контекстному окну, что так как возможности вот этой вот функции внимания самой нейронки, они у нас ограничены, нам нужно наш проект напилить в уме или опять же с помощью нейронки на маленькие модули, потому что чем больше будет, ну вот чем она такая более абстрактная будет задача и будет предполагать, что там на этом шаге нужно, например, и и сайт, и цвет, и картинку, и кнопку, и и 50 блоков, и понятно, что как бы с каждым новым элементом вот возникает комбинаторный взрыв и пространство вариантов там в геометрической прогрессии растёт. Значит, у нас нужно задачи сначала сделать декомпозицию на каждую кнопку, не знаю, там на каждый заголовочек, на каждую картиночку к этому максимально подробную, да, спецификацию, описать где-то, как они между собой связаны, и это в один шот нам сделать невозможно, и всё это ещё проконтролировать. И вот как бы вот вот тут уже возникает контекст инженеринг, потому что самое главное, что требование, которое тут есть, что всё, что мы делаем, это должна быть попытка потом, ну, хотя бы в приблизительной форме повторно воспроизвести. А для этого нужно очень чёткая постановка задачи. Вот есть в этом в менеджменте такая штука, как цели SMART, да, там это, ну, как-то расшифровывается, что цель должна быть достижима, там, измерима, ограничена во времени и так далее, и так далее. Вот всё, что мы, о чём мы нейронку просим в моменте, оно должно быть SMART. И чем больше оно SMART, а тем более стабильный, а результат в конце получится. Это инженерная задача в чистом виде.
Поэтому, ну вот возвращаясь, опять же, сейчас постоянно ходят, вот там сегодня нейронки не умеют, а а завтра нейронки будут. Что ты вот сейчас надо как-то это контролировать, а завтра ты и скажешь: "Сделай хорошо". И будут они делать хорошо. Ну, наверное, чуть-чуть этот процесс станет более автоматизированный, но вот я точно уверен, что не завтра, ни послезавтра и вообще пока чипы всем не встроят. О чём мечтает Илон Маск, телепатические способности у нейронки а вряд ли появятся. И поэтому то, что нейронка там с какого-то одного высокоуровневого запроса научится вдруг внезапно предсказывать, что у пользователя в голове со всеми там возможными пограничными кейсами, а, ну точно такого не произойдёт. А чтобы это всё в конечном проекте появилось, собственно, нужно максимально дотошно и пошагово нейронке рассказать. И чем, соответственно, мы это качественнее научимся делать, тем более такой какой-то SMART, что ли, результат у нас а в конце а-а появляться и будет.
Вот я на самом деле вот из таких, как это вот на поиграться, почему я начал с сайтов, а, которые я вот стильды а переношу сейчас вместе с коллегами. Ну, опять, соответственно, мне нужно, как, собственно, как владельцу этого процесса, мне нужно сначала это попробовать, потом каким-то образом описать, потом девочке помощнице эту методичку передать, чтобы она это могла делать и ничего там не ломать. Именно вот этим вот обслуживанием контекста для данной инженерной задачи заниматься. Значит, с какой интересной штукой я там столкнулся. Можно прямо вот каждому а с этого начать, потому что, ну, с одной стороны, создание сайтов - это довольно такая мм задача, связанная с разработкой. С другой стороны, это такое, наверное, самое базовое веб-программирование. Вот. И что и очень можно на нём хорошо по потренироваться именно в контекст инженеринг. Почему? Потому что вот у меня были эти четыре сайта, я их действительно начинал делать с простого запроса. Я просто говорил: "Сделай мне, я прямо этот запрос в конце покажу и что на выходе получалось, тоже покажу сейчас, когда мы презентацию заходим, закончим". Я говорил, что типа вот я хочу современный Mobile First сайт. Mobile First - это значит, что он должен, ну, в первую очередь, а, выглядеть красиво на мобильном телефоне. И по остаточному принципу хорошо бы, чтобы он нормально выглядел, а, на большом экране, потому что когда делают наоборот, то обычно он, даже если выглядит не совсем коряво, то он на мобильном телефоне выглядит, ну, то, что называется, тяжело. Это вот такая концепция. Она у нас там стала популярной, когда у нас мобильного трафика стало больше, чем трафика с настольных компьютеров. Вот я говорил: "Сделай мне красивый сайт Mobile First, и вот тебе ссылка на оригинал". То есть у меня должен был курсор сам по этой ссылке зайти, сам почитать мой сайт и что-то сделать.
И вот с какими интересными моментами я здесь столкнулся. Во-первых, а инструменты он более-менее однородно под подбирал, а вот встроенный дополнительный инструментарий, там уже всё начинало плавать. То есть, ну, очевидно, что если у нас есть четыре одинаковых лендинга, и эти лендинги разные по структуре, когда мы их открываем и там используются разные плагины, то, наверное, это не очень здорово. Поэтому, если я первый лендинг сделал и меня там всё устраивает, то мне нужно попросить нейронку, чтобы она максимально мне описала, что какие там библиотеки внутри используются. И потом, когда я уже второй лендинг прошу делать, а просить, чтобы она вот максимально эту, ну, и структуру, и вот состав, да, то есть как бы рецепт, если в в метафорах нашей кулинарии, да, что вот вот ингредиенты и способ их предоставления меняться не должны, потому что если мы четыре раза варим борщ, у нас один раз борщ вегетарианский, второй раз мясом, а третий раз вообще там какой-нибудь зелёный, то, ну, как бы, наверное, это не очень здорово даже с точки зрения последующего сопровождения. Это первая история, с которой я столкнулся.
Вторая история, с которой я столкнулся, у меня получается сами сайты, они по наполнению разные. То есть у меня есть лендинги, они там типа из трёх блоков состоят, а есть лендинги, которые состоят там, не знаю, из десяти блоков. И сами блоки, они потяжелее. Вот, соответственно, лендинг, который из десяти блоков состоит, уже нейронка вб м просто просканировав сайт и прочитать, а, осилить не могла. То есть то, что на выходе получалось, там половина блоков просто отсутствовала. Причём сайт вроде она читала и как бы и ты причём ей даже говоришь: "Блин, ну ты там пропустила блок, сходи на сайт, посмотри". А всё равно получилась хрень. Как эту хрень удалила удалось только решить, тоже абсолютно такая контекст инженеринговая задача. А-а, причём я двумя способами пробовал её решать. Я пробовал этот сайт экспортировать в чистой HTML и скармливать коду чистый HTML. Получилось своеобразно и не очень. А классно работал вариант. Я взял сайт, экспортировал его в PDF. То есть у меня появилась пдфка а-а целиком сайтом. Картинка прямо вот. А потом, ну, так как нейронки с ПДФом, вот как с графикой не очень умеют работать, потому что это такой странный формат, он вроде и не текст, а вроде ещё и не картинка, я этот PDF экспортировал в JPEG. И вот этот перк я скормил курсору и попросил составить описание подробное, из каких блоков он состоит и как эти блоки между собой связаны. У меня на выходе появилась такая очень прикольная блоксхема. Я вам её тоже в конце покажу. И вот на это на основании этой блоксхемы уже получился прямо классный лендинг. Он мне с точки зрения, а, юикса даже, наверное, немножко больше нравится, чем тот исходный вариант, а, который у меня был. А изначально вот я не это самое, то то, что написано в презентации, специально не читаю, это тоже, безусловно, важные и полезные вещи. Вы их, пожалуйста, так как-то сами тоже фиксируйте. Презентацию мы потом вместе с аа вебинаром раздадим. Вот.
Но, собственно, вот уже перед тем, как я ещё там парочку примеров подхожу, я лично от себя помимо вот того, что на экране хочу добавить, что товарищи программисты можно булки расслабить. Ну, программисты, которые программисты. Я тоже там вот эту свою метафору, а, по-моему, озвучивал на прошлом вебинаре, что вот мы же на А не, когда у нас там где-то что-то болит, мы же не идём, чтобы нам протез вставил врач, который 3 месяца отучился где-то там на курсах, правильно? А мы как-то вот идём к доктору, который очень-очень много лет и учился, и ещё и практиковал. Вот. Ситуация м с прямо вот вот с хирургами она похожим образом а наверное построена, но у нас получается там, если в контексте медицины, ну и, соответственно, там на на такой какой-то суровый компьютерса, на него нужно учиться не меньше, чем там на врача в каких-то ординатурах. Именно поэтому эти специалисты сейчас они там вот а миллионы долларов стоят, и там они между собой все за них борются. Но кроме этого есть очень много вспомогательных профессий. И то, куда сейчас индустрия движется семимильными шагами, это вот, ну, как бы говорят, человек без ИИ он точно круче будет чем а-а человек с ИИ, в смысле, чем человек без ИИ. Вот. А человек с ИИ внезапно это, в первую очередь программист, потому что вот мы с нейронкой, на самом деле-то даже не сильно общаемся, а потому что мы с нейронкой помимо, ну, если это там она нам не какую-то пытается психологическую помощь или поддержку оказать. Во всех остальных случаях мы хотим, чтобы нейронка для нас что-то полезное сделала. А договариваться с компьютером, чтобы он для нас сделал что-то полезное, это всегда как раз программированием и было. Поэтому тут, ну, наверное, а-а, опять же повторюсь, повторю мысль с начала своего выступления, что не программисты умрут, а все в какой-то момент станут программистами вот каких-то таких машин на базе искусственного интеллекта. А все, кто не скатанут, но вот их какая-то, на мой взгляд, не очень завидная участь ждёт. И вот вот эта фраза, которая у меня внизу подписана, что в будущем программисты будут законодателями, а законодатели программистами по сути всё то же самое, только в чуть-чуть более а-а сжатой форме.
Вот по по это самое по презентации у меня всё. Вот этот ещё последний слайдик покажу. Тут мм какие-то такие рекомендации, ресурсы для изучения. Давайте покажу парочку примеров и можем потом ещё так пообщаться тоже. Я на вопросы отвечу. Значит, по поводу примеров. Смотрите, парочку показываю. Вот был у меня, ну, как был, сейчас есть на тильде. Видно, да, мой экран. А вот такой вот лендинг. Такой плюс-минус базовый шаблон, немножко доработанный. Не сказать, что хорошо. М. Местами даже приятно. Вот. Но тильда, значит, что у меня получилось после небольшой сессии аа вайткодинга. А опять же одна, повторюсь, одна из причин, почему я это затеял, потому что и, во-первых, была задача переехать с Тильды, во-вторых, была задача научиться быстро там что-то менять, в-третьих, чтобы это было мультиязычное и чтобы девочка, которая языка не знает, она могла это быстро делать. Вот, соответственно, вот за за буквально там полчаса получился вот такой вариант. Это вот квот. Он тот лендинг изучил и на его основе вот такой вот лендинг построил. Тут все абсолютно те же пункты есть, что в том. Они тут все тоже так довольно приятно все сделаны. Эта вся кухня, она, естественно, mobile first, она прекрасно выглядит на мобильном телефоне. Вот. И, соответственно, здесь есть переключатель языка, который моментально языки меняет. Причём, чтобы мне добавить новый язык, мне достаточно в курсоре просто сказать: "Добавь мне ещё там какой-нибудь, не знаю, к португальскому". Я просто в Бразилию сейчас переехал. Я тут часто общаюсь с местными. И, соответственно, мне я как я как если они открывают там те сайты, которые видят у меня в каких-то моих там соцсетях, и они на их родном языке, и это как-то вот дополнительный плюсик в карму. Ну, а, соответственно, так как это для нейронки ничего не стоит, то почему бы нет. Вот, соответственно, это вот первый вот такой сайт. С ним проблем, о которых я говорил, что там блоки - это вот прямо в одну итерацию прямо буквально это три или четыре запроса м для до появления а одноязычной версии в курсор и потом ещё штук пять запросов, чтобы мультиязычный заработал. То есть это вот вот буквально за полчаса всё сделано.
Вот второй сайтик, он соответственно выглядит вот так. Здесь он больше всякого такого. Ну, потому что у нас и Night Solution, он у нас для B2B, а и Nighti он у нас такой как единый вход. И тут он и для B2C, и для B2 B2C, и много тут всего. Плюс он ещё агрегатор там всех наших инициатив. И тут много всяких разных сложных блоков. И вот этот сайт нейронка уже прочитать не смогла. Поэтому вот у меня получается вот такая на выходе получилась джипэшка. Это просто вот вот вот весь сайт в виде картинки. Вот я эту джипешку сейчас я прямо найду. Я её скормил. Где-то у меня есть вот здесь, наверное, я её скормил. Сейчас мы найдём. Глеты есть. Нет, всё-таки где-то здесь это было. А, ну вот как бы вот запрос, который говорил: "Сделай свежую, красивую версию сайта, оставляя изначальный запрос был. Остайся максимально старайся максимально сохранить тематику в оформлении цветовую схему". Так, а где же это вот это было, что я ему картинку скормил? А вот вот это я ему пытался HTML скармливать. Ничего хорошего из этого не вышло. Так. Блин, где-то потерялась. Ладно, не покажу. Ладно, покажу тогда финальный результат. Ну, в общем, короче, по там бывает та был шаг, что я ему вот эту вот картинку аа засунул и просто попросил тоже можно поэкспериментировать именно вот в эту визуальную аналитику каких-то, а, вот веб-проектов. Делаешь скриншот, закидываешь там, можно даже это не обязательно в курсор, можно просто в код закидывать, и он такую блоксхему строит, что там какие какой блок на сайте он за что отвечает, если из
этого блока предполагается, в какой последовательности они между собой расположены, там и так далее.
Вот и получилось, значит, на выходе у меня что на выходе у меня получилось. Сейчас откроем. Да. Ну вот так вот это выглядит теперь на выходе. Все блоки учтены, все элементы учтены. Вот даже направления, наши даже цвета все перенёс из направлений нашей деятельности. Прямо очень мне вот этот блок сильно больше нравится, чем то, что у нас до этого было. У нас там было отдельно от наших маркетологов требование, что после каждого блока должен call to action стоять. Тоже он с этим разобрался. Тоже он этот call to action везде поставил. И, соответственно, вот это всё вот оно тут всё замечательно.
>> Я здесь можно зафиксирую для тех, кто, возможно, ещё не уловил. То есть ещё раз, на вход была просто JPEG картинка твоего сайта, которую ты скармил. 2три, давай ещё раз. У нас получается, так как вот вот этот изначальный лендинг, он тяжёлый, то вот этот запрос просто пойди, пойди по ссылке, изучи лендинг. Половина вот этих, видишь, тут есть всякие сложные блоки, много в них всего и самих блоков много. Он половина блоков просто пропустил. То есть вот этот вот, который я показывал, Solutions Lending, вот этот вот, блин, давай на са, где вот здесь вот он у меня вот этот вот этот лендинг, э, он просто прямо прочитал исходный лендинг, который в тильде сейчас. И вот вот такой лендинг построил. Там чуть-чуть я только комментарии, чтобы он там пиктограммки подобрал где-то, там чуть-чуть стили поправил. Ну как бы он он прям он прямо перенёс там 90 99% информации с исходного лендинга. Вот этот лендинг оказался тяжёлый. Он с него как бы просто вот изучением посылки, а что отдаёт в виде кода, он большую часть информации проебал благополучно. Поэтому я взял этот лендинг, экспортировал его в картинку. Картинку эту попросил описать в виде блоксхемы подробной, структурной, и уже вот эту блоксхему скормил. И тогда вот он её уже максимально подробно вот перенёс так, как мы вот здесь вот теперь с вами видим, потому что, ну, просто чуть чуть чуть-чуть более тяжёлый лендинг и пунктов в нём, ну, как минимум в два раза больше, и все они тоже какой-то там смысл в себе имеют.
А, а грешным делом можно посмотреть на блоксхему или это закрытая штука?
Нене, ничего закрытого нету. Я вот просто не А вот он, вот он, вот он этот запрос, кстати. Вот ничего закрытого в нём нету. Сейчас его вот так вот видишь? Вот, вот, вот, вот, вот, вот из картинки вот он вот, вот такую штуку, видишь, построил, какие блоки за каким идут и что в каком блоке содержится. Подробно вот он себе шпаргалку написал. Прикольно.
>> И, соответственно, после того, как вот он, ну, он он её написал на основании картинки, потому что получается в картинке ему, а было проще разобраться, чем вот в этом сложном, потому что он же когда идёт просто на сайт, он же там не картинку смотрит, да? Ну, понятно, что там типа можно его отдельно попросить. Есть там, ну, опять же, я не уверен, что это умеет кд. Это точно умеет делать манус. Он себе там запустит виртуалку, он прямо пойдёт в браузере на сайт в графическом видео он её изучит, но по byй дефолт он просто курлом дёргнет, ему там вывалится огромная партянка htмла, в которой куча не имеющего к сути мусора. И ещё нужно там во всех этих хитросплетениях разобраться. Если это графическая картинка, то где какая секция и что в этой секции находится? Ну, гораздо более наглядно.
Я ему говорю, чтоб, ну, типа, чтобы это ещё, то есть, говорит, что наша, та, что, что такое вообще контекст инженеринг? Это рабо помочь нейронке работать со знаниями, помочь ей из большого массива, из вот этой свалки выбрать то, что важно, и это важно структурировать. Вот она сама, к сожалению, это не сделает. Ну, совсем никак. У у неё там алгоритм по-другому устроен. Она может попробовать, но не всегда это у неё эффективно получается. Поэтому, чем больше мы вспомогательных инструментов, которые вот мух от котлет помогают ди отделять, дадим и проконтролируем вот эти промежуточные шаги, э, по вот именно фиксации только полезных, а, элементов информации, тем более, а, качественный у нас на выходе получится результат.
И я верно понимаю то, что вот эта схема - это по сути мермо, ну, этот мермой JSкод, который мы можем просто выдрать, скормить, сохранить файл какой-нибудь ClD. И, соответственно, все наши агенты, которые будут работать, они будут это использовать в качестве базовой структуры.
>> Именно так. Да.
>> Клёво. А-а, так. Ну, что последний последний момент тоже в завершении что-то я его упустил. Тоже важно это нужно делать. Ну как мы ещё можем вот этот вот результат стабилизировать аа и немножко упростить себе работу. Нас никто не не мешает нейронку просить после того, как она сделала и это протестировать. Вот. Единственное, с тестами есть тоже такой хитрый нюанс. Я с ним постоянно сталкиваюсь. Неронки они, ну типа опять же, потому что вот вот как бы деньги, электричество, экономия, капиталисты жадные и так далее. Вот кто хоть раз с ней неронками пробовал писать тесты, наверняка сталкивался с такой историей. Что они неронка может написать фиктивный тест. Ну то есть она может написать: "Я вот не знаю, вот есть приложение, в нём есть логин, нам нужно проверить, что этот логин работает. У нас есть там два пограничных кейса: удачная, неудачная авторизация, и нам их нужно проверять. И мы проверяем, что, во-первых, у нас сам логин работает, во-вторых, как бы логин кому попало, он у нас этот вот превратник не пускает. Вот неронка с большим удовольствием тебе напишет: "Вот он тест", в котором мы проверяем кейс успешного или неуспешного входа, а внутри будет, ну, типа пустая заглушка. Ну, то есть тест будет работать, но он ничего тестировать, на самом деле, не будет.
И вот вот с этим как бы вообще, ну, как этот как вот есть история в безопасности. Вот можно поставить охранника, чтобы не украли, но если украли, скорее всего, охранник спиздил. Значит, что нужно сделать? Нужно на охранника поставить другого охранника, который будет в камеру смотреть, что вот этот первый ничего не украл, да? И как бы вот, ну, потом что происходит? Если очень он хочет украсть, он с тем со вторым договаривается, они уже в составе организованной группы это что-то делает. Оно уже так работает. Ну вот с точки зрения протоколов безопасности. Вот с нейронкой происходит м аналогичная история. И, ну, вроде интуитивно кажется, что можно вот на нейронку, которая что-то тестировать, поставить другую нейронку, которая будет проверять, что ж на самом деле это первое тестирует. И это именно этим сейчас и занимаются вот всякие замечательные вот эти вот агентные режимы. Я в прошлый раз, по-моему, об этом рассказывал. Они вот как раз там про вот эту вот глубину там вот этой внутренней саморефлексии и перепроверки результатов. Но ты сколько не сколько там не перепроверяй. Сейчас, по-моему, вот это среднеарифметическая, что вот до двадцати шагов, ну, то есть 20 уровней вложенности, что они там друг за другом перепроверяют, но всё равно, э, всё ломается. То есть, если до до если до двадцатого шага чудо не произошло, то после двадцатого шага точно сломается, и даже пробовать бесполезно. Ну, плюс-минус там. Вот. И поэтому ждать, что в ближайшее время, э, там оно онина она сама что-то там делать начнёт, это вот они там капиталисты сами себе байки рассказывают, чтобы акции росли, потому что в противном случае этот замечательный пузырь а начнёт схлопываться. Это уже состоявшийся факт, потому что уже как бы вот эта вот точка бифуркации, когда пузырь начинает естественным образом сдуваться, она уже пройдена. Поэтому не надо ждать чуда, надо вот заниматься саморазвитием и чётко понимать границы э- технологии. А границы выглядят так, что технология нас может существенно забустить, но за нас она борщи варить, ээ, и самое главное есть в ближайшее время не научится.
Вот у меня всё круто. Спасибо большое. Аа, возможно, у кого-то ещё из присутствующих есть, э, вопросы или кто-то уловил для себя, например, какие-то, скажем так, апдейты и улучшения к своему процессу работы. И у вас есть комментарии?
>> Ма, это точно круто. И как бы хотелось бы ещё пообщаться. Чувствую, мы, наверное, ещё какие-то интересные общие темы можем найти.
>> Да, без проблем. Напиши, напиши мне в личку и с удовольствием.
>> А там личка есть в этом в канале или где-то у меня в канале.
>> Ссылка, конечно же, и под видео.
>> Канале кодекста меня найди вообще всегда всем радостно со всеми всегда.
>> Ой, о'кей.
>> Денис.
>> Да, Майк, спасибо то, что рассказал в деталях. Ээ, по сути, по такому же принципу действую, когда в вайп кожу. Вот. Но есть вот вопросы, связанные с как ты вообще строишь с нуля проект? Ты ээ саму вот эту инструкцию каким образом пишешь и где?
В коде. В коде.
>> Смотри, мне немножко проще. Тут тоже вот такой момент. Я о нём всё время говорю. Я так как, ну, курсором пользуюсь давно, а у курсоров куча есть вот этих таких теневых механизмов памяти, курсор мои предпочтение уже знает. Ну, то есть вот у меня стек, на котором я всё делаю, он у меня сильно не меняется. У меня раньше на фронте был Нукст, который надстройка над View. А я чуть больше V люблю, но в силу причин того, что вот экосистема именно фронт инструментов, я не, ну, я же такой криптан ещё со стажем. А там, ну здесь-то вот то точно вот собравшиеся меня больше как представителя криптосообщества знают. А вот эти инструменты различные интеграционные под а под фронтенд именно со стороны крипто, они слабо развиты везде, кроме Реакта. Я поэтому при всей моей, в кавычках любви к реакту аа вынужден, можно, наверное, и так сказать, всё-таки жить в рамках Реакта. Поэтому у меня во всех проектах всегда нест. Просто потому, что мне там бывают нужны плагины, которые только есть под реакт. А вот а на беке у меня, ну, стандарта у меня либо фастпе, если это Python, либо это NES JS, если это Typesриpt, это как бы база. А вот и, ну, там иногда я немножко экспериментирую с разстом, но это прям прямо совсем такой экспериментальный. Вот я куда-то, я осознанно не лезу никуда там в сторону ГО и всяких там ещё других там этих самых как это экзотических и не очень языков программирования. Но смысл в том, что у меня вот этот набор инструментов, он у меня уже плюс-минус очищенный. И механизм памяти, который есть у курсора, он об этом знает. Он периодически даже там об этом курсор, знаешь, он, может быть, видел, он иногда табличку такую выкидывает. Пользователь говорит: "Вот всегда вот так вот делай". И он уже вот этот список предпочтений именно моих наработано. С другой стороны, у меня всё-таки всё равно такой довольно мощный инженерный бэкграунд, поэтому я прямо с первого запроса, как бы, если я его даже ему сделал вот такую, ну, я могу себе позволить вот это вот, а такой область слабого детерминирования, потому что я сижу, читаю, что мне там пишет. Если я там вижу сильное отклонение там от вот вот моих представлениях о прекрасном, я его просто прерываю и начинаю ему сразу дубиной бить по рукам, типа, что ты там не охренел, как бы. Нута. Там вариантов таких масса. Просто вот как пример далеко ходить не надо. Вот смотрите, сейчас давайте я ещё раз экран пошерю. Ну типа этого и того. И это это самый современный кодинг. Это там самая дорогая подписка на курсор там и так далее, и так далее. Вот.
Значит, у меня получается ещё третий, с которым я тут, которым я занимался, это лендинг нашего клуба Инай. Как бы опять же тоже как-то не не очень люблю вот так вот рекламировать, но кто про нас не знает, мы вроде так с Кодеркстауном близкие друзья. Постоянно обмениваемся там и спикерами тоже. У нас всякие прикольные доклады такого, ну, мы сейчас прикладного больше толка тоже у нас проходит. Ну, в общем, короче, есть у нас клуб, есть у нас вот какие-то мероприятия. И вот эти вот мероприятия мне нужно было выгрузить сломы. Ну, как бы то, что вот сломы нужно было там реверс инженерингом заниматься, потому что а нету лума официального IP- это вопрос отдельный. И вот это вот private IP мне пришлось для курсора найти самостоятельно. Он сделал штук 50 попыток, чтобы самостоятельно из Лумы как-то его достать. У него не получилось. В итоге я просто сходил, а, в эту самую в консоль браузера в Хроме посмотрел во вкладке Network, откуда он там тянет, скинул его при скинул к кводу пример после этого, не кводу этому курсору, у него всё получилось. Но пока он пытался это сделать, он на каждом втором шаге мне пытался вместо реальных данных, которые он не мог никак из Лума достать, он пытался мне напихать загрузку. Он такой: "Опс, извините, излумы не получилось. Давайте мы вот вам тут это сделаем. Синтетики хардкорд. Я открываю, у меня есть эти здесь предстоящие события, но это просто вот э курсор фантазирует". Я ему говорю: "Не надо, меня так делать. Сделай, сделай реверс, примитивнейший же реверс просто сайта, блин, там самый простой в проект и достань оттуда. Это к вопросу вот этих вот истерик, что программистов завтра всех заменят и нейронки будут сами всё делать. Да, элементарную задачу с с пятидесятой попытки он не решил. И мало того, что не решил, ему говоришь: "Если не получается, ты хотя бы вот так не делай". Он настойчиво мне пытался сюда запихать какую-то синтетику. Вот это вот вово вот просто как как живой пример.
>> Угу, понятно. Ну да, ясно.
>> А ну то есть получается всё ты делаешь в курсоре и постепенно его вот как-то.
Постепен по постепенно он на моих постепенно он на моих предпочтениях учится. Но это получается, смотри, тут нужно чётко разделять два момента. Если ты работаешь здесь один,
>> а теперь вот потому что как даже когда ты один работаешь, у тебя каждый новый агент, это уже дядя Фёдор, Шарик и Коты, они каждый там по-своему пишут, если их в рамках не держать. Для чего тебе нужны вот эти все спецификации, желательно где-то отдельно описаны? Потому что если над этим проектом будет несколько человек работать, то может уже как бы вот этот вот вот эту дополнительный дополнительную степень энтропии вносить каждый новый участник. Потому что, во-первых, у него, очевидно, скорее всего, свой курсор, у него свои настройки предпочтения. Если твой конкретный курсор, оно о тебе всё знает, да, и он как бы может интуитивно как бы где-то там догадываться, да, и обо мне, то если ты этот проект с помощью гита перейдашь к коллеге, а у него там свой курсор и у него как это, как вот в чате GPT у них механизм вот этой сквозной памяти, предпочтения, там какие-то там историю взаимодействия и прочее, там у него это своё,
>> то вот вот основной вот этот вот конфликт интересов, он вот именно на этом уровне аа возникнет. Поэтому, если мы говорим о том, что над проектом в курсоре работает несколько человек, а у меня даже сайтами, у меня сейчас вот была задача не только сайт сделать, а девочке его передать, чтобы она там просто ему писала: "Поменяй такой блог, там замени такую-то информацию, но чтобы у него при этом всё к херам собачьим э- не развалилось, да. И мне, соответственно, надо там где-то в проекте там Rules положить инструкцию, да, наверное, тогда, что это можно сделать, что если тебе пользователь пишет не автор, который вот автором указан а в ги, а любой другой пользователь, то ты тогда ему можно же тогда зафиксировать именно на уровне вот этой должностной инструкции. Ты тогда никогда не меняешь вёрстку, ты никогда не переделываешь блоки, ты не меняешь никакие стили, ты только можешь менять, э, как бы содержимое, да, блоков. ни их структуру. И это вот, собственно, вот вот вторая часть марзионского балета. Ну и это тоже можно по-разному. Если у нас, например, есть там разработчики, которые, а, работают над там у нас какая-нибудь там микросервисная архитектура, у нас вот есть в этом нашем веб-приложении разные фичи, мы же можем тоже сказать, что вот этот э участник, он может вот вот вот вот эти компоненты только смотреть. Ну, именно на уровне неронки, что как если если тебе этот участник ставит задачу, то ты вот в эти компоненты только для чтения ходишь. А вот и это вот под это, кстати, даже MCP сервер специальный есть, где там попадался. Ну, и можно, который это тоже контекст инженеринг в честном виде, который тебе эту вот это вот разграничение методологическое там полномочий поможет оформить и потом, чтобы оно инфорсилось, то есть, чтобы оно соблюдалось.
>> Угу. Понятно. А вот ээ лучше вот эти спецификации, неважно вообще, где писать первичные, вот как ты говоришь, там для разных программистов. И нет никакого шаблона, да, просто вот есть спецификация, ты просто её детально описываешь. Ну и чтобы как бы неронка её поняла более.
Хорошо. Слушай, шаблон, шаблон на самом деле очень простой. Краткость в данном конкретном случае краткость сестра таланта. Да, у нас же получается Почему? Есть текст. И вот, ну, больше всего нейронки MD файлы любят, потому что разменка MD она очень лаконичная по сравнению с тем же самым HTML или джесоном, потому что нам просто там с помощью небольшого количества символов, а каждый символ - это токен и это сжирает контекстное окно. Вот поэтому у тебя тут вопрос не формат, а у тебя ой вопрос не структуры, а скорее вопрос формата, что тебе нужно быть уверенным, если ты это делаешь сам, что у тебя это вот эта конечная спецификация, она у тебя максимально лаконична. Ну то есть у тебя и формулировки, они максимально сжатые, у тебя не дублируются там, потому что если у тебя там, например, неронки чем грешат, предположим, у тебя вот есть двоякие трактовки. Ну то есть ты взял в инструкции. Для человека это нормально, когда повторение мать учения ты написал там: "Никогда не делай вот это". А потом ты написал: "Никогда не делай вот это и ещё вот это". То в случае нейронки, если есть дублирование, а одних и тех же ограничений там или разрешений, то вот как и одно чуть более широкое, а второе чуть более узкое, то какое вот из них она применит? Оно же там внутри у неё всё в весах в итоге пересчитается. Это вот иншала. Поэтому нужно избегать, давай попробуем просто сформулировать требования, избегать дублирования информации. Информация должна быть максимально лаконична, и она должна использовать синтаксис тоже максимально лаконичный, потому что тогда просто он будет меньше от контекстного окна сжирать и больше времени будет на полезное оставаться. Вот как-то так.
>> Угу, понятно. Ясно. Спасибо.
>> А ещё коротенький вопрос. Вот курсор, ээ, нужно всё, все проекты внутри, именно внутри папки лучше складывать или он, я обратил внимание, вот если докер где-то там в другой директории, он что-то не любит туда, ему 10 раз надо напомнить, что вот там это.
>> Нене не смотри, давай я вот просто свой проект вот один покажу. Вот у меня получается тут есть четыре папочки. У меня есть тут фронт. Не, не, не, не, нет. Не, не шер, да, сейчас зашер экран. Да.
>> Видно сейчас.
>> Да, видно, да.
>> Вот у меня получается тут, если ты это всё в одну папку всунешь, наоборот плохо будет работать. Это нужно в отдельных папках держать, но в рамках одного варспейса. Он тогда запомнит, а что в рамках этого варспейса за что отвечает, потому что у меня получается вот тут фронт, вот у меня тут к вот у меня отдельно тут проект с деплоями со всеми, и вот у меня отдельно тут к офис. И вот он вот в таком варианте он у меня ни разу не перепутал ещё ничего. Если если это в одну папку складываешь, то он там начинает периодически с путями там у него съезжать начинает, он там пытается что-нибудь там, ну, ну, предположим, у тебя там БК, а него есть ещё папка веб. И вот он иногда папку веб забывает перейти, а иногда он из папки веб забывает выйти, когда он там какие-то действия предпринимает. Поэтому самый правильный способ, и он задолго про него забывает. Просто это вот всякие такие уже типS and trкс, а именно программистов, которые сдеют. Это, ну, на самом деле, стандарт, а, работы сде чтобы не было путаниц. Вот если ты его соблюдаешь, то нейронки тогда проще. Если ты там как бы вот от стандарта отклоняешься, то и нейронка начинает с ума сходить. А стандарт такой, у тебя все элементы, ну, если бы тут были микросервисы, они бы тоже были в отдельных папках, но не они у тебя все в отдельных папках живут, у каждого свой гит и так далее. Но это всё получается вот в один workplace workpace собирается, тогда вообще никакой путаницы, никаку никаких проблем не происходит.
>> А, понятно, спасибо.
>> Круто, круто то, что было очень полезно. Прикольно видеть, как вот реально появляются новые абсолютно направления в новых же индустриях и как эти направления уже сами по себе внутри себя эволюционируют и превращаются всё новые и новые вещи. Круто. Ну что, если есть у кого-то ещё вопросы, у вас есть оставшиеся буквально несколько секунд на то, чтобы поднять руку и задать. А если нет, то Майк, могу только ещё раз сказать огромное спасибо. Было невероятно интересно. В понедельник, я думаю, запись будет уже вместе со всеми ссылками и презентацией и твоими контактами лежать на канале. Ну а всем могу только пожелать хороших выходных. И.
>> Да, всем спасибо, до новых встреч.
>> Спасибо. Спасибо. Спасибо. Пока.
>> Хороших выходных всех. Не.