📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Google Jules: КОНЕЦ профессии программиста или пустая трата времени?

Автоматизируй и властвуй14:52

Transcription

Всем привет. В этом видео хочу сделать небольшой обзор Google Julies, или Jules, как правильно. Его недавно Google обновил. А для тех, кто не знает, это такой вот AI-агент, который позволяет автономно разрабатывать любой софт. И это, причём, делается всё на облачном сервере, не у нас где-то внутри, как это делается в курсоре, вот, а это делается там на стороне Гугла, а в некой изолированной среде.

У меня есть вполне конкретная задача. Мне нужно запилить MCP-сервер для Google календаря. У меня есть такой небольшой стартап, где я позволяю пользователям создавать своих собственных AI-агентов, а редактировать промты, выбирать модели. И мне очень хочется, а, туда добавить возможность подключить свой собственный Google календарь. У меня есть уже функционал реализованный, где пользователь, а, может подвязать свой Google аккаунт и дать права на Google календарь. Но для именно AI-агента нету самого инструмента, тула, да, MCP-тула, который бы он использовал для того, чтобы создавать записи в календаре, а, редактировать, удалять и получать, собственно, эти записи, чтобы видеть слоты свободные. Именно это я и собираюсь сделать.

Постараюсь этот ролик не растягивать, комментировать параллельно, покажу весь процесс с самого начала. Какой будет результат, мне неизвестен, и будет ли он вообще.

С чего начну? Я открыл тут ChatGPT. В ChatGPT написал промт, а, в котором я прошу сделать мне, а, перди project requirements document. Ну, по-русски это ТЗ. Писать ТЗ. Вот все функции перечислил, просто описал его своим языком. Я не говорил, какую технологию мне нужно использовать или ещё что-то вроде того. Я хочу посмотреть, что мне сделает GPT.

И пока GPT думает, мы с вами не будем терять время, зайдём в Google Julies и подвяжем к нему мой репозиторий. Вот здесь вот есть вот GitHub repository, можно выбрать. И я нажимаю Add Repository. Сейчас должен открыться GitHub. Google Julies запрашивает у меня доступ к репозиторию. Я говорю: "Нет, ко всем не дам, но дам тебе к конкретному репозиторию. Я уже его создал, он абсолютно пустой". Вот Google Calendar Tool for Agent. Абсолютно пустой репозиторий. И именно его я подключу. Репозиторий выбрал.

Тем временем посмотрим, что у нас там по техническому заданию в GPT. Он до сих пор пишет, что ли? Ужас какой. У меня GPT накидал уже ТЗ. Я его вставляю сюда. Так, что у нас? Create plan. Start. Да, нам нужно создать, в первую очередь нам нужно создать план. Как мы это будем всё реализовывать. Я, честно скажу, а, да, уведомления хорошо, пусть будут. Не читал. Всё вот на ваших глазах происходит, но вижу, что здесь переменные среды, схемы есть все. А в качестве стека он выбрал TypeScript, Node.js, официальный Google API клиент, Docker библиотеки для MCP. В общем, плюс-минус что-то я близкое. Я бы, может быть, чуть попроще какой-то вариант выбрал сам, но неважно. Мы тестируем. Мы хотим посмотреть на что Julies способен. Создаёт нам план. Вот можно раскрыть и посмотреть. Значит, инициализация проекта, то есть установить там все пакеты, все дела. Потом Core Infrastructure, HTTP Control Plane. То есть он вначале проект инициализирует, настраивает основные файлы, поинты, потом уже заворачивает всё это в MCP, тесты и dev. Ладно, о'кей, доведёмся и посмотрим, что будет дальше происходить.

