Transcription
Сегодня я тестирую Klein — это самоописанный автономный агент кодирования прямо в вашей IDE. Это плагин для VS Code, похожий на Cursor. Давайте посмотрим, насколько хорошо он справится с реальным сценарием использования. Я собираюсь попытаться докеризировать мое приложение, чтобы развернуть его в Google Cloud. Приложение, которое я докеризирую, довольно крутое. Это система RAG, о которой я говорил в предыдущем видео. Она использует Vertex AI от Google для выполнения RAG на моих собственных видео YouTube. Фактически, я собираюсь встроить эти слова, которые я сейчас говорю, в векторную базу данных для этой системы RAG. Это довольно круто. Если вам интересно узнать об этом, вам стоит посмотреть видео, которое я сделал обо всем этом. Но для сегодняшнего видео нет необходимости понимать какие-либо детали. Я расскажу вам все, что вам нужно знать. Итак, давайте начнем прямо сейчас. У меня открыт мой проект. Он с открытым исходным кодом, вы можете найти его в описании видео. Итак, внутри zazen Bot 5000 я наберу code. и это откроет VS Code. Итак, внутри VS Code вы можете перейти в Marketplace расширений и просто найти Klein и установить его таким образом, и он появится здесь внизу. Затем вам придется выбрать модель. Я собираюсь использовать AMA для Gemma с Gemma 2, чтобы просто начать, но мы довольно быстро перейдем к Claud. Я бы посоветовал просто использовать Claud с самого начала. Вы увидите, что я имею в виду, почему я это предлагаю, когда мы протестируем это. И вот что мы собираемся сделать: я хочу докеризировать это приложение, поэтому мы добавим Dockerfile, Docker Compose, возможно, обновим README, знаете, такие вещи. И функция. Так вот, это многое делает. Этот zazen bot 5K — чрезвычайно продвинутый. Нет, очевидно, нет. Но эта функция — это то, что я хочу сделать доступным. Этот вопрос процесса. Итак, позвольте мне показать вам, что это делает: обрабатывает пользовательский вопрос через систему RAG, обогащает его метаданными и временной меткой. Конечно, поделитесь. Итак, мы принимаем вопрос пользователя, возвращаем строку. Это все, что делает эта штука, по сути. А затем здесь внизу я вызываю это. Так что, если бы мы запустили эту функцию, тогда я бы вызвал это, или, скорее, если бы мы запустили этот файл, мы могли бы передать этот вопрос в качестве аргумента, и тогда я бы вызвал его здесь. Но рабочий процесс с Docker будет заключаться в попытке выставить это через API. Таков план. Итак, эта папка или этот файл, скорее, называется query rag with metadata. Это то, что нам нужно помнить, когда я буду давать подсказки Klein. Итак, давайте сделаем это. У меня выбрана модель Gemma 2. Посмотрим, как она справится. Я скажу: "Докеризируй это приложение, используй Docker Compose и создай также Dockerfile. Используй Fast API, чтобы сделать". И теперь я наберу @, и я могу просто взять файл здесь. Итак, файл, который я хотел, назывался query rag with metadata. Я просто найду его, и это файл. Так что я могу прикрепить его к контексту таким образом, используя POST-запрос. Вопрос в данных. Отлично. Хорошо, теперь я немного перепутал. Сначала я хочу, чтобы он сделал этот API, затем я хочу докеризировать приложение. Да, обнови README. Отлично. Это моя подсказка. Я сохраню это, потому что, вероятно, нам придется попробовать это снова, потому что мы используем Gemma 2. Так что посмотрим, как она справится. Я просто запущу это. Вы заметите, что есть режим действия и режим плана. Так что я перехожу прямо в режим действия, и я предварительно одобрил кучу вещей, которые Klein сможет сделать. Так что он делает API-запрос прямо сейчас. И одна вещь, которую вы заметите, это то, что мы отслеживаем окно контекста. Так что по мере того, как этот разговор становится длиннее, это число, размер нашего окна контекста будет увеличиваться, поскольку контент попадает туда, включая входные подсказки, а затем ответы появляются в терминале, чтобы мы могли просто. Так что, если я наберу envy top, это позволит увидеть использование нашего GPU, которое составляет 100%, и я использую всю свою память. Так что мой компьютер очень усердно работает, чтобы это произошло. Используя AMA, это использует модель с 9 миллиардами параметров. Вот что Klein сейчас отправляет в AMA. Итак, задача дана в этом HTML-формате, в этих скобках, и это просто то, что я написал. И затем обратите внимание, как он вводит файл здесь. Позвольте мне сделать это больше. Это очень круто. Итак, это "чтобы сделать этот файл", и "так что это контекст", и они говорят "см. ниже для контекста". Это буквально подсказка, как вы бы ввели в ChatGPT или интерфейс Claud или что-то еще. И затем сам файл — это HTML с установленным путем, как это атрибут, что невероятно круто. И затем, конечно, здесь все содержимое файла. И давайте посмотрим, как заканчивается подсказка. Итак, содержимое файла заканчивается закрывающим тегом. Это невероятно. Просто инженерия подсказок, как работает Klein. Это полностью открытый исходный код, верно? Это программное обеспечение с лицензией Apache. Сведения об среде, другими словами, вы можете взять этот точный шаблон подсказки и использовать его для своих собственных проектов без каких-либо проблем. Это было бы юридически совершенно нормально. Однако это не юридическая консультация. Текущее рабочее время. Это все мои файлы. И вот и все. А затем он запускается. Это вся подсказка. О, хорошо, вот задача. Klein испытывает трудности. Сложные подсказки. Хорошо, ему не нравится. Ему не нравится. О, Gemma 2. Давайте попробуем что-нибудь другое. Я собираюсь загрузить новую модель, и мы будем использовать Qwen. Итак, давайте посмотрим. Я использовал, я загрузил модель с 14 миллиардами параметров, но она будет очень медленной. Так что давайте просто загрузим модель с 0,5 миллиарда параметров и запустим ее, чтобы мы могли протестировать это. Так что моя мысль здесь — просто заставить что-то работать локально с AMA, потому что это чертовски круто. Но затем мы будем использовать Claude, и мы покажем, как на самом деле выполнить эту задачу и показать его полные возможности. Так что я сделаю это через мгновение. Итак, здесь он запускает какого-то кодера. Итак, давайте посмотрим, если я попрошу его написать функцию эллиптической кривой с Python. Хорошо, посмотрим, как быстро он работает. Теперь, хорошее ли содержание? Я понятия не имею, но это быстро. На самом деле, я почти знаю, что содержание не будет хорошим. Но давайте вернемся к AMA и используем эту модель. Так что, возможно, я могу просто выбрать ее здесь. Да, она уже доступна. Я собираюсь выбрать Qwen coder, эту совершенно новую модель. Мы начнем совершенно новую задачу. У меня выбрана эта новая модель, и мы попробуем это снова. Он запустил тот же API-запрос, но теперь он работает через эту модель кодера. Так что мы должны увидеть какой-то вывод очень быстро. Вот оно. Хорошо, я не понимаю. Я сделаю это меньше, чтобы мы могли понять, что происходит. Итак, вот информация о задаче. Это вывод модели прямо сейчас. Она передает вывод для нас, чтобы мы могли видеть, что именно она делает. Хорошо, так что это не очень работает, возможно, потому, что у нее нет вызова инструментов или чего-то еще. Я не совсем уверен. Попытка завершения. Я имею в виду, по сути, это сделано. Странно то, что она не создала для нас никаких файлов. Так что это провал. Что, если я выберу... Давайте выберем модель кодера с 14 миллиардами параметров, и я выйду из этого, и мы попробуем совершенно новую задачу. Итак, давайте запустим ее. Я слышу, как мой компьютер гудит прямо сейчас. Если я открою инструмент под названием Envy top, это как HTP, но для GPU. Я могу использовать Htop на самом деле. Я думаю, мне придется его установить. Но в верхней панели здесь мы видим, как работает Envy top. Я использую 100% GPU. Хорошо, давайте запустим Htop. Обратите внимание, что у Htop очень приятный интерфейс. Мне очень нравится интерфейс Htop. Вы можете видеть все мои процессоры, но вы не можете видеть, что делают отдельные GPU. Мой компьютер очень лагает. Вот оно. Так что он справляется, и я уверен, что это будет довольно хорошо. Это даже не самая большая модель, конечно. Я бы хотел использовать модель Qwen с 32 миллиардами параметров. Но она работает. Это весело. Это работает для Klein, и она фактически начинает писать наш код сейчас. Вы можете представить, что это будет очень полезно для долгосрочной задачи. Очень полезно. Я пытаюсь оправдать эту скорость. Вы можете представить, что вы запускаете это и буквально ложитесь спать, и она пишет для вас целую кодовую базу. Очевидно, это не практичный способ работы, потому что вам нужно быстро итерировать и тестировать. Вот оно снова. Теперь, когда у нас есть... О, это так мучительно, знаете ли, наблюдать за этим. Но пока это работает, я покажу вам Qwen. Так что вы можете видеть модель с 32 миллиардами параметров, верно? Это то, что мы хотели бы использовать. Мы используем только модель с 14 миллиардами параметров, это та, которая работает прямо сейчас. И вы видите, что мы попробовали модель с 0,5 миллиарда параметров, и она просто... она просто не сработала вообще. Но это довольно впечатляющая модель, если говорить о бенчмарках и производительности. Но все эти цифры, которые мы видим здесь внизу, это все действительно большие, модель с 32 миллиардами параметров. Так что просто имейте в виду, что на самом деле непрактично получать такие результаты, и вы также заметите, что она значительно отстает от Claude Sonet. Я все еще не очень оптимистичен в отношении локальных моделей для очень простых задач, и я думаю, нам нужно выяснить их вариант использования. Но это не их вариант использования. Итак, позвольте мне отменить это, и мы протестируем это сейчас с полной мощью Claude от Anthropic. Итак, я собираюсь выбрать Anthropic. Хорошо, закройте глаза, YouTube. Вот мой ключ, и я собираюсь использовать Claude 3.7, и я собираюсь запустить тот же самый запрос. Посмотрим, как он справится. Первое, что я заметил, это то, что максимальный размер окна контекста фактически увеличился. Мы также сразу же начали... Вы видите, насколько это лучше, верно? Вот как Klein должен работать. Вот для чего он был разработан. Мы также можем видеть входные токены, которые были 12, а затем выходные токены здесь. Это объем контекста. Да, важно отслеживать входные и выходные данные по-разному, потому что они стоят по-разному. И Klein, что невероятно, также отслеживает стоимость API, которая абсурдно уже составляет 10 центов за эту работу, которую мы пытаемся выполнить прямо сейчас. Так что у меня настроен Klein на автоматическое одобрение, и поэтому он делает всякие вещи. Он продолжает запускать API-запросы. Он фактически отслеживает индивидуальную стоимость каждого API-запроса в дополнение к совокупной стоимости, что удивительно. Мы видим, как растет наше окно контекста, поскольку все эти запросы поступают и возвращаются. И он также делает всякие вещи, такие как создание новых файлов для него. Так что, если я сделаю это немного меньше, мы сможем увидеть всю работу, которую он делает здесь. Он продолжает создавать новые файлы. Он создал тестовый API. Он редактирует файл README. За этим довольно безумно следить. Немного трудно понять, что он делает. Хорошо, так что он редактирует мои требования. Он добавил запросы. Он должен добавить Fast API. Вот он, Fast API уже был добавлен. Хорошо, так что он сделал следующее: он добавил все, а затем начал создавать тесты, чтобы проверить, работает ли это, что совершенно безумно. Привет, ребята, это короткая реклама моего курса "Дорожная карта инженера ИИ". Если вы зайдете на zazen codes.com, вы можете зарегистрироваться и начать отслеживать свой прогресс в изучении инженерии ИИ. Если я зайду в основы машинного обучения, инструменты и фреймворки, у меня есть урок по средам разработки, и это расскажет вам все об IDE и о том, что я люблю делать для своей среды разработки. Я говорю здесь о VS Code. Я также говорю здесь о Docker. И это всего лишь один из многих, многих уроков в этом курсе. Так что, как только вы закончите этот, вы можете отследить его. И я хотел, чтобы этот курс был очень приятным в прохождении и дал вам много информации обо всех видах вещей, связанных с инженерией ИИ. На данном этапе я бы определенно сказал, что он выходит за рамки, но я думаю, что он хочет иметь возможность протестировать себя, потому что часть того, что может делать Klein, это то, что ему как бы сказали запускать тесты. Хорошо, так что очень быстро, они такие: "Хорошо, попробуйте. Docker compose up -d для запуска сервиса". Хорошо, давайте перейдем в мой терминал, и я просто посмотрю, что он для нас сделал. К сожалению, у меня не было чистого diff Git, поэтому я не могу сказать, были ли это мои изменения или нет. Это глупо с моей стороны, но я явно вижу, что test API новый. И тогда, очевидно, все, что связано с Docker, будет новым. Так что он написал мне этот тестовый файл. Круто. А затем давайте посмотрим на Docker. Итак, вот мой Dockerfile из Python 3.10. Мы собираемся... О, это выглядит довольно интенсивно. Хорошо, да, он не сделал требования, но в любом случае. Так что здесь мы собираемся запустить наше приложение с помощью Uvicorn. Это имеет смысл. Это круто. Да, хорошо, это выглядит довольно хорошо. А затем Docker Compose. Давайте посмотрим, что там. Итак, мы собираемся собрать наш Dockerfile, мы собираемся запустить на порту 8000. Круто. У меня есть некоторые переменные среды, но, интересно, хорошо, да, хорошо. Я уже установил их в своем приложении, так что Klein, видимо, знал, что они будут доступны, или он прочитал мой файл среды. Одна из этих двух. Да, также нужны эти учетные данные. Это выглядит довольно потрясающе. Давайте попробуем. Я скажу: "Docker compose up -d" для запуска в фоновом режиме. Хорошо, он собирает мой Docker-образ. Он устанавливает все это. Хорошо, пока это работает. Позвольте мне вернуться к Klein, и мы попытаемся найти, что, что. Хорошо, так что у нас также есть трассировка всех файлов, которые он создал здесь, потому что... Хорошо, это приложение. И если я зайду сюда, что он сделал для меня? Он создал новый файл в моей библиотеке Python под названием app, и это будет запускать мое приложение Fast API. И, кстати, это построено. Я могу сказать Docker PS, и я могу даже посмотреть эти Docker logs. Я просто присоединюсь к нему. Я буду следить за логами. И давайте сделаем проверку работоспособности. У меня открыт мой браузер Chrome. Так что, если я перейду по этому URL-адресу, давайте попробуем. Детали не найдены. Хорошо, так что это работает. Я не знаю, понравилось ли это ему. О, я знаю, статус работоспособности — "здоров". Куда бы вы ни пошли, Klein, вы сделали это. Это потрясающе. Этот инструмент действительно мощный. Мне не нравится, что это стоило мне 30 центов, но кажется, что он сделал буквально невероятное. Он сделал что-то невероятное. И для инструмента с открытым исходным кодом это потрясающе. Так что я, очевидно, хочу попробовать свой конечный точка process question. Хорошо, я могу получить доступ к API здесь, и кажется, что он работает на конечной точке запроса. Так что я хочу сделать POST-запрос сюда. Но интересно, создал ли он... сообщил ли он мне инструкцию в моем файле README, как это сделать. Хорошо, здесь он дал мне пример запроса, что потрясающе. И он хочет, чтобы я объяснил агентов. Давайте попробуем это в моем терминале. Так что я открою разделенную панель. Мы будем использовать Curl. Мы будем делать POST-запрос этого запроса. Объясни смысл жизни. Это было бы намного интереснее. О, он не нашел мои учетные данные. Увы. Да, я имею в виду, я не назвал их Google credentials. Это имеет большой смысл. Хорошо, закройте глаза снова. Я исправлю эту ошибку с учетными данными. Хорошо, у меня есть эти, это мои учетные данные Google. Вот так. Он хотел, чтобы они были в этом файле, который был таким. Так что я думаю, что он ожидал, что он будет в credentials, этот файл прямо там. Так что теперь я просто скопировал свои фактические учетные данные сюда. И если я посмотрю на свое Docker-приложение, на самом деле, возвращаясь сюда, если я посмотрю на свой Docker Compose, это том. Так что он должен обновиться немедленно. Я не думаю, что мне нужно что-то перестраивать, что здорово. Я могу просто попробовать это снова, и это работает. Посмотрите на это. Итак, объясни смысл жизни. Обработка и вопрос. Итак, это выходные данные, которые я написал в свою библиотеку Python. Куча журналов. Это внутри моего Docker-контейнера наверху. А здесь внизу я... это мой Klein. Так что я не могу ответить на вопрос, используя предоставленные результаты поиска. О, результаты поиска обсуждают... Не могу. Хорошо, так что это сработало, но я просто... я просто не... я не рассказываю о смысле жизни в своих видео YouTube. Но что я делаю? Что я делаю? Скажем, я не знаю, как это работает. Я, вероятно, расскажу об этом. Давайте посмотрим, смогу ли я... найти хороший вопрос об этом. Это сработало очень быстро. Да, хорошо, вот как это работает. И это... и эта система настроена на глубокую ссылку вас на мое видео в определенное время, когда я фактически говорю об этой теме. Мы могли бы попробовать другой пример. Итак, расскажи мне о RAG. Когда мне следует использовать его вместо агентов? Вот оно. Очень быстро. Я сосредоточен на RAG и агентах. Я думаю, что это... это как цитата, кажется, из моего видео. Я построил агент ИИ для написания исследовательских работ. Хорошо, так что он как бы пошел по пути агента. Хорошо, это круто. В любом случае, это работает. Klein справился хорошо. Теперь вы можете задаться вопросом, лучше ли Klein, чем Cursor. Ну, я сравнил эти две IDE лоб в лоб в различных задачах, связанных с программированием, и у меня есть видео об этом. Я оставлю его вам здесь. Я тестирую их по ряду соображений, таких как производительность, стоимость и пользовательский опыт. Если вам понравилось это видео, я буду признателен, если вы поставите мне лайк и рассмотрите возможность подписки на больше таких видео. Итак, что вы думаете о Klein? Мне очень понравилось, хотя я не уверен, что это практично при текущих затратах на API, особенно Claude, который самый дорогой. Он дороже, чем GPT 40, но он лучше. Это лучшая доступная, на мой взгляд, модель кодирования. И хотя Klein как бы обещает, что вы можете использовать любую модель, как вы видели в этом видео, это не всегда работает так хорошо. Меньшие модели могут работать, но они просто могут не работать вообще. Они могут быть неэффективными, потому что они просто такие глупые. Они такие... особенно самые маленькие, которые на самом деле будут очень производительными с такими вещами, как AMA. А затем вы переходите к более крупным, которые работают относительно хорошо, например, Qwen 2.5 с 32 миллиардами параметров, но которые совершенно непрактичны для локального запуска. Так что, на мой взгляд, Klein на текущую дату — это действительно движок Claude. Он предназначен для работы с Claude. И, как вы видите, он отлично работает с Claude. Это так красиво, на самом деле. Вывод, способ отслеживания затрат, все это так потрясающе. Форматирование подсказок с HTML и как бы ссылки на контекст, как он делает это на этом действительно красивом языке. Я думаю, есть чему поучиться для разработчиков, просто взглянув на очень наглядное логирование этого инструмента. Итак, окончательный вердикт: Klein потрясающий. Отличная работа. Мне нравится. Вам стоит попробовать. Лучше ли он, чем Cursor? Практичнее ли он? Я не уверен, но у меня есть ощущение, что Cursor превзойдет Klein не только по пользовательскому опыту, но и по стоимости, по фактической практичности использования. Однако я собираюсь сделать полное видео, сравнивающее эти два. Так что, если вы хотите увидеть это, я оставлю ссылку прямо сейчас на экране. Спасибо, что посмотрели это. Я Алекс, и Намасте. [Музыка]