📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Finally. Agent Loops Clearly Explained.

Nate Herk | AI Automation14:34

Transcription

Прямо здесь у меня есть четыре разных агента, которые зацикливаются, вызывают другие под-агенты и пишут все эти промпты для меня, а также проектируют системы для меня. Но действительно ли это продуктивно, или это просто крутая демонстрация? Вот ваше ежемесячное напоминание о том, что вам больше не следует использовать промпты для кодирующих агентов. Вам следует проектировать циклы, которые используют промпты для ваших агентов. Борис Чурни и Питер Штайнбергер публично заявили, что больше не используют промпты для своих кодирующих агентов. Они пишут циклы. Цикл состоит из трех частей: триггер, действие и условие остановки. Если вы все еще пишете циклы, которые используют промпты для кодирующих агентов, вы отстаете. Вам нужно создать мета-агента, который выводит, какие циклы вы бы хотели, основываясь на вашей атмосфере, а затем написать эти циклы. Мы видим много разговоров об агентских циклах, инженерии циклов, как бы вы это ни называли. Поэтому я хотел снять видео, чтобы прояснить, что это на самом деле означает, потому что я думаю, что у каждого есть свое собственное видение и разное определение того, что это такое, и это применяется ко всем очень, очень по-разному. Я думаю, что это определение хорошо суммирует это. Инженерия циклов — это замена себя как человека, который использует промпты для агента. Вместо этого вы проектируете систему, которая делает это. Цикл здесь можно рассматривать как рекурсивную цель, где вы определяете назначение, а ИИ итерирует до завершения. И в моем понимании есть два самых важных столпа этого: цель. Какова фактическая задача? Что-то, как правило, объективное, а не субъективное, а затем проверка. Как агент узнает, каково условие остановки? Как он проверяет и итерирует? Итак, в любом случае, если вы примете весь этот совет, а затем начнете делать такие вещи, как проектирование роев и флотов агентов, которые постоянно работают 24/7, тогда вам нужно подумать о том, что вы на самом деле здесь делаете, и действительно ли это двигает прогресс? Итак, прежде всего, я подумал про себя: как я на самом деле использую агентские циклы? Потому что, когда вы читаете некоторые из тех твитов, которые я только что показал ранее в этом видео, вы как бы думаете про себя: хорошо, если у меня нет пяти агентов, которые круглосуточно оркестрируют своих собственных агентов, тогда я отстаю или я не использую свою облачную подписку наилучшим образом. И я думаю, что это очень ложно, потому что если вы не понимаете, что вы делаете, то вы, вероятно, просто масштабируете проблемы, и у вас будет куча ошибок и куча вещей, которые вам придется исправлять позже. И, кроме того, не все из нас находятся в ситуации, когда работа агентов 24/7 круглосуточно действительно приносит нам пользу. Например, у меня нет агентов, которые делают вещи с определенной частотой, и у меня есть агенты, которые делают вещи на основе определенных событийных действий, но просто заставлять их работать 24/7 для меня не полезно. Я думаю, если бы я работал с командой над кодовой базой, и мы строили продукт, и мы постоянно итерировали и вносили разные вещи, тогда это, возможно, имело бы больше смысла. Но для меня это не применимо. Итак, я просто хотел прийти сюда, объяснить это как можно проще и, надеюсь, пролить свет на то, где вы можете начать применять циклы в своих рабочих процессах, а также почему и как. Итак, я на самом деле построил агентский цикл для этого HTML, который мы собираемся рассмотреть сегодня. И он, по сути, просмотрел множество различных источников. Он проверил 45 источников, будь то статьи, транскрипты видео на YouTube, экспозиции. Он просмотрел кучу всего, а затем продолжал зацикливаться на этом, пока у него не появилось хорошее представление о том, что строить. А затем, как только он построил этот HTML, это был не V1. Это был, вероятно, V7. Ему пришлось продолжать проверять, делать скриншоты, просматривать, итерировать, и затем он наконец сказал: «Хорошо, мы закончили. Вот что у нас получилось». Итак, позвольте мне пройти через это с вами. Агентский цикл — это просто ИИ, который рассуждает о том, что делать, действует в соответствии с тем, что делать, начинает реализовывать, а затем наблюдает за результатом, и он будет делать это снова и снова, пока не будет достигнута некоторая цель, пока он не узнает, что мы достигли критерия остановки. Это хорошо. Я остановлюсь сейчас. И действительно простой визуальный образ, о котором я люблю думать, это то, что ИИ никогда не совершенен, верно? Он никогда не сделает что-то за один выстрел, и вы просто примете этот окончательный результат. И поэтому, если у нас есть попытки по оси X, а качество по оси Y, давайте подумаем об этом. При первой попытке, если вы просто даете своему агенту какое-то простое задание, возможно, вы достигнете, скажем, первой попытки, вы достигнете 50%. А затем вы смотрите на это и говорите: «Хорошо, вот некоторые изменения, которые нужно внести». А затем ко второй попытке, возможно, вы подниметесь еще на 5-10%. И каждый раз, когда вы даете больше обратной связи и итерируете, вы просто продолжаете двигаться вверх по качеству, пока не достигнете чего-то, где вы будете довольны 90-95%. И вся идея в том, почему бы нам не передать эту часть, этот цикл обратной связи и итерации агенту, а не человеку, потому что это произойдет в любом случае. Итак, если мы позволим агенту сделать это вместо человека, то что может произойти, так это то, что при первой попытке мы сразу поднимемся сюда, а затем мы сможем дать немного больше обратной связи, а затем ко второй, вы знаете, третьей или четвертой попытке, мы уже намного выше, чем были бы без этого цикла проверки агента, верно? И именно поэтому многие люди объясняют это по-разному, где некоторые люди имеют модель «думай-действуй-наблюдай», вы знаете, мы, по сути, рассуждаем-действуем-наблюдаем, рассуждаем-действуем-наблюдаем, некоторые люди имеют модель, которая просто переключается между инструментами туда и обратно, туда и обратно, некоторые люди имеют просто, вы знаете, цель, которая работает полностью без присмотра, а некоторые люди используют эти, как флоты агентов с менеджерами, использующими промпты для других агентов, использующих промпты для других агентов, и это просто, вы знаете, как эти русские матрешки. Поэтому я хотел разбить это на основные столпы, которые, как я думаю, являются «рассуждай-действуй-наблюдай». Думайте об этом как об умном стажере, которого вы не контролируете. Вы ставите перед ним цель. Он выясняет, что делать дальше. Он проверяет свою работу и снова приступает к делу, а затем возвращается к вам и говорит: «Эй, я закончил» только после того, как, вероятно, проверил ее несколько раз и внес некоторые изменения. Итак, вы бы сказали: «Хорошо, облачный код, вот что я хочу, чтобы вы сделали». Мы, люди, действительно, действительно хороши в определении того, чего мы хотим. Мы очень хорошо определяем конечную цель. А затем, в дополнение к этому, мы должны сказать: «Хорошо, откуда вы знаете, когда это сделано?» Итак, когда вы печете торт, вы вставляете в него вилку, и когда она выходит, и на ней нет теста, это означает, что он готов. Как вы говорите своему агенту что-то максимально объективное? Каков критерий остановки? Каково определение завершения? И тогда он будет рассуждать, планировать, а затем начнет реализовывать. После того, как он реализовал, он будет наблюдать. Так что, возможно, это визуальная проверка, возможно, это запуск фактического теста кода. Что бы это ни значило для проверки, он должен проверить. А затем, после того, как он посмотрит на результаты, он скажет: «Хорошо, я достиг этого критерия завершения? Если нет, я снова буду действовать, затем снова наблюдать, а затем рассуждать. В противном случае я остановлюсь и скажу: «Хорошо, мистер или миссис Человек, я закончил». И что действительно интересно, так это то, что для большинства задач не нужны циклы. Что я начал делать, так это для большинства моих задач я буду создавать какой-то цикл, но это просто из-за проверки, верно? Эта часть очень важна, цикл проверки. Но часто вам не нужна какая-то массивная агентская архитектура, чтобы запустить такой динамичный циклический рабочий процесс. Вы можете просто сделать это с одной простой терминальной сессией и хорошим промптом. Вы можете иметь это как одиночный цикл, что я обычно делаю больше всего. Один агент, который рассуждает, действует, наблюдает и повторяет. И я покажу вам несколько примеров того, как могут выглядеть эти циклы через секунду. У вас может быть создатель-проверяющий, где у вас есть один агент, который делает дело, а затем один агент, который оценивает дело и дает обратную связь. или у вас может быть такой менеджер с кучей помощников. И тогда, пока у вас есть один главный агент, который оркестрирует все, вы можете встроить циклы множеством различных способов. Итак, позвольте мне просто показать вам несколько примеров, которые я выбрал. Первые два, которые я вам покажу, были на самом деле из этой библиотеки циклов, которую опубликовал Мэтью Берман. Он создал эту библиотеку циклов, которая представляет собой список агентских циклов, которые вы можете использовать, и люди могут отправлять свои собственные. Так что, здорово просто зайти сюда и поиграть и посмотреть, что доступно. И я выбрал два для этих первых двух демонстраций. Итак, это был первый здесь. Это был промпт /goal в облачном коде, чтобы сделать мне миниатюру. Итак, я сказал ему, что использовать для их создания. Он говорит: «Создай 10 концепций миниатюр и оцени каждую из них по миниатюрам YouTube Мистера Биста, используя рубрику. Четкость при малом размере, любопытство, эмоциональное воздействие, визуальный контраст, такие вещи». И после того, как он создаст эти 10, он выберет лучшие три. Он определит самое слабое место каждой концепции. Он улучшит их, переоценит, а затем продолжит итерировать над самой сильной концепцией, пока не будет удовлетворен. Так что одна из проблем с этим промптом здесь заключается в том, что определение завершения было «пока вы не будете удовлетворены». И иногда вам приходится иметь эти субъективные критерии оценки, но вы хотите сделать их максимально объективными. Лучшие агентские циклы — это те, где вы буквально говорите: «Продолжайте итерировать, пока метрика X не станет равна результату Y». Но вы можете видеть прямо здесь, что он создал 10. У нас есть номер один, у нас есть номер два, номер три, номер четыре, номер пять. В итоге он выбрал номер один как одного из лучших претендентов, номер два, а также номер восемь. Затем он итерировал над ними. Вы можете видеть здесь номер один оригинал, здесь номер один V2, здесь номер два оригинал, здесь номер два V2, и здесь номер восемь оригинал, и здесь номер восемь V2. И что он сделал, так это после этих версий два из всего этого, он сказал: «Хорошо, номер восемь — лучший. Итак, вот номер восемь V3». И вот окончательная миниатюра, которую мы получили после того, как мы запустили эту цель, которая заняла у Claude Code 27 минут. Так что это один быстрый пример цикла. Вы можете видеть, что он оценивал каждую из них, и именно так он решил, кто победит. Но одна вещь здесь заключается в том, что эти оценки были субъективными. Так что, если мы хотим улучшить этот поток, мы попытаемся выяснить, как сделать эту оценку более объективной. И, возможно, мы захотим создать отдельного под-агента, который будет выделенным оценщиком, и мы будем использовать промпты для этого оценщика и запускать его через множество оценок, чтобы мы могли чувствовать себя более уверенно в его способности оценивать. В любом случае, давайте посмотрим на следующий. Итак, следующий был еще один /goal, как вы можете видеть прямо здесь. Это заняло 37 минут, и промпт для этого был прямо из библиотеки циклов Мэтью Бермана. Я не буду читать все это. Вы можете поставить на паузу прямо здесь, если хотите увидеть, но он, по сути, должен был создать самолет, используя 3JS. Итак, я открою это прямо здесь. Мы можем видеть, что это вращающийся самолет, который он создал. Мы можем немного увеличить масштаб. Мы можем перемещать его. И вот что у нас получилось. Теперь, с точки зрения цикла, ему пришлось построить его, а затем проверить. Открыть браузер, покрутить его, посмотреть, работает ли он, правильно ли он отображается. А затем он продолжал итерировать, пока мы наконец не получили эту версию. И, как вы можете видеть, все еще, как бы, это не идеально. Есть вещи, которые мы хотим изменить. Я думаю, он должен был быть прозрачным, чтобы мы могли, как бы, действительно заглянуть внутрь. Но это намного лучше, чем было бы, если бы я не дал ему этот /goal с критериями и просто сказал: «Построй мне 3D-самолет с, знаете ли, 3JS». Так что это один из ключевых выводов здесь. Агентские циклы и цели не должны давать вам 100% идеальный результат. Они должны помочь вам приблизиться к нему с первой попытки. И вот еще один отличный пример этого с вопросом субъективности. Вот последний, который я сделал, это промпт, который я дал Claude Code создать /goal. Он смотрел на эту знаменитую фотографию The Beatles Abbey Road. А затем я сказал ему сделать следующее: воссоздать это, не используя генерацию изображений. Так что просто воссоздать это, используя, скажем, HTML или CSS или что-то еще, что он захочет. А затем он проходит и создает, знаете ли, версию один, версию два, версию три, и в итоге остановился после версии 7. Вы можете видеть, что промпт здесь говорит: «Если среднее значение выше 9 или равно 9, тогда остановиться». И тогда вы заканчиваете. Другое, что он сказал, это жесткий предел в восемь проходов. Так что он в любом случае приближался к этому пределу. Но эти изображения не очень хороши. Что мы можем видеть, так это то, что он провел проверку. Так что каждый раз, когда он проходил и создавал HTML, ему приходилось фактически помещать его в браузер, а затем делать снимок экрана. Вы можете видеть здесь снимок экрана номер один. Вот версия два. Вот версия три. Вот версия четыре. Так что мы можем видеть, как он в реальном времени становится лучше и лучше с каждой версией, с каждой итерацией. Но все же, вот что он мне дал в конце. И, очевидно, это ничего не похоже на картину. У нас есть машина здесь. У нас есть деревья. У нас есть дорога. У нас есть желтый, черный, серый, светло-голубой, как и на реальном изображении. Если я вернусь сюда, я сказал желтый? Я имел в виду белый. Белый, черный, темно-серый, светло-голубой. И, очевидно, это ничего похожего. Если бы мы сделали это с помощью генерации изображений, это могло бы быть, вероятно, намного ближе. Но я просто хотел попробовать, чтобы это работало с чистым кодом. Суть в том, что у него были проверки, у него была возможность делать снимки экрана и просматривать каждую из своих итераций, понимать, почему это все еще не похоже на эталонное изображение, и какие изменения нужно внести каждый раз? И поэтому цикл будет только настолько хорош, насколько хороша его проверка завершения, насколько хорош критерий завершения. Итак, есть две вещи, о которых вам нужно подумать, прежде чем создавать свой первый цикл или свои цели. Что означает «завершено»? И как он будет проверять? Потому что, скажем, вы создаете настоящую игру, игру, которую вы можете открыть на своем ПК и играть. Ей придется проверять это многими способами. Ей придется проверять визуально. Ей придется проверять функционально. И ей придется играть на уровнях и смотреть, не сломается ли что-нибудь. Если вы пишете какой-то, скажем, скрипт, как он проверяет? Ему не нужно проверять визуально. Ему просто нужно проверить поток. Ему нужно проверить, что это звучит в вашем тоне голоса. Ему нужно проверять другими способами. Итак, в зависимости от того, что вы строите, проверки, конечно, выглядят по-разному. И ваша задача — убедиться, что у ваших агентов есть правильные инструменты для выполнения этих проверок. А затем, конечно, с другой стороны, что означает «завершено»? Как я упоминал ранее, если вы можете быть максимально объективны с конкретной метрикой, то это лучше всего. Но иногда вы не можете. Иногда вам приходится говорить: «Пока вы не будете на 100% уверены, верно?» И поэтому, как мое самое частое использование этих циклов — это когда я использую гиперкадры в облачном коде для редактирования видео, потому что я, по сути, загружаю его, делаю /goal, и он делает все для меня. Ему нужно получить транскрипцию, вырезать ошибки и паузы. Ему нужно сделать биты. Ему нужно синхронизировать биты. Ему нужно, очевидно, отрисовать их. А затем у него есть куча проверок, чтобы убедиться, что все биты находятся в пределах допустимого и соответствуют транскрипции. И именно так вы можете увидеть, как многие люди говорят: «Хорошо, я сделал это за один выстрел, одним промптом, потому что это был цикл, потому что у него была проверка и итерация». Итак, что делает цикл действительно работающим? Проверяемая цель, жесткая остановка, хорошие инструменты, память, отдельный проверяющий, сначала планирование, логирование, а затем обеспечение разумности с учетом затрат, потому что часто эти циклы могут работать долго. И особенно если у вас довольно жесткая цель, цель, которая может потребовать много итераций, а затем, если критерий завершения также очень жесткий, где, возможно, он просто не может его достичь, тогда эта штука будет работать долго. Итак, у меня было несколько циклов, которые длились более 12 часов, и они просто не очень полезны для меня. В большинстве случаев, когда я запускаю циклы, которые длятся некоторое время, это обычно больше похоже на это. Обычно это вещи, которые занимают около 35 минут или, возможно, пару часов, но мне не нужен цикл, который будет работать 4 дня подряд. Мне просто это не нужно. Итак, еще одно сообщение, которое я пытаюсь передать здесь, заключается в том, что только потому, что вы видите, как кто-то вроде Питера Штайнбергера говорит что-то подобное, это не означает, что это напрямую применимо к вам и вашему случаю использования, потому что он хардкорный кодер. Он строит агентов. Он работает в OpenAI. Это, вероятно, имеет большой смысл для того, как он работает, и, вероятно, увеличило его продуктивность в 10 раз. И в этом прелесть ИИ, потому что он проникнет во все отрасли и все роли. Не все будут использовать его одинаково. Так что хорошо быть в курсе того, что говорят такие люди, как Питер Штайнбергер, но это не значит, что вы должны бросить все прямо сейчас и пойти попробовать. Или, возможно, стоит попробовать, но это не значит, что вы должны полностью интегрировать это в каждую сессию облачного кода навсегда. Итак, в любом случае, исходя из нетехнического бэкграунда, исходя из точки зрения человека, который использует облачный код все время, 24/7, но я использую его для работы со знаниями, а не для массивных рефакторингов кодовых баз баз данных и ежедневного создания программного обеспечения и приложений. Вот как я отношусь к этим агентским циклам, и я видел много всего о них в последнее время. Поэтому я почувствовал, что мне нужно прийти сюда и просто поделиться своим мнением о них. Некоторые из вас могут не согласиться с этим, но именно так я их использую, потому что я их использую. Я просто не гонюсь за этими модными запусками, которые длятся, скажем, три дня подряд. Часто, если у меня есть большая цель, я запущу хороший, объемный цикл перед сном, и я могу проснуться с чем-то, что работало, скажем, четыре или, может быть, восемь часов, и это действительно очень полезно. Но большая часть этого — скорее экспериментальная для меня, а затем я могу взять этот вывод, который я получил от ночного запуска, а затем снова загрузить его в некоторые другие циклы или итерировать над ним самостоятельно как человек. Итак, немного больше деталей было рассмотрено в этой презентации, а также в этом полном аудите, который намного более многословный и супер уродливый на вид, но я прикреплю оба этих источника в своем бесплатном сообществе школы, если вы хотите все это проверить. Ссылка на это находится в описании. Вы зайдете в бесплатное сообщество школы, перейдете в класс, нажмете на все ресурсы YouTube, и вы найдете все там. Но на сегодня все. Так что, если вам понравилось видео или вы узнали что-то новое, пожалуйста, поставьте лайк. Это мне очень помогает. И, как всегда, я ценю, что вы дошли до конца видео, и увидимся в следующем. Избыток.