Я думаю, что здесь не будет какого-то завораживающего, завораживающего дух зрелища. Вот, э, я этот план одобряю и с помощью магии монтажа я буду перематывать на какие-то интересные моменты, которые буду освещать. А так, начал он уже потихонечку создавать файлы. Создал файл с переменными средами. Ну, образец, куда нужно будет вносить свои собственные данные. Dockerfile. Как-то он немножко с другого конца зашёл, но может ему так виднее. Ну ладно, я просто думаю, что мы вначале сам скрипт напишем, да, сам код, протестируем его, а потом уже пойдём там в оборачивать это всё в Docker. Ну, наверное, хорошо, спорить не будем. Ушёл этим путём. О'кей.

Да, надо будет мне всё это со своего Google аккаунта перенести. Client secret, client ID на своё приложение. Что интересно, я вот эту задачку кинул, да, с самого начала, больше ещё ничего не писал. И вот у меня лимит, если я могу 100 задачек в день закидывать. Мне интересно, до того момента, когда это заработает, ну, я надеюсь, что это заработает, сколько у меня израсходуется лимита, чтобы реально понять. То есть у меня сейчас подписка Ultra на Google, она стоит там в районе 150 долларов. Мне интересно, сколько я могу реальных запросов и что я в итоге получу, за какое количество запросов я это получу. Будем смотреть.

Что-то не получилось у него сделать npm install. Он что, прикольно, здесь он код-ревью запустил, сравнивает с моими целями, какие-то нашёл. А во время код-ревью нашёл несколько критических уязвимостей его имплементации, в том числе уязвимость в безопасности. Короче, он зафейлился в итоге это всё пофиксить, говорит: "Мне нужен, а, полный план ревизии, да, составить". И вот начал работать над фиксами. Вот его план. Давайте будем смотреть дальше. Я ничего не делаю, просто читаю, вот смотрю, что вообще тут реализовано. Вот он внёс правки, опять запустил код-ревью, говорит тебе: "Всё готово, ready to review, аэ, всё это реализовано и так далее. Давай сделаем publish branch". То есть мы сейчас опубликуем код в репозитории, потом внутри локально. То есть скачаем, сейчас сделаем publish branch. 17 минут это всё дело заняло в общей сложности. Всё, View branch сделаем request. Вот уже готовый, да? Потому что в репозитории он был абсолютно чистый. Там был только один файл README. Мы сейчас сделаем сразу request и автоматически всё это смержим. Merge pull request. Confirm merge. Конфликтов быть никаких не должно. Так, всё, теперь у нас есть первая, так сказать, версия.

И давайте я сделаю копии и открою это всё в Winserf. Так, ну, первым делом посмотрим example, то есть нам нужно его заполнить свои данные здесь, чтобы это всё заработало. Минимум Google Client и Google Secret. Я так мельком глянул, а у меня сложилось такое впечатление, что не совсем тот функционал, который нам нужен, потому что у меня уже есть приложение, которое мне позволяет получить access и refresh token от пользователя. И по сути, вот этот сервис, он должен работать в Docker, а, и я ему сам подаю уже готовый access и refresh. По идее, ему здесь не нужно иметь функционала. Но единственное, что должно происходить, что если refresh token уже умер, то его нужно обновить. Вот. Но я сейчас написал как раз промт и посмотрим, что Julies ответит.

Он продолжил работу, говорит: "Давай сейчас сделаю рефакторинг, модель аутентификации поменяю". А какие изменения? Уберёт эндпоинты, связанные с аутентификацией. Уберёт сохранение токенов, а, обновит схемы инструментов и логику инструментов, что само по себе, конечно, а, хорошо. Я думаю, сейчас даже не будем это всё тестировать, так как работать оно, мне кажется, не будет так, как нам надо. Вот. Поэтому дождёмся сейчас обновлений, а, сделаем потом merge и уже потом, а, всё это дело запустим и протестируем. Довольно хорошо объяснил. мог говорить, что когда будешь этот MCP использовать, то есть ты должен подавать пользовательский access и refresh. Но для того, чтобы этот MCP автоматически обновлял токены, если а длительный токенш он умер уже, да, он там через это 30 или 60 дней умирает, вот для этого а, всё равно Google Client и Client ID и Secret обязательно нужно прикладывать. Тогда он сможет сам обновить токены, если они истекли, и ещё раз повторить запрос. Собственно, то, что нам и нужно было. Сейчас он работает, переделывает. А, когда работа закончит, вернёмся уже, а, перетянем новую версию кода и попробуем запустить.

