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 или Claude или что-то еще. А затем сам файл — это HTML с установленным путем, как атрибут, что невероятно круто. А затем, конечно, здесь все содержимое файла. И посмотрим, как заканчивается подсказка. Содержимое файла заканчивается закрывающим тегом. Это невероятно. Просто инжиниринг подсказок, как работает Klein. Это полностью открытый исходный код, верно? Это программное обеспечение с лицензией Apache. Сведения об среде, другими словами, вы можете взять этот точный шаблон подсказки и использовать его для своих собственных проектов без каких-либо проблем. Это было бы юридически совершенно нормально. Однако это не юридическая консультация. Текущее рабочее время. Это все мои файлы. И вот и все. А затем он запускается. Это вся подсказка. О, хорошо, вот задача. Klein испытывает трудности. Сложные подсказки. Хорошо, ему не нравится. Ему не нравится. О, Gemma 2. Давайте попробуем что-нибудь другое. Я собираюсь загрузить новую модель, и мы будем использовать Qwen. Так что посмотрим. Я загрузил 14-миллиардную модель, но она будет очень медленной. Так что давайте просто загрузим 0,5-миллиардную модель и запустим ее, чтобы мы могли протестировать это. Итак, моя мысль здесь — просто заставить что-то работать локально с AMA, потому что это чертовски круто. Но затем мы будем использовать Claude, и мы покажем, как на самом деле выполнить эту задачу и показать его полные возможности. Так что я сделаю это через мгновение. Итак, здесь он запускает какого-то кодера. Так что давайте посмотрим, если я попрошу его написать функцию эллиптической кривой с Python. Хорошо, посмотрим, как быстро он работает. Теперь, хорошее ли содержание? Я понятия не имею, но это быстро. Фактически, я почти знаю, что содержание не будет хорошим. Но давайте вернемся к AMA и используем эту модель. Так что, может быть, я могу просто выбрать ее здесь. Да, она уже доступна. Я выберу Qwen coder, эту совершенно новую модель. Нам нужно начать совершенно новую задачу. У меня выбрана эта новая модель, и мы попробуем снова. Он запустил тот же API-запрос, но теперь он работает через эту модель coder. Так что мы должны увидеть вывод очень быстро. Вот он. Хорошо, я не понимаю. Я сделаю это меньше, чтобы мы могли на самом деле понять, что происходит. Итак, вот информация о задаче. Это вывод модели прямо сейчас. Он транслирует вывод для нас, чтобы мы могли точно видеть, что он делает. Хорошо, это не совсем работает, возможно, потому что у него нет вызова инструментов или чего-то еще. Я не совсем уверен. Попытка завершения. Я имею в виду, в основном, это сделано. Странно то, что он не создал для нас никаких файлов. Так что это провал. Что, если я выберу 14-миллиардную модель coder, и я выйду из этого, и мы попробуем совершенно новую задачу. Так что давайте запустим ее. Я слышу, как мой компьютер крутится. Если я запущу инструмент под названием Envy top, это как HTP, но для GPU. Я могу запустить htop, на самом деле. Думаю, мне придется его установить. Но в верхней панели здесь мы видим Envy top. Я использую 100% GPU. Хорошо, давайте запустим htop. Заметьте, у htop очень хороший интерфейс. Мне очень нравится интерфейс htop. Вы можете видеть все мои процессоры, но вы не можете видеть, что делают отдельные GPU. Мой компьютер очень тормозит. Вот он. Он делает это, и я уверен, что это будет довольно хорошо. Это даже не самая большая модель, конечно. Я бы хотел использовать 32-миллиардную модель Qwen coder, но она работает. Это весело. Это работает для 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. Мы будем отправлять этот запрос: "Объясни смысл жизни". Это было бы намного интереснее. О, он не нашел мои учетные данные. Бу. Да, я не назвал их 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 не только по пользовательскому опыту, но и по стоимости, по фактической практичности использования. Однако я собираюсь сделать полное видео, сравнивающее эти два. Так что, если вы хотите увидеть это, я оставлю ссылку прямо сейчас на экране. Спасибо, что посмотрели это. Я Алекс. Намасте. [Музыка]