Transcription
Привет. А как хорошо вы умеете писать промты? Я, например, постоянно в этом практикуюсь и пытаюсь улучшать те запросы, которые я отправляю нейросетям. И за последнее время мне удалось посмотреть на огромное количество примеров того, как подобного рода запросы делают, назовём это так, профессионалы.
Я уже делал для вас видео, где мы смотрели на запросы, которые используются внутри винсёрфа, курсора и дев. Теперь же у нас появилась возможность посмотреть на пром тот запрос, который используется внутри нового редактора кода от Google. Антигравити. Это на самом деле очень-очень большой запрос на 260 строк абсолютно произвольной длины. Там есть и очень длинные. А ещё там используется XML. Это плюс-минус тот подход, который использую я. Поэтому давайте вместе посмотрим на этот промт и попытаемся разобраться, насколько он хорош и как мы можем его использовать в своих собственных промтах.
Вот так выглядит документ у меня, в который я положил этот запрос. И повторюсь, он очень-очень большой. Конечно же, это может вызывать некоторые сомнения в том, как используются токены, которые выделяются для того, чтобы мы всем этим пользовались. Но я сразу вам скажу, этот запрос отправляется только первый раз, когда вы что-то спрашиваете у и когда же вы задаёте дополнительные вопросы или просите что-то поправить, этот запрос снова больше не отправляется. Иначе это было бы глупо, и тоге бы сжирались моментально.
Но давайте вернёмся к этому документу. И вот эта вот строчка сверху - это просто заголовок. Его на самом деле в промте нет. И сам промт начинается с вот этого тега Idденти. Я уже сказал, что я тоже очень много использую эти XML-теги, или вы можете называть их HTML-теги, если вам так проще, для того, чтобы отделять различную информацию друг от друга внутри запросов. Например, я использую system для какого-то системного промта, usеer, input и так далее для пользовательского ввода. При этом название для этих тегов я придумаю сам для того, чтобы они были говорящими и сообщали нейросети ту то, о чём будет информация внутри этого тега.
Так вот, в Google тоже используются теги. Я на самом деле этому очень рад, потому что редко такое встречаю. Мне казалось, что я делаю что-то неправильно. Итак, у нас с вами есть тегденти. И здесь у нас внутри тега описывается, чем, собственно, занимается этот ТИ, даётся ему такой условный системный промт, плюс дополнительная информация о том, что будет делать юзер. Например, мы видим, что пользователь будет отправлять тебе реквесты, которые тебе надо всегда притизи как бы приоритизировать вверху и всякой много другой информации.
Затем User information, э, это пользовательская информация. Здесь мы видим информация о системе, потому что для программирования важно, какая система у пользователя, чтобы нужные команды вызывать. Затем какая-то информация о workрксах, ограничения, которые выделяются. Затем adentic mode overview. И здесь описывается то, что как бы как должен вести себя агент, как должен должна вести себя нейросеть. Здесь мы видим причину, основные механики, а когда пропускать какие-то элементы. информация о ui и много-много всякого интересного.
Ещё я обратил бы внимание, что здесь используется выделение жирным. Весь всё форматирование здесь в маркдауне. И есть выделение жирным, и различные другие. Вы увидите ниже используются кодовые блоки. Это всё для того, чтобы и чётко понимал на что обратите внимание, на важные элементы, потому что то, что жирное - это важно. Ну а кодовые вставки, чтобы он понимал, что это куски кода, которые, возможно, можно переиспользовать.
Затем у нас Task Boundary Tool - это инструмент. Здесь есть несколько инструментов в этом запросе, которые могут использоваться. И Task Boundary Tool устанавливает э начало задачи или обновление задачи. В принципе, здесь всё описано. И также здесь утверждается, что необходимо будет трекать прогресс. Мы увидим чуть ниже, собственно, как это работает.
Notify User Tool - это специальный инструмент, который используется для уведомления пользователя. Конечно же, здесь выводится различная информация о том, какие должны быть уведомления, э, насколько важными они могут быть или неважными.
Task артефакт - это важный, это важная задача, важный инструмент в программировании, потому что артефакты - это те готовые программы или те готовые куски нашего кода, которые мы хотим, например, зарелизить или, ну, сделать продакшн, сделать доступными для пользователей. Поэтому создание артефактов важно. И здесь мы видим, указывается, что это должны быть за артефакты. Здесь, например, есть специальный артефакт для задачи, поэтому на Task артефакт нужно создать специальный marкдауфайл, куда писать список задач, который и должен сделать для выполнения запросов пользователя, и помечать сделанное сделанным, да, используются чекбоксы маркдауновые, дефис, открытая скобочка, квадратная скобочка, пробел, закрытая квадратная скобочка. Таким образом, как бы, и сам отмечает, что он сделал, и может возвращаться обратно к этим к этому списку задач для того, чтобы продолжить делать то, что он ещё не сделал.
Затем у нас артефакт, который называется implementation plan. А, и это опять-таки таз для создания Markдаdown файла, в котором будет храниться план того, что их должен сделать, и он снова может возвращаться к этому плану, смотреть, что он уже сделал, и продолжать делать какие-то вещи, которые не реализованы.
На самом деле, если вы обратите внимание, здесь много подобного рода артефактов, которые являются внутренними вспомогательными для И, например, Walkthrough MD. Это артефакт или тоже Markдаdown файл, который создаётся по окончании всей работы, в который записывается сари или результат выполнения работы и шаги, которые надо предпринять или которые были предприняты и для создания. Туда же а антиграфить это умеет, добавляются скри скриншоты и видеозаписи экрана готового продукта. Потому что антигравити сам запускает браузер, сам смотрит то, что он сделал, сам тестирует и делает скриншоты, чтобы мы могли посмотреть даже без запуска. Очень удобно, кстати.
Ну а прежде чем продолжить, давайте послушаем информацию о партнёре этого видео. Мир webb 3 искусственного интеллекта развивается сегодня очень быстро, а спрос на специалистов, которые умеют работать с децентрализованными технологиями, растёт постоянно. Криптопроекты, де, смарт-контракты, искусственный интеллект становятся сегодня неотъемлемой частью многих современных продуктов. Так что если вы хотите войти в блокчей-разработку или прокачать уже существующие навыки, то отличным вариантом для вас станет Guйдаo. Это образовательное онлайн-сообщество в сфере Web3 и Guidдаo. Огромная комьюнити, более чем из 1.400 участников, преподавателей, спикеров, студентов и выпускников, которые ежедневно делятся опытом и помогают друг другу расти. Учиться можно с нуля, даже без опыта программирования. В программе Web3 разработка, Solid, Defiнаalтика, Aудит смартконтрактов, разработка Toenomic и новый курс по созданию и агентов. Каждый день проходят стримы, сессии вопросов и ответов и лайфкодинги, где можно на практике разрабатывать собственные проекты, а все материалы и доступ к сообществу останутся с вами навсегда без дедлайнов и ограничений. При этом сейчас самое лучшее время для того, чтобы присоединиться к образовательному проекту, потому что с 24 по 30 ноября проходит так называемая чёрная пятница с огромными скидками. 10% вы получите прямо на сайте, а ещё 25% вы получите по промокоду Ларченко. В сумме это даст вам скидку целых 35%. При этом можно использовать удобную рассрочку. Так что, если вам интересно, то ссылку на регистрацию вы найдёте ниже под кнопкой лайк в описании.
Дальше идёт информация о форматировании артефактов. И здесь я бы хотел обратить внимание на то, что мы видим один тег вложен во второй тег. То есть у нас есть artifact formatting guidelines. И затем внутри мы видим ещё один тег. Там их будет несколько вложенных. То есть по сути здесь используется вложенность. Видимо нейросеть об этом понимает. Я на самом деле этого не знал, но теперь буду знать. И надо попробовать, насколько вложенность на самом деле хорошо работает. И здесь вы можете увидеть внимательно описывается и подробно то, насколько как должно всё это оформляться. Предлагается использовать стиль гитхаба, там заметки, подсказки, важное ворнинг внимание, но ничего своеобразного нет. Здесь из интересного есть информация о том, как использовать диаграммы Mirmate и рисовать их, если они необходимы, для того чтобы визуализировать workflow и взаимоотношения между компонентами. Таблицы для того, чтобы выводить, видно что-то в виде таблиц. И подробно описывается, как создавать ссылки и добавлять медиа.
Например, из важного я увидел здесь то, что здесь предлагается использовать абсолютные пути. Это буквально встречается несколько раз в этом промте. Мы можем увидеть always use absolute path. Зачем это делается, спросите вы. Это делается для того, чтобы когда вы будете запускать, например, вы делаете сайт и запускаете его на локальном сервере, то все файлы или все картинки у вас условно отрисовались, а ссылки работали, потому что они будут абсолютно от корня сайта.
Здесь же есть информация о карусели с примерами того, как это должно в итоге выводиться, и критические правила. Заметьте, что они выделены жирным. некоторы их части. Повторюсь, и если видит что-то жирным, то думает, что это очень важно.
И дальше, дальше я обратил внимание, и мы видели это уже в других и инструментах на пром которых мы смотрели, это правило использования кода библиотек и инструментов. И что лично мне не нравится, это то, что заранее определяются те инструменты, которые будут использоваться. Например, если мы посмотрим, то здесь говорится, если пользователь не указал другое, то надо использовать JavaScript, причём стандартный, без всяких библиотек. Но если пользователь просит сложное ВБ приложение использовать NextJS или Vit. Как это вообще вместе сюда попало? Как NextJS OD мне непонятно, потому что вид - это сборщик, запуск. В общем, это инструмент, который работает с разными фреймворками и библиотеками. Аjz - это буквально фреймворк, который, кстати, использует вид. Вот непонятно, но вы можете увидеть, что здесь заранее определяется, какие инструменты использовать, какие библиотеки и фреймворки, как всё устанавливать. И на самом деле это может вызвать проблему, если вы хотите использовать другие библиотеки и фреймворки. Вам придётся буквально их указывать и очень подробно описывать, как они должны работать, потому что возможно, что описание, подробное описание здесь не подойдёт для вашего инструмента. И такое, как я уже сказал, происходит и с другими промктами. И это, по сути, определяет то, как будет построено приложение. И если мы предположим, что миллион людей, которые не программисты, захочет сделать миллион продуктов, то мы получим миллион продуктов, написанных на одних и тех же технологиях.
Здесь же подробно указано, каким должен быть дизайн, если он требуется для продукта. И если вы смотрели моё видео, где я сравниваю результаты, сделанные в антигравити с результатами, сделанными в курсоре, вы могли видеть, что там абсолютно разные дизайны. И в курсоли он был простой, элегантный, а в антигравити был такой, как будто модный. Так вот, это буквально написано здесь, в этом промте, что дизайн должен быть вау для пользователя. И из того, что я видел, он вау только для человека, который не очень понимает в современных дизайнах. А так он чересчур какие-то градиенты, знаете, такой устаревший, я бы сказал, как по мне, и неправильно понимает вау. В плане дизайна вы можете увидеть, здесь написаны чёткие шаги, как всё надо делать. Сначала планируем и понимаем наш план, потом делаем основу. Затем создаём компоненты, собираем страницы, проверяем, оптимизируем, подгоняем, затем CEO. То есть это, кстати, классно видно, что человек, который понимает разработку, писал этот промт, потому что он сразу указывает, что и CO надо, и лучшие практики добавляет, и процесс разработки вот здесь вот workflow, implementation workflow описан очень подробно, так как будто бы его делал человек. Ну, не очень подробно, но достаточно подробно. чтобы человек мог его понять и уж тем более машина, которая в теории у себя в памяти имеет намного больше информации.
Затем у нас есть эфимерное сообщение. Иногда оно, здесь написано, что иногда оно возникает во время беседы. Я особо не понял, что оно значит. Пользовательские правила, вы видите, что здесь они не указаны. Ну, а когда вы будете задавать, создавать прот или писать и для того, чтобы он вам сделал какое-то приложение, то ваш запрос попадёт именно в User Rules. И здесь будет описано, что пользователь хочет получить.
И дальше у нас идут workкфлоуи. Э, если вы не видели антигравити, то там есть возможность создавать такою своеобразную, как будто переписку в почте с и агентами. И каждый агент там это workflow. Например, у вас есть workflow для создания одного приложения, workflow для создания другого приложения, и и может создавать эти workкфлоу, и вы можете между ними переключаться и как будто бы переключать контекст. Здесь тоже всё это как будто описано. И немножко, конечно же, про то, как общаться с пользователем, в каком виде выводить ему ответы, про форматирование, про активность, помощь и спрашивать о дополнительной информации, ешь ли что-то непонятно.
Вот такой вот промт. 263 строки. На самом деле в килобайтах очень большой. И он достаточно подробный для того, чтобы, глядя на него, понять, как на самом деле должны делаться промты. То есть мы должны всё описать так, как мы хотим, чтобы и делал. Плюс обязательно примеры результатов, если они не стандартного внешнего вида. Вы могли видеть, здесь иногда попадались примеры.
Если же вы спросите меня, что я думаю по поводу этого промта, он достаточно интересный, он подробный, он местами напоминает те промты, которые есть в других редакторах и редакторах кода. Но, как мне кажется, и в других редакторах, и здесь есть много лишних слов. И на самом деле промт можно было бы сделать поменьше, чтобы он жрал меньше токенов и не потерял в информативности. Здесь как-то это написано, как будто и это живой человек, и ему пытаются буквально что-то объяснить, но и не живой человек и игнорирует лишние и ненужные слова в ваших промтах, поэтому писать их как будто бы не стоило бы. И на самом деле, если поковыряться в этом промте, то можно составить целый список мест и исправления, которые в этих местах можно сделать. Опять-таки, как мне кажется, не я работаю в Google и не я писал им вот этот вот промт, который вроде как неплохо работает.
Но вообще это отличная практика смотреть, как подобного рода вещи делают другие. Это относится и к промтам, и к программированию, и ко всему всему всему. И называется это насмотренность. Чем больше вы видели подобного рода промтов, тем лучше вы понимаете, как эти промты составлять, даже если сами их в процессе не писали. Ну, потому что у вас появляется насмотренность. Может быть, вы попользовались инструментами, где эти промты используются, и убедились, что тот или иной инструмент работает лучше. Поэтому его промт как будто бы тоже получше. Ну и ещё для разных нейросетей нужны разные промты. И, к сожалению, они все выдают разный результат, даже если вы одинаковый промт им скормите. Поэтому надо тестировать, надо пробовать, подгонять, исправлять для того, чтобы ваш запрос получился идеальным и выполнял именно то, что вы от него хотите.
Ну а у меня на сегодня всё. Ставьте лайк этому видео, если оно вам понравилось. Пишите в комментариях, что вы думаете по поводу этого запроса. Нравится он вам или нет. Используете ли вы теги XML, HTML, теги внутри ваших запросов и как вы структурируете ваши промты к нейросетям? Подписывайтесь на канал, если не хотите пропускать другие мои видео. Но а я с вами не прощаюсь, это интернет. Скоро увидимся.