Работа над кодом его закончилась. А, публикуем изменения и идём в Winserf и делаем git pull. А, сейчас я вот эти вот данные добью и попробуем запустить его. Переходим здесь уже на cloud. Какие-то ошибки компиляции. Есть ошибки TypeScript. К сожалению, я не могу вот это всё делать в Julies, потому что это вот облачный такой, так называемый фоновый, да, агент-разработчик. Он как бы не может это запустить. Он это может только делать. Кто за ним ошибки будет подтирать? Это вот, наверное, мы с вами. Ну, я пока ещё не не понимаю, да, как это сделать. Вот уже что-то мы там начинаем переделывать, да, за ним, перелопачивать фиксы импортов. Cloud поломал, поломал код, в итоге сбилдил проект. Сейчас мы попросим его. Я вот занёс в файл .env свои credentials, свой access и свой refresh token. Мы просто попробуем протестировать календарь. Говорит, тест провалился, не получилось ничего получить. Это и правильно, потому что expired токены у пользователей будут, их нужно рефрешить. Говорит, что написал тест, обновил моковые данные, за 7 дней, говорит, могу получить ответ в формате MCP. Ну вот и не работает такая беда с credentials.

Ну, повозился я, наверное, минут 15, чтобы получить свои creds, свой refresh и access ключи с помощью тестов локально. И в итоге получил а свои события из календаря. А это мы проверили опишку. Теперь нам нужно посмотреть, как это будет работать с MCP. И мы сейчас через Winserf прямо подключим этот MCP, запустим MCP-сервер и а сам же лод уже сможет вызвать мой календарь через MCP, если это заработает. Вот он дал конфигурацию. Вот здесь вот секреты здесь, а, client ID, client Secret. И в данном случае аргументы, они у меня лежат в файле, который нужно передавать с моими refresh токенами. Сейчас мы его подключим прямо в Winserf и попробуем потестим.

Я потратил ещё примерно около 40 минут или часа. Было много ошибок. В основном они все были допущены Julies. То есть он вообще неправильно собрал а базовую логику. То есть он в ответ MCP он засунул логи. А этого делать нельзя. По итогу пришлось подключить Cloud. Он там доправил это всё собрал. И в итоге этот MCP теперь, а, работает. До Docker я уже, наверное, не дойду в этом видео, потому что, ну, ещё, наверное, пару часов придётся посидеть. Ээ, может быть, и нет.

Но а какой здесь вывод? Такие агенты, как Julies или вот сейчас Codex 2.0, да, тоже он работает в фоновом режиме. Мне кажется, что чаще всего такие агенты не рассматриваются как агенты, которые могут полноценно с нуля что-то сделать. Ну, по крайней мере, Julies сейчас не смог это сделать. Пришлось скачать код, пришлось подключить, а, уже в в локальной среде разработки дополнительную модель. И вот на этот MCP, который у меня теперь работает, ну, по крайней мере, без Docker, просто как локальный сервер, он работает, но у меня ушло 2 часа. И мне кажется, это очень много времени для выполнения такой задачи простой. Создать MCP-сервер с четырьмя тулами. Вот теперь ещё надо разобраться с тем, как подставлять туда программно access и refresh token, а не отдавать это всё на лодку агенту. Надо подумать. А поэтому я считаю, что Julies - это классная штука. Наверное, его нужно просить какие-то более мелкие фичи а пилить.

Если тебе понравилось это видео, обязательно ставь лайк, пиши комментарии. У меня ещё впереди будет много видео. Если ты интересуешься AI разработкой, AI driven Development и разрабатываешь что-то с агентами, с искусственным интеллектом, подписывайся на канал. У меня много чего уже интересного есть и много чего будет. В общем, увидимся в следующем видео. Пока.

[музыка]

[музыка]