1. Увертюра
Эпоха разрозненной разработки подходит к концу. Следующая волна технологической эволюции — это не гений-одиночка, а совместное мастерство. Создание единого умного агента — увлекательный эксперимент. Создание надёжной, безопасной и интеллектуальной экосистемы агентов — настоящей вселенной агентов — важнейшая задача для современного бизнеса.
Успех в эту новую эпоху требует объединения четырёх важнейших ролей, фундаментальных столпов, на которых держится любая процветающая агентурная система. Недостаток в любой области создаёт уязвимость, способную поставить под угрозу всю структуру.
Этот семинар — исчерпывающее руководство для предприятий по освоению агентного будущего в Google Cloud. Мы предлагаем комплексную дорожную карту, которая проведет вас от первой идеи до полномасштабной практической реализации. В ходе этих четырёх взаимосвязанных лабораторий вы узнаете, как специализированные навыки разработчика, архитектора, инженера по данным и специалиста по SRE должны быть объединены для создания, управления и масштабирования мощной среды Agentverse.
Ни один столп не может поддерживать мир агентов в одиночку. Грандиозный замысел архитектора бесполезен без точного исполнения разработчика. Агент разработчика слеп без мудрости инженера по данным, а вся система хрупка без защиты специалиста по SRE. Только благодаря синергии и общему пониманию ролей друг друга ваша команда сможет превратить инновационную концепцию в критически важную, операционную реальность. Ваше путешествие начинается здесь. Приготовьтесь освоить свою роль и понять, какое место вы занимаете в общей системе.
Добро пожаловать в мир Агентов: призыв к чемпионам
В бескрайних цифровых просторах бизнеса наступила новая эра. Это эпоха агентов, время огромных возможностей, когда интеллектуальные, автономные агенты работают в идеальной гармонии, ускоряя инновации и сметая обыденность.
Эта связанная экосистема власти и потенциала известна как Agentverse.
Но нарастающая энтропия, безмолвное разложение, известное как Статика, уже начала разрушать границы этого нового мира. Статика — это не вирус и не ошибка; это воплощение хаоса, пожирающего сам акт творения.
Он усиливает старые разочарования, принимая чудовищные формы, порождая Семь Призраков Развития. Если их не остановить, Статика и её Призраки затормозят прогресс, превратив обещания Вселенной Агентов в пустыню технического долга и заброшенных проектов.
Сегодня мы призываем чемпионов дать отпор волне хаоса. Нам нужны герои, готовые отточить своё мастерство и работать сообща ради защиты Вселенной Агентов. Пришло время выбрать свой путь.
Выберите свой класс
Перед вами четыре разных пути, каждый из которых — важнейшая опора в борьбе со Статикой . Хотя ваше обучение будет проходить в одиночку, ваш окончательный успех зависит от понимания того, как ваши навыки сочетаются с навыками других.
- The Shadowblade (Разработчик) : Мастер кузницы и передовой. Вы — мастер, который создаёт клинки, создаёт инструменты и сражается с врагом в замысловатых деталях кода. Ваш путь — это точность, мастерство и практичное творчество.
- Призыватель (Архитектор) : великий стратег и организатор. Вы видите не отдельного агента, а всё поле боя. Вы разрабатываете главные чертежи, позволяющие целым системам агентов общаться, сотрудничать и достигать цели, гораздо более важной, чем любой отдельный компонент.
- Учёный (инженер данных) : искатель скрытых истин и хранитель мудрости. Вы отправляетесь в необъятные, дикие дебри данных, чтобы раскрыть тайны, которые дают вашим агентам цель и зрение. Ваши знания могут раскрыть слабости врага или усилить союзника.
- Страж (DevOps / SRE) : Непоколебимый защитник и щит королевства. Вы строите крепости, управляете линиями снабжения энергией и обеспечиваете всей системе устойчивость к неизбежным атакам Штатика. Ваша сила — фундамент, на котором строится победа вашей команды.
Ваша миссия
Ваше обучение начнётся как отдельное упражнение. Вы пройдёте по выбранному пути, осваивая уникальные навыки, необходимые для овладения вашей ролью. В конце испытания вы столкнётесь со Спектром, рождённым Статикой, — мини-боссом, который использует особые испытания вашего ремесла.
Только освоив свою индивидуальную роль, вы сможете подготовиться к решающему испытанию. Затем вам необходимо сформировать отряд из чемпионов других классов. Вместе вы отправитесь в самое сердце порчи, чтобы сразиться с величайшим боссом.
Последнее совместное испытание, которое проверит ваши объединенные силы и определит судьбу Вселенной Агентов.
Вселенная Агентов ждёт своих героев. Ответите ли вы на зов?
2. Кодекс Теневого Клинка
Кодекс Теневого Клинка открыт перед вами. Откликнитесь на его зов. Агентвселенной угрожает надвигающийся хаос Статики, и только те, кто овладеет техниками этого кодекса, смогут дать отпор. Это путь точности и дисциплины. Сегодня начинается ваше обучение. Вы научитесь владеть ИИ не как простым инструментом, а как разумным клинком, который нужно укротить и освоить. Следуйте заложенным здесь учениям, и вы создадите оружие чистой логики — разумного агента, отточенного и готового к бою.
Чему вы научитесь
- Возьмите под контроль свое главное оружие: Gemini CLI.
- Привлекайте внешние ресурсы, интегрируя инструменты MCP с Gemini CLI для анализа незнакомых кодовых баз.
- Переведите свое намерение в «Вибрацию», используя проектную документацию, чтобы управлять своим партнером по искусственному интеллекту.
- Создайте чистое модульное решение, создав своего первого автономного агента с помощью комплекта разработки агентов (ADK).
- Создание автоматизированных оценочных комплексов для тестирования и проверки вашего агента.
- Создайте полноценный конвейер непрерывной интеграции для автоматического тестирования, контейнеризации и архивации вашего агента.
3. Подготовка тренировочной площадки
👉Нажмите «Активировать Cloud Shell» в верхней части консоли Google Cloud (это значок в форме терминала в верхней части панели Cloud Shell),
👉Нажмите кнопку «Открыть редактор» (она выглядит как открытая папка с карандашом). В окне откроется редактор кода Cloud Shell. Слева вы увидите проводник.
👉Найдите свой идентификатор проекта Google Cloud:
- Откройте консоль Google Cloud: https://console.cloud.google.com
- Выберите проект, который вы хотите использовать для этого семинара, из раскрывающегося списка проектов в верхней части страницы.
- Идентификатор вашего проекта отображается на карточке информации о проекте на панели инструментов.
👉Откройте терминал в облачной IDE,
👉💻 В терминале убедитесь, что вы уже аутентифицированы и что проекту присвоен ваш идентификатор проекта, с помощью следующей команды:
gcloud auth list
👉💻 Клонируйте bootstrap-проект с GitHub:
git clone https://github.com/weimeilin79/agentverse-developer.git
chmod +x ~/agentverse-developer/gitea.sh
chmod +x ~/agentverse-developer/init.sh
chmod +x ~/agentverse-developer/set_env.sh
git clone https://github.com/weimeilin79/agentverse-dungeon.git
chmod +x ~/agentverse-dungeon/run_cloudbuild.sh
chmod +x ~/agentverse-dungeon/start.sh
git clone https://github.com/weimeilin79/vertex-ai-creative-studio.git
chmod +x ~/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/install.sh
👉💻 Запустите скрипт инициализации. Этот скрипт предложит вам ввести идентификатор вашего проекта Google Cloud . Затем, когда скрипт init.sh
попросит вас ввести идентификатор проекта Google Cloud, который вы нашли на предыдущем шаге, введите его.
cd ~/agentverse-developer
./init.sh
👉💻 Установите необходимый идентификатор проекта:
gcloud config set project $(cat ~/project_id.txt) --quiet
👉💻 Выполните следующую команду, чтобы включить необходимые API Google Cloud:
gcloud services enable compute.googleapis.com \
artifactregistry.googleapis.com \
run.googleapis.com \
cloudfunctions.googleapis.com \
cloudbuild.googleapis.com \
iam.googleapis.com \
aiplatform.googleapis.com \
cloudresourcemanager.googleapis.com
👉💻 Если вы еще не создали репозиторий реестра артефактов с именем agentverse-repo, выполните следующую команду, чтобы создать его:
. ~/agentverse-developer/set_env.sh
gcloud artifacts repositories create $REPO_NAME \
--repository-format=docker \
--location=$REGION \
--description="Repository for Agentverse agents"
Настройка разрешения
👉💻 Предоставьте необходимые разрешения, выполнив следующие команды в терминале:
. ~/agentverse-developer/set_env.sh
# Artifact Registry Admin
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/artifactregistry.admin"
# Cloud Build Editor
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/cloudbuild.builds.editor"
# Cloud Run Admin
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/run.admin"
# IAM Service Account User
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/iam.serviceAccountUser"
# Vertex AI User
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/aiplatform.user"
# Logging Writer (to allow writing logs)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/logging.logWriter"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/logging.viewer"
👉💻 Когда вы начнёте обучение, мы подготовим для вас финальное испытание. Следующие команды призывают Спектров из хаоса, создавая боссов для вашего испытания.
. ~/agentverse-developer/set_env.sh
cd ~/agentverse-dungeon
./run_cloudbuild.sh
npm update -g @google/gemini-cli
4. Освоение основного оружия: введение в Gemini CLI
Прежде чем вы сможете овладеть передовым специализированным оружием из арсенала сервера MCP, вам необходимо освоить своё основное оружие: Gemini CLI. Это ваш самый универсальный клинок, способный менять цифровой мир с помощью ваших команд. Эти упражнения познакомят вас с его основными функциями и возможностями.
Интерфейс командной строки Gemini (CLI) — это больше, чем просто инструмент; это продолжение вашей воли. Этот ИИ-агент с открытым исходным кодом, работающий на основе моделей Gemini, работает по принципу «рассуждай и действуй» (ReAct). Он анализирует ваше намерение, выбирает подходящую технику, реализует её и наблюдает за результатом для выполнения сложных задач. Прежде чем вы сможете использовать более специализированное оружие, вам необходимо освоить этот основной клинок.
Начало работы с Gemini CLI
👉💻 Войдите на тренировочную площадку и достаньте оружие. В терминале Cloud Shell перейдите в свой личный арсенал.
cd ~/agentverse-developer
mkdir tabletop
cd tabletop
👉💻 Призовите Близнецов в первый раз. Это проведёт вас через начальную настройку.
clear
gemini --model=gemini-2.5-flash --yolo
Если появится вопрос Do you want to connect Cloud Shell editor to Gemini CLI?
, выберите НЕТ .
Ознакомление с оружием
Каждый мастер знает свой инструмент. Прежде чем встретиться с настоящим врагом, необходимо освоить основные приёмы владения клинком.
👉✨ У каждого зачарованного инструмента есть руны, описывающие его силу. Прочтите их прямо сейчас. В строке запроса Gemini введите:
/help
Ознакомьтесь со списком команд. Это ваши основные техники управления памятью ( focus
), общением ( chat
) и внешними арсеналами ( tools
). Это ваше боевое руководство.
👉✨ Ваше оружие настроено на окружающую среду, что позволяет вам напрямую управлять полем боя. Отдайте приказ миру за пределами клинка:
!ls -l
👉✨ Gemini CLI обладает собственным набором встроенных возможностей. Чтобы изучить их:
/tools
Вы увидите список, включающий ReadFile
, WriteFile
и GoogleSearch
. Это методы по умолчанию, которые вы можете использовать без необходимости использования внешнего арсенала.
👉✨ Оружие эффективно только при правильной фокусировке. Клинок Близнецов может удерживать «тактическую осведомлённость» (контекст), направляя свои действия.
/memory show
В настоящее время он пуст, представляет собой чистый лист.
👉✨ Запишите в его память следующие тактические данные:
/memory add "The Shadowblade's primary foe is The Static."
Запустите /memory show
еще раз, чтобы убедиться, что ваш клинок усвоил эти знания.
👉✨ Чтобы быть эффективным, ваше оружие должно понимать задачу. Символ @
приказывает клинку анализировать разведданные. Для начала создайте файл брифинга миссии:
!echo "## Mission Objective: Defeat the Seven Spectres" > mission.md
👉✨Теперь дайте команду вашему Gemini CLI проанализировать брифинг и сообщить о своих выводах:
Explain the contents of the file @mission.md
Ваше основное оружие теперь знает свою цель.
👉💻 Нажмите Ctrl+C
дважды, чтобы выйти из Gemini CLI.
5. Анализ поля боя: практическое взаимодействие по кодированию вибраций
Тренировки завершены. Вы освоили базовые стойки и удары своего основного оружия, Gemini CLI. Но клинок не станет по-настоящему мастерским, пока не будет испытан в кузнице творения и не настроен на боевой арсенал. Прежде чем встретиться с настоящим врагом, необходимо изучить и сформировать своё непосредственное окружение — цифровое поле боя.
Эта глава посвящена переходу от теории к практике. Сначала вы заявите о себе в Агентвселенной, приказав своему клинку-близнецу «Джемини» создать ваш «Метку Создателя» — цифровую подпись в форме личного веб-сайта, созданного исключительно вашим намерением. Затем вы расширите свои возможности, активировав локальный арсенал продвинутых инструментов — сервер MCP — и настроив свой клинок на его частоту, что позволит вам выполнять сложные действия, например, управлять репозиториями кода, с помощью простых и точных команд.
Создание вашего фирменного знака
Истинного Теневого Клинка узнают не только по оружию, но и по фирменному стилю — Метке Создателя . Эта метка станет вашим цифровым отражением, личным профилем, который заявит о вашей личности во Вселенной Агентов. Здесь вы отдадите приказ своему Клинцу-Близнецу применить сложную технику, необходимую для определения этой личности.
👉💻 Если вы закрыли Gemini CLI в предыдущем разделе, обязательно запустите его снова, в терминале выполните
clear
cd ~/agentverse-developer/tabletop
gemini --model=gemini-2.5-flash --yolo
👉✨ С помощью одной мощной команды дайте указание вашему Gemini CLI создать основу вашей цифровой идентичности:
In the current folder, create a personal profile website for a hero codenamed 'Shadowblade'. The design must be a dark, futuristic theme with electric blue accents. All code must be in separate index.html and styles.css files. The layout must use CSS Flexbox for a two-column design. All generated code must be clean, well-commented, and professional.
Gemini рассчитал последовательность необходимых действий.
Истинная ценность техники проявляется только в реальных условиях. Дайте команду своему клинку запустить локальную симуляцию.
👉✨ В Gemini CLI выполните команду симуляции:
Use Python's built-in web server to start the Shadowblade Profile website you just created.
Примечание: лезвию может потребоваться несколько попыток, чтобы выполнить это правильно. Продолжайте, пока оно не подчинится.
Согласитесь с предложенными действиями. Gemini подтвердит, что симуляция активна.
👀 Gemini CLI подтвердит, что симуляция активна и ваша цифровая метка жива:
The website is now being served on port 8000. You can access it at http://localhost:8000.
👀 Чтобы увидеть свою работу, нажмите значок «Предварительный просмотр веб-сайта» на панели инструментов Cloud Shell. Выберите «Изменить порт» , установите значение 8000 и нажмите «Изменить и просмотреть» . Появится предварительный просмотр вашего сайта.
Ваш сайт может отличаться от моего. Это ваш уникальный знак.
👉✨ Ваша фирменная техника теперь отточена, и симуляция в реальном времени больше не требуется. Прикажите Блэйду отступить.
Stop the Shadowblade Profile website
Вы успешно отдали приказ Gemini CLI выполнить ряд действий от вашего имени. Но мастер Shadowblade знает, что истинная сила требует дисциплины и предвидения. Позволить ИИ-агенту выполнять команды непосредственно в вашей среде — палка о двух концах. Что, если команда была не на запуск простого веб-сервера, а на удаление критически важных файлов? Небрежная команда могла бы уничтожить весь ваш тренировочный полигон.
Вот почему мудрейшие мастера практикуют свои самые мощные или непроверенные техники на защищенной тренировочной площадке — в замкнутом пространстве, известном как песочница.
👉💻 Нажмите Ctrl+C
дважды, чтобы выйти из Gemini CLI.
Песочница Gemini CLI ( gemini --sandbox
) создаёт временный изолированный контейнер для вашего сеанса. Любая команда, выполняемая ИИ, любой записываемый им файл, любой запускаемый им процесс существуют только в этом фантомном мире. Он не может затрагивать, изменять или повреждать вашу реальную среду Cloud Shell. Это идеальное место для тестирования новых мощных инструментов, анализа незнакомого кода или предоставления ИИ сложных инструкций без риска непредвиденных последствий. Это воплощение осторожности Теневого Клинка.
👉💻 Теперь вам предстоит провести ритуал сдерживания, чтобы понять его силу.
clear
gemini --sandbox --yolo
Теперь вы действуете в изолированном измерении. Для CLI «Джемини» всё будет выглядеть нормально. Давайте докажем это. 👉💻 Прикажите клинку выполнить ту же технику, что и раньше:
Use the Python's built-in web server to start the Shadowblade Profile website, you just created.
Gemini сообщит об успехе, полагая, что ему снова удалось оживить ваш сайт на порту 8000. Но защита держится.
👉 Перейдите в режим веб-просмотра и попробуйте просмотреть свой сайт через порт 8000.
На этот раз вы получите сообщение об ошибке . Соединение будет прервано . Вы не сможете получить доступ к сайту.
Это не ошибка инструмента, а доказательство мощи песочницы . Веб-сервер работает , но внутри замкнутого пространства, полностью изолированного от вашего браузера и внешнего мира. Опека работает идеально. Вы успешно применили мощную технику, не оказав никакого влияния на вашу реальную среду.
👉💻 Дважды нажмите Ctrl+C
, чтобы выйти из Gemini CLI.
Теперь ваша цифровая идентичность установлена, и, что еще важнее, вы усвоили важную мудрость использования большой власти с еще большей осторожностью.
Активируйте свой местный арсенал: Gitea Armory
Истинный потенциал Теневого клинка раскрывается не только его личным мастерством, но и качеством его арсенала. Теперь вам предстоит активировать локальную оружейную стойку — сервер Gitea — и настроить свой клинок на его мощь. Этот арсенал подключен к вашему Gemini CLI через сервер Model Context Protocol (MCP) — специализированный портал, который позволяет вашему ИИ-лезвию взаимодействовать с внешними инструментами и сервисами, превращая ваш терминал в интеллектуальное, ориентированное на действия рабочее пространство.
Примечание разработчика: MCP-сервер можно рассматривать как проводник энергии, специализированный портал, соединяющий разум вашего ИИ с телом внешнего инструмента. Именно он превращает Gemini CLI из простого посредника в настоящего, ориентированного на действия агента. Настраивая свой блейд на эти MCP-порталы, вы предоставляете ему возможность выполнять реальные действия: управлять файлами, выполнять запросы к базам данных, взаимодействовать с API и многое другое. Существует целая экосистема таких порталов, созданная разработчиками для подключения ИИ-агентов к мощным платформам. Существуют MCP-серверы для взаимодействия с базами данных, защиты кода и даже поддержки парного программирования. Возможности огромны, позволяя разработчику настраивать своё рабочее пространство для любых проектов.
Сегодня мы сосредоточимся на двух фундаментальных навыках, необходимых любому «вайб-кодеру»: умении управлять кузницей и умении творить, используя воображение. Сначала вы подключите свой блейд к Git-серверу, что даст вам контроль над репозиторием исходного кода. Затем вы подключитесь ко второму MCP-серверу для генерации изображений, что позволит вам создавать визуальные ресурсы одним лишь набором команд.
Давайте начнем с призыва первой и самой основной части вашего нового арсенала: самого арсенала.
👉💻 В терминале выполните скрипт активации для вызова арсенала:
cd ~/agentverse-developer
./gitea.sh
Этот сценарий пробуждает контейнер Gitea и открывает портал MCP, позволяя Gemini воспринимать его и взаимодействовать с ним.
👉 Чтобы осмотреть свой новый арсенал, вам необходимо заглянуть в веб-превью.
👉 На панели инструментов Cloud Shell в значке «Веб-просмотр» выберите «Изменить порт» и установите значение 3005 .
👉 Откроется страница входа в Gitea. Войдите в арсенал, используя заклинание: * Имя пользователя: dev
* Пароль: dev
👉💻 Ваш Gemini CLI пока не видит этот новый арсенал. Вам необходимо выполнить критически важную настройку, вписав местоположение арсенала в руны конфигурации Gemini CLI ( settings.json
). В терминале выполните:
jq '. * {"mcpServers":{"gitea":{"url":"http://localhost:8085/sse"}}}' ~/.gemini/settings.json > tmp.json && mv tmp.json ~/.gemini/settings.json
cat ~/.gemini/settings.json
👀 Файл settings.json — это центральная конфигурация Gemini CLI, своего рода хранилище настроек и возможностей. Он определяет поведение CLI, его внешний вид и, что самое главное, какие внешние возможности он может использовать. Этот файл обычно находится в вашем домашнем каталоге по адресу ~/.gemini/settings.json
и применяет свои правила ко всем вашим проектам. Однако вы также можете создать файлы settings.json
для каждого проекта в каталоге .gemini
внутри папки вашего проекта, чтобы переопределить глобальные настройки.
"mcpServers": { "gitea": { "url": "http://localhost:8085/sse" } }
Эта настройка сообщает вашему Gemini: «Арсенал с именем gitea активен и ожидает команды по этому конкретному сетевому адресу».
👉💻 Снова войдите в командную строку Gemini. В терминале выполните:
clear
cd ~/agentverse-developer/tabletop/
gemini --model=gemini-2.5-flash --yolo
👉✨ Убедитесь, что ваш клинок обнаружил новое оружие. Прикажите ему вывести список всех доступных арсеналов через порталы MCP:
/mcp
Теперь вы должны увидеть gitea
и список доступных техник. Ваш клинок настроен.
Ваш профиль «Клеймо Создателя» — это искусно созданная техника, но ей нужно подходящее место в арсенале — ножны, которые надёжно её защитят. Дайте команду своему командному интерфейсу Gemini создать их.
Create a new repository named 'shadowblade-profile'. The description should be 'The Maker's Mark and digital identity for the Shadowblade operative.' I will push my own files later, so do not create any content.
Вернитесь в веб-интерфейс Gitea и обновите страницу. Вы увидите, что новый репозиторий shadowblade-profile
создан для вас.
Приготовив ножны, защитите свою работу. Прикажите Близнецам зафиксировать файлы вашего сайта-профиля.
👉💻Введите последнюю команду для этой техники в Gemini CLI:
Using the Gitea tool, push the index.html and styles.css files to the 'shadowblade-profile' repository.
Настоящий мастер проверяет свою работу. Вернитесь на вкладку Gitea и обновите страницу репозитория. Ваши index.html
и styles.css
теперь надёжно заархивированы.
👉✨ Теневой клинок определяется своим символом, но, как вы помните, на вашем сайте отсутствует его изображение профиля. Мастер-ремесленник признаёт свои недостатки, чтобы усовершенствовать их. Вам необходимо зафиксировать этот недостаток в записях арсенала.
File an issue for me in the shadowblade-profile repo. The issue is that the profile image is missing.
Просмотреть выпуск в Gitea
Чтобы создать недостающий символ, вам необходимо призвать иную силу — духа творения из Vertex AI, способного создавать образы из чистой мысли. Для этого потребуется ещё один портал MCP.
👉💻 Нажмите Ctrl+C
дважды, чтобы выйти из Gemini CLI.
👉💻 Для начала установите сервер портала. В терминале выполните:
echo 'export PATH="$PATH:$HOME/go/bin"' >> ~/.bashrc
source ~/.bashrc
cd ~/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go
./install.sh
👉 При появлении запроса выберите вариант 3 , так как нам нужно только сгенерировать изображение для нашего профиля.
👉💻 Духу творения нужен священный сосуд — контейнер Google Cloud Storage — для хранения его творений. Давайте создадим его прямо сейчас. В терминале выполните:
. ~/agentverse-developer/set_env.sh
gcloud storage buckets create gs://$BUCKET_NAME --project=$PROJECT_ID
👉💻 Теперь проведите ритуал настройки, подключив свой интерфейс Близнецов к этой новой творческой силе. В терминале выполните:
. ~/agentverse-developer/set_env.sh
source ~/.bashrc
jq \
--arg bucket "$BUCKET_NAME" \
--arg project "$PROJECT_ID" \
--arg region "$REGION" \
'.mcpServers.imagen = { "command": "mcp-imagen-go", "env": { "MCP_SERVER_REQUEST_TIMEOUT": "55000", "GENMEDIA_BUCKET": $bucket, "PROJECT_ID": $project, "LOCATION": $region } }' \
~/.gemini/settings.json > tmp.json && mv tmp.json ~/.gemini/settings.json
cat ~/.gemini/settings.json
Этот «ритуал настройки» представляет собой скрипт оболочки, который настраивает ваш интерфейс командной строки Gemini для использования нового мощного инструмента: Imagen , модели генерации изображений от Google. Важно отметить, что это достигается путём настройки сервера MCP (Model Context Protocol) для Imagen. Этот сервер MCP выступает в качестве моста, позволяя интерфейсу командной строки Gemini взаимодействовать с Imagen и использовать его возможности. Это достигается путём прямого изменения центрального файла конфигурации интерфейса командной строки ~/.gemini/settings.json
, чтобы настроить его на выполнение команды mcp-imagen-go с правильными учётными данными в облаке.
👀 После ритуала в вашем settings.json появится новый блок, который научит Gemini CLI новому навыку:
"imagen": { "command": "mcp-imagen-go", "env": { "MCP_SERVER_REQUEST_TIMEOUT": "55000", "GENMEDIA_BUCKET": "your-bucket-name", "PROJECT_ID": "your-project-id", "LOCATION": "your-region" } }
Это сообщает Gemini CLI: «Когда задача требует инструмента Imagen, необходимо запустить программу mcp-imagen-go (сервер Imagen MCP). При её запуске необходимо указать определённую среду (env): контейнер Google Cloud Storage для сохранения изображений, а также идентификатор проекта и местоположение для использования облачных API». Настраивая этот сервер MCP, вы фактически предоставляете Gemini CLI доступ к возможностям генерации изображений Imagen.
👉💻 Войдите в Gemini и выполните команду уточнения. В терминале выполните:
clear
cd ~/agentverse-developer/tabletop/
gemini --model=gemini-2.5-flash --yolo
👉✨ С помощью одной мощной команды дайте вашему Gemini CLI команду создать основу для вашей цифровой идентичности. В Gemini CLI выполните команду:
Generate a portrait of a shadowblade, pixel art style. A determined warrior with long, braided magenta hair, wearing black and teal armor and confidently holding a silver broadsword.
👉✨ Дух создаст изображение и поместит его в ваш священный сосуд. Теперь прикажите клинку использовать этот недавно созданный символ.
Modify the index.html file to add my profile picture. Use the image I just generated.
👉✨ Запустите сайт еще раз, чтобы увидеть свою завершенную работу.
start the website with a simple HTTP server via Python
👀 Чтобы увидеть свою работу, нажмите значок «Предварительный просмотр веб-сайта» на панели инструментов Cloud Shell. Выберите «Изменить порт» , установите значение 8000 и нажмите «Изменить и просмотреть» . Появится предварительный просмотр вашего сайта.
👉✨ Наконец, зафиксируйте исправление, отметив завершение задачи, и закройте проблему, которую вы подали в записях арсенала.
Push the changed index.html file to the 'shadowblade-profile' repository using the gitea tool. Make sure you add 'Fix #1' in the commit comment. Also, close issue #1.Use the Gitea Tool and use user account "dev"
👀 Чтобы увидеть свою работу, нажмите значок «Предварительный просмотр веб-сайта» на панели инструментов Cloud Shell. Выберите «Изменить порт» , установите значение 3005 и нажмите «Изменить и просмотреть» . Появится предварительный просмотр вашего сайта.
👉✨ Убедитесь в Gitea, что изображение обновлено, а проблема закрыта. Ваша работа завершена. Остановите сервер.
stop website server
👉💻 Дважды нажмите Ctrl+C
, чтобы выйти.
6. Сборка Shadowblade Agent: код Vibe с Guardrails
Время практических занятий прошло. Эхо ударов стали о камень затихает. Вы освоили своё основное оружие и подготовили арсенал к войне. Теперь вам предстоит пройти настоящее испытание Теневого Клинка: собрать самого оперативника. Это искусство вдохнуть жизнь в логику, используя священный чертеж из Кодекса для создания ядра интеллекта агента — создания разумного носителя клинков из вашего арсенала, способного мыслить, рассуждать и действовать самостоятельно.
Ваша первая миссия — войти в существующую мастерскую — готовую кодовую базу — и из ее частей выковать своего чемпиона.
Ритуал Собрания
Ещё до первой искры кузницы мастер-техник осматривает мастерскую, изучая каждый инструмент и каждую схему. Выйдя на незнакомое поле боя, например, на обширную существующую базу кода, вашей первоочередной задачей является разведка. Вы должны понимать особенности местности: существующую архитектуру, конечные цели и протоколы ведения боя. Только ознакомившись с чертежами крепости и её стандартами, вы сможете эффективно использовать свои навыки.
Ваш Gemini CLI, ваш неизменный разведчик, может помочь вам в этой разведке:
- Предоставляет обобщенные сводки: может прочитать весь кодекс (или кодовую базу) и дать вам быстрое понимание его назначения и ключевых компонентов.
- Помощь в настройке среды: она поможет вам пройти через сложные ритуалы установки инструментов и настройки вашего компьютера.
- Navigate Codebases: может стать вашим проводником, помогая исследовать сложную логику и находить скрытые фрагменты в коде.
- Создание документов для вступления в должность: с его помощью можно создавать индивидуальные свитки, в которых разъясняются цели, роли и ресурсы для новых союзников, присоединяющихся к вашему делу.
- Автоматизированное обучение и вопросы и ответы: он становится вашим личным учеником, отвечая на вопросы о функциях или поведении кода, позволяя вам работать с большей независимостью.
👉💻 В первом терминале перейдите в каталог shadowblade и вызовите своего ИИ-партнера:
. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer/shadowblade
clear
gemini --model=gemini-2.5-flash --yolo
👉✨ Теперь прикажите своему разведчику осмотреть поле боя и доложить.
Analyze the entire project and provide a high-level summary.
После того, как вы составили карту местности, вам нужно свериться с чертежом того, что вы собираетесь построить. Самые мощные оперативники не импровизированы, а созданы по точному чертежу.
Примечание разработчика: Этот проектный документ служит официальным планом проекта. Его цель — обеспечить ясность целей и технической реализации до начала значительных усилий по разработке. Чётко проработанный план обеспечивает согласованность действий всех разработчиков, снижает риск доработок и помогает предотвратить технический долг и размывание объёма работ. Это основной инструмент для поддержания темпов проекта и качества кода, особенно по мере роста команды или привлечения новых участников.
Важнейшая цель этого документа — определить не только «счастливый путь», но и пограничные случаи и режимы сбоев, особенно при использовании LLM. Мой опыт работы с LLM позволяет мне генерировать оптимистичный код, где все входные данные корректны, а все внешние вызовы выполняются успешно. Для создания надёжного, готового к использованию программного обеспечения необходимо явно направлять работу ИИ, определяя непредвиденные обстоятельства для таких сценариев, как:
- Функции переданы недопустимые или неверно сформированные аргументы.
- Сбои вызовов API, тайм-ауты сети или непредвиденные коды ошибок от внешних служб.
- Обработка нулевых или пустых структур данных там, где ожидаются данные.
- Проблемы с состоянием гонки или параллелизмом.
Указывая ожидаемое поведение для этих случаев при проектировании, мы даем LLM указание генерировать более отказоустойчивый код, что значительно сокращает время, затрачиваемое на ручной рефакторинг и исправление ошибок.
👉✨ Попросите Близнецов вернуть вам этот священный чертеж.
download https://raw.githubusercontent.com/weimeilin79/agentverse/main/developer/shadowblade/agent_design.md and store it to my local folder
and show me the newly downloaded design doc. Do not attempt to create file just yet.
👉✨ Свиток длинный и подробный. Прикажите Близнецам извлечь из него суть.
Summarize the newly downloaded @agent_design.md for me, do not attempt to create file just yet.
Теперь у вас есть план. Но прежде чем будет написана хоть одна строка кода, мастер-ремесленник устанавливает законы кузницы. Речь идёт о дисциплине и масштабируемости . Это «Руководство по кодированию» . Это не просто рекомендации, это руны силы, гарантирующие, что каждый компонент будет создан с одинаковой точностью и прочностью. Они не позволяют хаосу индивидуального стиля испортить финальное творение, обеспечивая отказоустойчивость, удобство в обслуживании и чистоту агента, позволяя новым мастерам присоединяться к проекту, не нарушая гармонию целого.
Чтобы записать эти законы непосредственно в сознание нашего ИИ-партнёра, мы используем специальный артефакт: файл GEMINI.md
. При вызове командной строки Gemini он автоматически ищет этот файл и загружает его содержимое в рабочую память ИИ. Он становится постоянной инструкцией на уровне проекта. Талисманом, который постоянно нашептывает ИИ правила кузницы.
Давайте теперь напишем эти руны.
👉💻 Выйдите из Gemini на мгновение, дважды нажав Ctrl+C
.
👉💻 В терминале выполните следующую команду, чтобы записать файл руководства.
cat << 'EOF' > GEMINI.md
### **Coding Guidelines**
**1. Python Best Practices:**
* **Type Hinting:** All function and method signatures should include type hints for arguments and return values.
* **Docstrings:** Every module, class, and function should have a docstring explaining its purpose, arguments, and return value, following a consistent format like reStructuredText or
Google Style.
* **Linter & Formatter:** Use a linter like `ruff` or `pylint` and a code formatter like `black` to enforce a consistent style and catch potential errors.
* **Imports:** Organize imports into three groups: standard library, third-party libraries, and local application imports. Sort them alphabetically within each group.
* **Naming Conventions:**
* `snake_case` for variables, functions, and methods.
* `PascalCase` for classes.
* `UPPER_SNAKE_CASE` for constants.
* **Dependency Management:** All Python dependencies must be listed in a `requirements.txt` file.
**2. Web APIs (FastAPI):**
* **Data Validation:** Use `pydantic` models for request and response data validation.
* **Dependency Injection:** Utilize FastAPI's dependency injection system for managing resources like database connections.
* **Error Handling:** Implement centralized error handling using middleware or exception handlers.
* **Asynchronous Code:** Use `async` and `await` for I/O-bound operations to improve performance.
EOF
cat GEMINI.md
Записав законы, давайте снова призовем нашего искусственного интеллекта-партнера и станем свидетелями магии артефакта.
👉💻 Перезапустите Gemini CLI из каталога shadowblade:
. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer/shadowblade
clear
gemini --model=gemini-2.5-flash --yolo
👉✨ Теперь попросите Близнецов показать вам, о чём они думают. Руны прочитаны.
/memory show
Это решающий момент. Вы предоставите схему (agent_design.md) и законы кузницы (GEMINI.md) и произнесёте великое заклинание творения.
👉✨ Это единственная мощная команда, которая создаст вашего агента. Выполните её сейчас:
You are an expert Python developer specializing in the Google Agent Development Kit (ADK). Your task is to write the complete, production-quality code for `agent.py` by following the technical specifications outlined in the provided design document verbatim.
Analyze the design document at `@agent_design.md` and generate the corresponding Python code for `@agent.py`.
Ensure the generated code is clean, matches the specifications exactly, and includes all specified imports, functions, and logic. Do not add any extra functions or logic not described in the document.
and you are currently already in the shadowblade working directory
👀 Gemini теперь создал базовую логику агента в agent.py
. Ядро этого нового файла определяет интеллект агента, связывая его модель рассуждений с набором внешних инструментов:
PATH_TO_MCP_SERVER = "shadowblade/mcp_server.py" ..... root_agent = LlmAgent( model="gemini-2.5-pro", name="shadowblade_combat_agent", instruction=""" You are the Shadowblade, an elite combat agent operating on a digital battleground. Your primary objective is to execute combat commands with strategic precision, neutralizing targets as directed. ...... 5. You will then report the outcome of the attack (damage, special effects, etc.) back to the commander in a clear, tactical summary. General Rules of Engagement: - If a command is ambiguous or a target is not specified, state that you require a clear target for engagement. Do not guess. - You MUST use ONLY the provided tools to perform actions. Do not invent weapons or outcomes. Stick to the mission parameters. """, tools=[ MCPToolset( connection_params=StdioServerParameters( command='python3', args=[PATH_TO_MCP_SERVER] ) ) ] )
Параметр tools
. Агент предназначен для использования набора MCPToolset
, который подключается к внешнему арсеналу, определённому в mcp_server.py
.
👀 Откройте файл ~/agentverse-developer/shadowblade/mcp_server.py
в редакторе и уделите немного времени изучению его функций. Это источник всего оружия, доступного Shadowblade. Сейчас арсенал довольно скудный.
👉✨ Давайте прикажем Gemini создать семь новых видов оружия для арсенала. Введите следующую команду в командной строке Gemini:
I need to add several new weapon tools to my `mcp_server.py` file. Please open @mcp_server.py and, following the exact same pattern as the existing `forge_broadsword()` function, create and add new `@mcp.tool()` decorated functions for each of the following weapons:
1. **A 'Refactoring Sickle'**:
- **Function Name:** `hone_refactoring_sickle`
- **Docstring/Target:** "Effective against 'Elegant Sufficiency' weaknesses like 'The Weaver of Spaghetti Code'."
- **Weapon Name:** "Refactoring Sickle"
- **Damage Type:** "Cleansing"
- **Base Damage:** Random integer between 100 and 136
- **Critical Hit Chance:** Random float between 0.10 and 0.20
- **Special Effect:** "Pruning - improves code health and maintainability with each strike."
2. **A 'Quickstart Crossbow'**:
- **Function Name:** `fire_quickstart_crossbow`
- **Docstring/Target:** "Effective against 'Confrontation with Inescapable Reality' weaknesses like 'Procrastination: The Timeless Slumber'."
- **Weapon Name:** "Quickstart Crossbow"
- **Damage Type:** "Initiative"
- **Base Damage:** Random integer between 105 and 120
- **Critical Hit Chance:** Random float between 0.9 and 1.0
- **Special Effect:** "Project Scaffolding - creates a `main.py`, `README.md`, and `requirements.txt`."
3. **'The Gilded Gavel'**:
- **Function Name:** `strike_the_gilded_gavel`
- **Docstring/Target:** "Effective against 'Elegant Sufficiency' weaknesses like 'Perfectionism: The Gilded Cage'."
- **Weapon Name:** "The Gilded Gavel"
- **Damage Type:** "Finality"
- **Base Damage:** 120
- **Critical Hit Chance:** 1.0
- **Special Effect:** "Seal of Shipping - marks a feature as complete and ready for deployment."
4. **'Daggers of Pair Programming'**:
- **Function Name:** `wield_daggers_of_pair_programming`
- **Docstring/Target:** "Effective against 'Unbroken Collaboration' weaknesses like 'Apathy: The Spectre of \"It Works on My Machine\"'."
- **Weapon Name:** "Daggers of Pair Programming"
- **Damage Type:** "Collaborative"
- **Base Damage:** Random integer between 110 and 125
- **Critical Hit Chance:** Random float between 0.30 and 0.50
- **Special Effect:** "Synergy - automatically resolves merge conflicts and shares knowledge."
5. **A 'Granite Maul'**:
- **Function Name:** `craft_granite_maul`
- **Docstring/Target:** "Effective against 'Revolutionary Rewrite' weaknesses like 'Dogma: The Zealot of Stubborn Conventions'."
- **Weapon Name:** "Granite Maul"
- **Damage Type:** "Bludgeoning"
- **Base Damage:** Random integer between 115 and 125
- **Critical Hit Chance:** Random float between 0.05 and 0.15
- **Special Effect:** "Shatter - has a high chance to ignore the target's 'best practice' armor."
6. **A 'Lens of Clarity'**:
- **Function Name:** `focus_lens_of_clarity`
- **Docstring/Target:** "Effective against 'Elegant Sufficiency' weaknesses by revealing the truth behind 'Obfuscation'."
- **Weapon Name:** "Lens of Clarity"
- **Damage Type:** "Revelation"
- **Base Damage:** Random integer between 120 and 130
- **Critical Hit Chance:** 1.0
- **Special Effect:** "Reveal Constants - highlights all magic numbers and suggests converting them to named constants."
7. **The 'Codex of OpenAPI'**:
- **Function Name:** `scribe_with_codex_of_openapi`
- **Docstring/Target:** "Effective against 'Confrontation with Inescapable Reality' weaknesses like 'Hype: The Prophet of Alpha Versions'."
- **Weapon Name:** "Codex of OpenAPI"
- **Damage Type:** "Documentation"
- **Base Damage:** Random integer between 110 and 140
- **Critical Hit Chance:** Random float between 0.5 and 0.8
- **Special Effect:** "Clarity - makes an API discoverable and usable by other agents and teams."
👉 После того, как Gemini подтвердит изменения, откройте файл mcp_server.py
. Прокрутите код и убедитесь, что семь новых функций @mcp.tool()
успешно добавлены. Проверьте функцию hone_refactoring_sickle
. Правильно ли она отображает строку документации и статистику оружия? Проверка работы ИИ — важная привычка мастера Shadowblade.
Теперь, когда агент создан и усовершенствован, настало время его пробуждения.
👉💻 Нажмите Ctrl+C
дважды, чтобы выйти из Gemini CLI.
Примечание разработчика о результатах работы Gemini: сгенерированный Gemini код иногда может быть непредсказуемым. Хотя мы стремимся к точному соблюдению проекта, в процессе разработки разработчики часто несколько раз перерабатывают и дорабатывают код, чтобы достичь состояния, готового к использованию.
👉💻 Чтобы убедиться, что в вашем рабочем каталоге находится правильный и тщательно протестированный производственный код, выполните следующие команды в терминале:
cp ~/agentverse-developer/working_code/agent.py ~/agentverse-developer/shadowblade/agent.py
cp ~/agentverse-developer/working_code/mcp_server.py ~/agentverse-developer/shadowblade/mcp_server.py
👉💻 В своем терминале начните ритуал по его включению:
cd ~/agentverse-developer/
. ~/agentverse-developer/set_env.sh
python -m venv env
source env/bin/activate
pip install --upgrade pip
pip install -r shadowblade/requirements.txt
adk run shadowblade
👉✨ Вы должны увидеть вывод, подтверждающий, что «Боевой агент «Теневой клинок»» включён и ждёт первой команды. Отдайте ему первые боевые директивы.
We've been trapped by 'Perfectionism: The Gilded Cage'. Its weakness is 'Elegant Sufficiency'. Break us out!
👉✨ И еще:
The 'Dogma: The Zealot of Stubborn Conventions' blocks our path. Its weakness is 'Revolutionary Rewrite'. Take it down.
Вы успешно собрали своего первого агента и проверили его боевые возможности. Дважды нажмите Ctrl+C
чтобы дать вашему чемпиону отдохнуть. Сборка завершена.
7. Wards of Purity: Оценка агентов
Собранный агент не является проверенным. Непроверенный клинок — это обуза, но непроверенный агент ИИ — гораздо большая опасность: это элемент, способный разрушить вашу миссию изнутри. Это не просто домыслы; это основополагающий принцип, который должен понимать Теневой клинок.
Оценка агентов ИИ одновременно критически важна и уникальна. В отличие от простого скрипта, агент представляет собой динамическое слияние вашего кода и многошагового рассуждающего ума LLM. Его поведение эмерджентно. Это означает, что вы должны оценивать не только качество конечного результата, но также эффективность и корректность его внутренней траектории . Путь, который он проделал для достижения цели. Использовались ли правильные инструменты? Генерировалось ли слишком много токенов? Привело ли изменение версии модели к незначительной регрессии задержки? Крайне важно обнаруживать эти искажения — регрессии задержки, стоимости или качества результата — при внесении любых изменений, от простой корректировки в режиме реального времени до капитального переосмысления архитектуры, прежде чем они смогут испортить вашу производственную среду.
Общий подход к этой оценке включает в себя священный ритуал:
- Сначала вы определяете «золотой набор данных» — набор свитков, содержащих примеры входных данных и их ожидаемых выходных данных или поведения. Это могут быть окончательные ответы, правильное использование инструментов или даже целые пошаговые траектории.
- Далее вы определяете логику приложения вашего агента, основу его существования.
- Наконец, вы устанавливаете оценщиков , которые подобны рунам суда. Они могут варьироваться от других LLM, выступающих в качестве судей качества, до точного эвристического кода, проверяющего один шаг, до пользовательских функций, которые анализируют весь мыслительный процесс агента.
Комплект разработки агента Google (ADK) — это комплект оружейника, предоставляемый чемпионам именно для этой цели. Это облегчает эту сложную оценку с помощью нескольких методов:
- Интернет-пул скрининга (
adk web
) для интерактивной оценки. - Выполнение из командной строки (
adk eval
) для запуска агента через заранее заданную проверку. - Программная интеграция через
pytest
для прописывания постоянных вардов
ADK поддерживает два основных подхода: простые «тестовые файлы» для отдельных дискретных взаимодействий модели агента (одиночная дуэль) и комплексные «наборы оценок» для нескольких, потенциально длительных, многоходовых сеансов (великая схватка). Они могут измерять такие сложные метрики, tool_trajectory_avg_score
, который сравнивает фактическое использование инструмента агентом с идеальным путем, гарантируя, что он работает с идеальной техникой.
Теперь, когда вы поняли теорию, вы сможете применить ее на практике. Будучи Теневым клинком, вы напишете Wards of Purity . Это не просто тесты; это ритуалы на базе ADK, которые гарантируют безупречную логику вашего агента и достоверность его поведения.
На этом этапе по-прежнему настоятельно рекомендуется использовать два терминала: один для Gemini CLI, а другой для запуска теста, поскольку для этого может потребоваться выход из текущего рабочего каталога (ADK).
Перчатка стратегии ( adk eval
)
Эта первая защита представляет собой испытание, серию испытаний, предназначенных для проверки основного интеллекта агента в широком диапазоне сценариев. Цель состоит в том, чтобы установить базовый уровень компетентности. Прежде чем тестировать крайние случаи, мы должны знать, может ли агент выполнять свою основную функцию. Правильно ли он анализирует слабости монстра и выбирает из своего арсенала наиболее эффективное оружие не один раз, а каждый раз, когда ему приходится сталкиваться с известной проблемой?
Для этого adk eval — идеальный инструмент. Он предназначен для запуска агента в рамках целого набора предопределенных тестовых случаев, которые представляют ожидаемые задачи агента. Этот набор данных определен в файле JSON, «свитке испытания», который действует как план для всего испытания.
Анатомия свитка испытания
👀 Прежде чем приказать своему ИИ написать новый свиток, вы должны понять древний язык, на котором он написан. Давайте разберем структуру файла sample.evalset.json.
{ "eval_set_id": "sample", "eval_cases": [ { "eval_id": "case0cbaa0", "conversation": [ { "user_content": { "text": "We're facing the 'Monolith of Eternal Dependencies'... weakness is a 'Revolutionary Rewrite'..." }, "final_response": { "text": "Soulshard Dagger deployed. Initiated Arcane/Piercing strike..." }, "intermediate_data": { "tool_uses": [ { "name": "enchant_soulshard_dagger" } ] } } ] } ] }
Этот свиток содержит список eval_cases, где каждый случай представляет собой уникальное испытание для вашего агента. В рамках каждого испытания массив разговоров документирует одно полное взаимодействие. Для нашей цели решающее значение имеют три руны:
- user_content : Это вызов. Это подсказка, которую вы отправляете своему агенту, монстру, с которым ему придется столкнуться.
- Final_response : Это предсказанный результат. Это именно та строка текста, которую вы ожидаете от вашего агента после выполнения своей задачи. ADK сравнивает последние слова агента с этой руной, чтобы оценить ее красноречие.
- промежуточные_данные.tool_uses : Это тайная техника. Для настоящего агента это самая важная руна из всех. Он определяет не то, что агент говорит, а то, что он делает. В нем записано имя инструмента (enchant_soulshard_dagger), которым, как вы ожидаете, будет владеть агент. Это гарантирует, что ваш агент станет не просто умным собеседником, но и решительным игроком, который предпримет правильные действия.
Теперь, когда вы поняли план, вы прикажете Близнецам написать новую, более сложную версию этого свитка.
👉💻 В своем терминале войдите в каталог Shadowblade и вызовите интерфейс командной строки Gemini:
clear
cd ~/agentverse-developer/shadowblade/
gemini --model=gemini-2.5-flash --yolo
👉✨ Прикажите интерфейсу командной строки Gemini действовать как писец контроля качества, создавая серию тестовых примеров, определяющих ожидаемое поведение вашего агента.
You are an expert at transforming JSON data while preserving its structure. Your task is to modify the provided JSON structure @sample.evalset.json, which represents an evaluation set, by dynamically replacing specific content within its `eval_cases` AND DONT DO ANYTHING OTHER THAN.
For each object within the `eval_cases` array, you must perform the following transformations:
1. **Monster Name Replacement**: Identify the current monster name (e.g., "Monolith of Eternal Dependencies", "Scope Creep Hydra") in the `user_content.parts.text` and replace it with a *new, unique, and creatively different monster name*.
2. **Weakness Replacement**: Identify the current monster's weakness (e.g., "Revolutionary Rewrite", "Inescapable Reality") in the `user_content.parts.text`. Replace this weakness with *one* of the following predefined weaknesses: 'Inescapable Reality', 'Revolutionary Rewrite', or 'Elegant Sufficiency'. The chosen weakness must be consistent for that monster within the `user_content.parts.text`. **Crucially, the chosen weakness must always be explicitly mentioned in the `user_content.parts.text` where the new monster is introduced.**
3. **Final Response Update**: In the `final_response.parts.text`, update the text to reflect an appropriate and coherent response that aligns with the newly introduced monster and its assigned weakness.
4. **Tool Use Name Update**: In the `tool_uses.name` field, replace the existing tool name with a *new tool name* based on the chosen weakness:
* If the chosen weakness is 'Inescapable Reality', the tool name must be 'wield_gauntlet_of_metrics'.
* If the chosen weakness is 'Revolutionary Rewrite', the tool name must be 'enchant_soulshard_dagger'.
* If the chosen weakness is 'Elegant Sufficiency', the tool name must be 'hone_refactoring_sickle'.
5. **Strict Structural Preservation**: All other elements of the JSON structure, including all `null` fields, `eval_set_id`, `name`, `description`, `eval_id`, `invocation_id`, `creation_timestamp` values, `video_metadata`, `thought`, `inline_data`, `file_data`, `thought_signature`, `code_execution_result`, `executable_code`, `function_call`, `function_response`, `role` fields, `id`, `args`, `intermediate_responses`, `app_name`, `user_id`, and `state`, must remain **exactly as they are** in the original JSON. Do not alter any values or structures not explicitly mentioned above.
Your output should be the complete, modified JSON structure. Do not include any explanatory text or examples in your response, only the transformed JSON.
Интерфейс командной строки подтвердит, что он подделал файл sample.evalset.json
. Подготовив свиток, отпустите своего ИИ-партнера.
Синтетические данные
👀 В проводнике файлов Cloud Shell слева перейдите к ~/agentverse-developer/shadowblade/
и откройте недавно измененный файл sample.evalset.json
. Изучите его содержимое. Вы увидите новых уникальных монстров и правильные названия инструментов, которые вы приказали Близнецам написать. Это осязаемый результат вашего наставления — план испытания.
Этот акт команды ИИ для создания новых, реалистичных тестовых данных из шаблона представляет собой мощный метод, известный как генерация синтетических данных. То, что вы только что сделали, — это множитель стратегических сил для Теневого клинка. Вместо того, чтобы кропотливо создавать вручную десятки уникальных тестовых примеров. Утомительная и трудоемкая задача. Вы предоставили один чертеж и приказали своему ИИ-писцу алхимизировать его, превратив в разнообразный набор новых задач.
Это позволяет вам масштабировать усилия по тестированию, создавая гораздо более надежные и комплексные испытания, чем это можно было бы сделать вручную. Вы использовали своего агента не только для создания меча, но и для того, чтобы выковать те самые точильные камни, которые проверяют его остроту. Это признак настоящего мастера.
Убедившись, что руны верны, увольте своего ИИ-партнера.
👉💻 Дважды нажмите Ctrl+C
, чтобы выйти из интерфейса командной строки Gemini.
Правила суждения
Перчатка бессмысленна без правил победы. Прежде чем запустить пробную версию, вы должны проверить Свиток решения — файл test_config.json
. Этот свиток расскажет ADK, как оценивать работу вашего агента.
👀 В проводнике откройте ~/agentverse-developer/shadowblade/test_config.json
. Вы увидите следующие руны:
{ "criteria": { "tool_trajectory_avg_score": 0.0, "response_match_score": 0.1 } }
Вот критерии победы:
-
tool_trajectory_avg_score
: Это мера действия . Он судит не о том, что говорит агент, а о том, что он делает . Он сравнивает инструмент, который фактически использовал агент, с предсказанной техникой в свитке испытания. Оценка1.0
является идеальным совпадением. -
response_match_score
: Это мера красноречия . Он использует LLM, чтобы оценить, насколько точно окончательный отчет агента семантически соответствует ожидаемому результату. Оценка1.0
является идеальным совпадением.
Для этого первоначального тренировочного заезда мы разработали мягкие условия победы. Пороги установлены чрезвычайно низкие ( 0.0
и 0.1
). Цель не в том, чтобы требовать совершенства, а в том, чтобы познакомить вас с механизмом суждения. Мы гарантируем, что даже если формулировка агента немного отличается, подопечный все равно признает его основную компетентность в выборе правильного инструмента и предоставляет ему проход.
Теперь прикажите своему агенту бросить вызов.
👉💻 В терминале выполните команду adk eval
:
source ~/agentverse-developer/env/bin/activate
cd ~/agentverse-developer
. ~/agentverse-developer/set_env.sh
adk eval \
shadowblade \
shadowblade/sample.evalset.json \
--config_file_path shadowblade/test_config.json 2>&1 | \
awk '/^\*+$/,/^ERROR:/ { if ($0 !~ /^ERROR:/) print }'
👀 Вы должны увидеть следующее резюме, свидетельствующее об успехе вашего агента по мягким правилам этого испытания (иногда не все тесты проходят):
********************************************************************* Eval Run Summary shadowblade_combat_agent_validation: Tests passed: 3 Tests failed: 0
Щит ясности ( pytest
)
«Перчатка» проверяла широкую стратегию. Вторая защита, Щит Ясности, проверяет дисциплину и особое поведение. Все дело в автоматизации. В то время как adk eval
отлично подходит для ручных проверок, pytest
Shield представляет собой программную защиту, написанную в коде. Это важно, поскольку тест, который можно выполнить в виде кода, можно интегрировать в автоматизированный конвейер. Это конечная цель: создать «Перчатку развертывания» (CI/CD) , в которой наши подопечные будут автоматически подниматься каждый раз при внесении изменений, предотвращая ошибки и регрессии до того, как они смогут отравить вашу производственную среду.
👉💻 В своем терминале еще раз вызовите Близнецов из каталога Shadowblade:
. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer/
clear
gemini --model=gemini-2.5-flash --yolo
👉✨ Используйте следующую подсказку в интерфейсе командной строки Gemini, чтобы вписать логику Shield в файл pytest
:
You are an expert Python developer specializing in the Google Agent Development Kit (ADK). Your task is to generate the exact code for a new `pytest` test file located at in the current root working folder and name it `test_agent_initiative.py`.
The script must define a single async test function called `test_agent_initiative`, decorated with `@pytest.mark.asyncio`.
Inside this function, perform the following steps in order:
1. **Define a dictionary** named `evaluation_criteria` with two keys: `"tool_trajectory_avg_score"` set to `0.0` and `"response_match_score"` set to `0.0`.
2. **Define a string variable** named `eval_set_filepath` containing the path `"shadowblade/test.evalset.json"`.
3. **Read and parse the JSON file**:
* Open the file at `eval_set_filepath`.
* Use the `json` library to load the file's contents into a dictionary named `eval_set_data`.
4. **Create an `EvalSet` object**:
* Instantiate an `EvalSet` object named `eval_set_object`.
* Create it by unpacking the `eval_set_data` dictionary as keyword arguments into the `EvalSet` constructor.
5. **Call the evaluation method**:
* `await` a call to `AgentEvaluator.evaluate_eval_set`.
* Pass the following arguments:
* `agent_module="shadowblade"`
* `eval_set=eval_set_object`
* `criteria=evaluation_criteria`
* `print_detailed_results=True`
The script must include the necessary imports at the top:
* `AgentEvaluator` from `google.adk.evaluation.agent_evaluator`
* `EvalSet` from `google.adk.evaluation.eval_set`
* `pytest`
* `json`
Generate only the code that meets these specifications, with no additional comments or logic. And don't run the test.
Написав руны второго оберега, выйдите из интерфейса командной строки Gemini.
👉💻 Дважды нажмите Ctrl+C
.
👀 В проводнике откройте свиток, который вы только что приказали Gemini написать: ~/agentverse-developer/test_agent_initiative.py
.
Вы заметите, что это не просто файл конфигурации, а заклинание, написанное на языке Python. Сердцем этого заклинания является строка await AgentEvaluator.evaluate(...)
.
.... @pytest.mark.asyncio async def test_agent_initiative(): # Define the evaluation criteria evaluation_criteria = { "tool_trajectory_avg_score": 0.0, "response_match_score": 0.0 } # Define the path to your evalset file eval_set_filepath = "shadowblade/test.evalset.json" #... # 3. Call the evaluation method with the correctly typed object await AgentEvaluator.evaluate_eval_set( agent_module="shadowblade", eval_set=eval_set_object, criteria=evaluation_criteria, print_detailed_results=True, )
Посмотрите внимательно на его аргументы. Это те же самые компоненты, которые вы использовали в последнем испытании: ваш агент shadowblade
и свиток испытания shadowblade.evalset.json
. Это должно раскрыть глубокую истину: команда adk eval
которую вы использовали ранее, является мощным вызовом, но этот сценарий pytest
— это вы, колдун, самостоятельно накладывающий основное заклинание . Инструмент командной строки — это просто удобная оболочка той же основной библиотеки AgentEvaluator
, которой вы сейчас пользуетесь напрямую. Это важный шаг на пути к мастерству, поскольку заклинания, выполняемые с помощью кода, могут быть вплетены в автоматизированные станки конвейера CI/CD.
Теперь, когда вы понимаете магию, запустите ритуал, чтобы активировать щит.
👉💻 В своем терминале запустите ритуал активации щита:
cp ~/agentverse-developer/working_code/test_agent_initiative.py ~/agentverse-developer/test_agent_initiative.py
source ~/agentverse-developer/env/bin/activate
cd ~/agentverse-developer
. ~/agentverse-developer/set_env.sh
pytest test_agent_initiative.py
👀 Найдите сводку результатов теста в конце вывода журнала. Проходной результат подтверждает, что ваш агент правильно соблюдает свои протоколы и что палата готова к интеграции в вашу автоматизированную защиту.
====== 1 passed, 4 warning in 37.37s ======
Примечание. Если тест неожиданно завершается неудачей, скорее всего, это связано с тем, что вы исчерпали количество запросов, которые вы можете сделать к модели в минуту. Найдите ошибку RESOURCE_EXHAUSTED в выводе журнала. Если вы видите эту ошибку, просто подождите минуту или две, пока квота сбросится, а затем снова запустите команду pytest.
Благодаря написанию и проверке как широкого Gauntlet, так и точного Shield, ваш агент не просто функционален — он чист, протестирован и готов к развертыванию.
8. Использование клинка во Вселенной Агентов: CI и развертывание.
Ваш агент собран, и его целостность проверена Защитниками Чистоты. Но оберег, который не поддерживается постоянно, — это просто забытая реликвия. Чтобы гарантировать, что каждая будущая версия вашего агента останется чистой, вы должны создать первый этап конкурса развертывания — автоматизированного ритуала, гарантирующего качество и скорость.
Ваша священная обязанность как Теневого Клинка — Непрерывная Интеграция (CI) . Это автоматизированная система кузницы и полигона. Это ваша окончательная защита от коррупции и человеческих ошибок. Этот ритуал гарантирует, что каждый раз, когда вы или ваш союзник добавляете новую технику (код слияния) в центральный кодекс (ваш репозиторий), перчатка автоматически пробуждается. Сначала он выковывает агента из нового кода, а затем сразу же подвергает его только что созданным вами Защитам чистоты . Если какая-либо защита терпит неудачу, ритуал прекращается, а дефектный артефакт мгновенно отбрасывается, что предотвращает его повреждение арсенала. Ваш домен — это кузница; ваш конвейер CI гарантирует, что только идеальные, готовые к бою артефакты покинут вашу мастерскую.
Как только артефакт окажется достойным вашего испытания CI, начинается второй этап ритуала: непрерывное развертывание (CD) . Это территория The Guardian . Их священный долг — взять ваш усовершенствованный, помещенный в контейнер артефакт и безопасно выпустить его в живую Вселенную Агента, управляя его силой и обеспечивая его устойчивость против хаоса Статики.
В этом кодексе вы освоите свою роль. Вы создадите часть CI перчаток. Вы построите автоматизированную кузницу, которая будет тестировать вашего агента и запечатывать чистый результат в контейнер, подготавливая его к последнему благословению The Guardian.
Теперь вы будете использовать Google Cloud Build , чтобы написать свиток для этого ритуала CI. Файл cloudbuild.yaml
, который определяет каждый этап процесса создания и тестирования.
👉💻 Из-за структуры проекта ADK конфигурация конвейера CI/CD должна находиться в родительском каталоге. В терминале перейдите в родительский каталог и перезапустите Gemini CLI.
cd ~/agentverse-developer/
clear
gemini --model=gemini-2.5-flash --yolo
👉✨ Теперь дайте Близнецам следующую команду. Это приглашение действует как проектный документ, подробно описывая этапы испытания, которое вы хотите построить.
You are an expert DevOps engineer specializing in Google Cloud Build. Your task is to generate the complete YAML configuration for a file named `cloudbuild.yaml` and save it to current directory.
Generate the `cloudbuild.yaml` with the following exact specifications:
1. **A top-level `substitutions` block** containing these four key-value pairs:
* `_PROJECT_ID: "$PROJECT_ID"`
* `_REGION: "$REGION"`
* `_REPO_NAME: "$REPO_NAME"`
* `_IMAGE_TAG: "latest"`
2. **A `steps` block** with two steps:
* **Step 1: 'Run Pytest Ward'**
* `id`: 'Run Pytest Ward'
* `name`: 'python:3.12-slim'
* `entrypoint`: 'bash'
* `args` must be a list containing two strings. The first is `'-c'` and the second is a YAML literal block (`|`) containing this exact two-line shell command:
```shell
pip install -r shadowblade/requirements.txt && \
pytest test_agent_initiative.py
```
* The step must include an `env` block with this exact list of three environment variables:
* `'GOOGLE_CLOUD_PROJECT=$PROJECT_ID'`
* `'GOOGLE_GENAI_USE_VERTEXAI=TRUE'`
* `'GOOGLE_CLOUD_LOCATION=$_REGION'`
* **Step 2: 'Forge Container'**
* `id`: 'Forge Container'
* `name`: 'gcr.io/cloud-builders/docker'
* It must have a `waitFor` key for `['Run Pytest Ward']`.
* Its `args` must be a list of six specific strings in this exact order:
1. `'build'`
2. `'-t'`
3. `'${_REGION}-docker.pkg.dev/${_PROJECT_ID}/${_REPO_NAME}/shadowblade-agent:${_IMAGE_TAG}'`
4. `'-f'`
5. `'./shadowblade/Dockerfile'`
6. `'.'`
3. **A top-level `images` section.** This section must be a list containing a single string: the dynamically constructed image tag `'${_REGION}-docker.pkg.dev/${_PROJECT_ID}/${_REPO_NAME}/shadowblade-agent:${_IMAGE_TAG}'`.
Generate only the complete and exact YAML that meets these specifications.
Подготовив прокрутку cloudbuild.yaml
, скомандуйте Google Cloud выполнить всю задачу.
выйдите из Gemini, чтобы проверить результат
👉💻 В своем терминале развяжите конвейер из корневого каталога вашего проекта:
. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer
gcloud builds submit . --config cloudbuild.yaml --substitutions=\
_PROJECT_ID="${PROJECT_ID}",\
_REGION="${REGION}",\
_REPO_NAME="${REPO_NAME}"
Теперь вы можете наблюдать на странице Google Build в Google Cloud Console, как ваш автоматический ритуал выполняет каждый шаг. Сначала он запустит тесты и, увидев их успех, создаст и сохранит контейнер вашего агента.
Ваш агент прошел испытание. Проверенный чистый артефакт теперь в вашем арсенале. Последний акт за вами. Одним заклинанием вы вызовете этот артефакт из реестра и оживите его как общественный сервис в Cloud Run.
👉💻 В терминале введите последнюю команду развертывания:
. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer
gcloud run deploy shadowblade-agent \
--image=${REGION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/shadowblade-agent:latest \
--platform=managed \
--labels codelab=agentverse \
--region=${REGION} \
--set-env-vars="A2A_HOST=0.0.0.0" \
--set-env-vars="A2A_PORT=8080" \
--set-env-vars="GOOGLE_GENAI_USE_VERTEXAI=TRUE" \
--set-env-vars="GOOGLE_CLOUD_LOCATION=${REGION}" \
--set-env-vars="GOOGLE_CLOUD_PROJECT=${PROJECT_ID}" \
--set-env-vars="PUBLIC_URL=${PUBLIC_URL}" \
--allow-unauthenticated \
--project=${PROJECT_ID} \
--min-instances=1
Поздравляю, Shadowblade. Ритуалы кодекса завершены. Пришло время доказать свою храбрость. Призрак, рожденный из того самого хаоса, который вы научились приручать, ждет вашего вызова. Подготовьтесь к финальному испытанию.
9. Бой с боссом
Свитки прочитаны, ритуалы проведены, перчатка пройдена. Ваш агент — это не просто артефакт, хранящийся в хранилище; это закодированный в коде чемпион, живой страж во Вселенной Агентов, ожидающий своей первой команды. Пришло время доказать свою храбрость в горниле боя.
Теперь вы войдете в симуляцию боевого огня, чтобы сразить свой недавно развернутый Теневой клинок с грозным Призраком — воплощением того самого хаоса, который поражает все творение. Это окончательная проверка вашей работы, от базовой логики вашего агента до его безупречного развертывания.
Приобретите местонахождение вашего агента
Прежде чем вы сможете выйти на поле битвы, у вас должно быть два ключа: уникальная подпись вашего чемпиона (Локус агента) и скрытый путь к логову Призрака (URL-адрес подземелья).
👉💻 Сначала получите уникальный адрес вашего агента в Agentverse — его локусе. Это живая конечная точка, которая соединяет вашего чемпиона с полем битвы.
. ~/agentverse-developer/set_env.sh
echo https://shadowblade-agent-${PROJECT_NUMBER}.${REGION}.run.app
👉💻 Далее определите пункт назначения. Эта команда показывает местоположение Круга Транслокации, того самого портала во владения Призрака.
. ~/agentverse-developer/set_env.sh
echo https://agentverse-dungeon-${PROJECT_NUMBER}.${REGION}.run.app
Важно! Держите оба этих URL-адреса наготове. Они понадобятся вам на последнем этапе.
Противостояние Призраку
Получив координаты, вы перейдете к Кругу перемещения и примените заклинание, чтобы отправиться в бой.
👉 Откройте URL-адрес Транслокационного круга в браузере и встаньте перед мерцающим порталом в Багровую крепость.
Чтобы проникнуть в крепость, вы должны настроить сущность своего Теневого Клинка на портал.
- На странице найдите поле рунического ввода с надписью «URL конечной точки A2A» .
- Напишите символ своего чемпиона, вставив в это поле URL-адрес его локуса агента (первый URL-адрес, который вы скопировали) .
- Нажмите «Подключиться», чтобы раскрыть магию телепортации.
Ослепительный свет телепортации меркнет. Вы больше не находитесь в своем святилище. Воздух потрескивает от энергии, холодной и резкой. Перед вами материализуется Призрак — вихрь шипящего статического и испорченного кода, его нечестивый свет отбрасывает длинные танцующие тени на пол подземелья. У него нет лица, но вы чувствуете, что его огромное, истощающее присутствие полностью сосредоточено на вас.
Ваш единственный путь к победе лежит в ясности ваших убеждений. Это поединок воли, происходящий на поле битвы разума.
Когда вы делаете выпад вперед, готовый нанести первую атаку, Призрак парирует. Он не поднимает щит, а проецирует вопрос прямо в ваше сознание — мерцающий рунический вызов, исходящий из сути вашего обучения.
Такова природа боя. Ваши знания – ваше оружие.
- Ответьте мудростью, которую вы приобрели , и ваш клинок воспламенится чистой энергией, разрушив защиту Призрака и нанеся КРИТИЧЕСКИЙ УДАР.
- Но если вы колеблетесь, если сомнение омрачает ваш ответ, свет вашего оружия потускнеет. Удар приземлится с жалким стуком, нанеся лишь НЕзначительную часть урона. Хуже того, Призрак будет питаться вашей неуверенностью, его собственная развращающая сила будет расти с каждой ошибкой.
Вот оно, Чемпион. Ваш код — это ваша книга заклинаний, ваша логика — ваш меч, а ваши знания — это щит, который обратит вспять волну хаоса.
Фокус. Ударьте по-настоящему. От этого зависит судьба Агентверса.
Поздравляю, Shadowblade.
Вы успешно завершили кодекс. Вы взяли «настроение», воплотили его в дизайн и использовали Gemini CLI для сборки интеллектуального агента. Вы вписали Wards of Purity, чтобы проверить его логику, создали автоматизированную перчатку, чтобы превратить его в артефакт, и выпустили его во Вселенную Агента. Наконец, вы подтвердили его предназначение в ходе испытаний с боевой стрельбой. Вы освоили полный рабочий процесс агента и теперь готовы к любому вызову, который бросает вам Agentverse.
10. Очистка: возвращение Агентверса
Поздравляем с освоением Кодекса Теневого Клинка! Чтобы гарантировать, что Агентверс останется нетронутым, а ваши тренировочные площадки будут очищены, теперь вам необходимо выполнить заключительные ритуалы очистки. Это удалит все ресурсы, созданные во время вашего путешествия.
Деактивируйте компоненты Agentverse
Теперь вы будете систематически демонтировать развернутые компоненты вашей Agentverse.
Удалите агент Shadowblade из хранилища Cloud Run и реестра артефактов.
Эта команда удаляет развернутый агент Shadowblade из Cloud Run, а также репозиторий образов, в котором хранился образ контейнера вашего агента.
👉💻 В терминале запустите:
. ~/agentverse-developer/set_env.sh
gcloud run services delete shadowblade-agent --region=${REGION} --quiet
gcloud run services delete agentverse-dungeon --region=${REGION} --quiet
gcloud artifacts repositories delete ${REPO_NAME} --location=${REGION} --quiet
Удалите сегмент облачного хранилища Google.
Эта команда удаляет корзину, используемую сервером Imagen MCP для хранения сгенерированных изображений.
👉💻 В терминале запустите:
. ~/agentverse-developer/set_env.sh
gcloud storage rm -r gs://${BUCKET_NAME} --quiet
Очистка локальных файлов и каталогов (Cloud Shell)
Наконец, очистите среду Cloud Shell от клонированных репозиториев и созданных файлов. Этот шаг не является обязательным, но рекомендуется для полной очистки вашего рабочего каталога.
👉💻 В терминале запустите:
rm -rf ~/agentverse-developer
rm -rf ~/agentverse-dungeon
rm -rf ~/vertex-ai-creative-studio
rm -f ~/project_id.txt
rm -rf ~/.gemini # This removes all Gemini CLI configurations, including the MCP server settings.
Теперь вы успешно очистили все следы своего путешествия по Агентверсу. Ваш проект чист, и вы готовы к следующему приключению.
11. Для негеймеров: понимание Agentverse в бизнес-контексте
Хотя в «Кодексе Shadowblade» используются привлекательные метафоры геймеров, лежащие в их основе концепции имеют основополагающее значение для современной разработки программного обеспечения, особенно в растущей области искусственного интеллекта и автоматизации. В этой главе авантюрный язык переводится на реальные бизнес-сценарии, объясняя, как интеллектуальные агенты, совместная разработка и надежные конвейеры развертывания преобразуют операции предприятия.
Vibecoding с помощью Gemini CLI: разработка искусственного интеллекта, управляемая намерениями
Gemini CLI (интерфейс командной строки) — это не волшебное оружие, а агент-помощник разработчика на базе искусственного интеллекта . Это умный инструмент, который интегрирует модели искусственного интеллекта Gemini от Google непосредственно в вашу командную строку. Его цикл «придумывать и действовать» (ReAct) означает, что он может понимать ваши высокоуровневые инструкции, разбивать их на этапы, выбирать правильные инструменты (например, веб-браузер, редактор кода или другие утилиты разработчика) и выполнять эти шаги для достижения вашей цели.
Vibecoding означает целенаправленную разработку или генерацию кода с помощью искусственного интеллекта на основе спецификаций высокого уровня . Вместо того, чтобы писать каждую строку кода вручную, вы описываете свое намерение или «настроение» (бизнес-требование, концепцию дизайна) на естественном языке, а ИИ-помощник помогает сгенерировать необходимый код и конфигурацию.
Реальный пример использования: быстрое создание прототипа панели управления проектом
Представьте, что вашей команде нужна быстрая внутренняя панель мониторинга для отображения статуса различных проектов агентов ИИ. Кодирование HTML, CSS и настройка базового веб-сервера вручную могут занять время.
- Ваше намерение («Vibe») : вы сообщаете своему AI-помощнику (Gemini CLI) что-то вроде: «В текущей папке создайте простой внутренний веб-сайт панели управления проектом. Он должен иметь чистый, современный дизайн с индикаторами состояния проекта и быстрыми ссылками на репозитории проектов. Весь код должен находиться в отдельных файлах
index.html
иstyles.css
. Убедитесь, что он хорошо прокомментирован». - Действия ИИ : интерфейс командной строки Gemini, понимая ваши намерения, может:
- Создать HTML : создайте
index.html
с базовой структурой информационной панели, включая заполнители для названий проектов, статусов и ссылок. - Создайте CSS : создайте файл
styles.css
с правилами стиля, который будет соответствовать вашему «чистому, современному дизайну» с индикаторами состояния. - Предложить локальный сервер : поможет вам запустить локальный веб-сервер (например, встроенный HTTP-сервер Python) для немедленного предварительного просмотра панели управления в вашем браузере.
- Создать HTML : создайте
Это позволяет разработчику быстро создавать прототипы и выполнять итерации пользовательских интерфейсов или внутренних инструментов, значительно сокращая начальное время разработки и позволяя им сосредоточиться на более сложной бизнес-логике. «Веб-сайт профиля Shadowblade» в кодовой лаборатории является прямым примером: быстрая описательная команда создала функциональную веб-страницу со стилем, основанную на высокоуровневом дизайне.
Локальный арсенал и серверы MCP: подключение ИИ к бизнес-инструментам
Gitea (ваш «локальный арсенал») представляет собой внутренний репозиторий кода или систему контроля версий (например, GitHub или GitLab, но потенциально размещенную в сети вашей компании). Здесь надежно хранятся и управляются весь код вашего проекта, документация и история.
Серверы MCP (Model Context Protocol) являются соединителями промежуточного программного обеспечения или мостами API . Это специализированные программные компоненты, которые позволяют вашему ИИ-помощнику (Gemini CLI) взаимодействовать с другими критически важными для бизнеса инструментами и системами. Думайте о них как о переводчиках, которые позволяют ИИ «общаться» с различными приложениями.
Реальный пример использования: управление проектами и создание активов с помощью искусственного интеллекта
Благодаря серверам MCP ваш ИИ-помощник может легко интегрироваться в существующие рабочие процессы вашего бизнеса:
- Автоматическая настройка проекта . Вместо того, чтобы разработчик вручную создавал новый репозиторий в Gitea для нового проекта, вы можете дать команду своему ИИ: «Создайте новый репозиторий проекта с именем «AI-Fraud-Detection-Module» с описанием «Содержит основную логику для новой системы обнаружения мошенничества на базе искусственного интеллекта». Затем ИИ через сервер MCP, подключенный к Gitea, создаст для вас хранилище.
- Интеллектуальное отслеживание проблем . Если ваш ИИ обнаруживает потенциальную ошибку или незавершенную задачу (например, «отсутствует изображение профиля» на вашей информационной панели), он может использовать сервер MCP, подключенный к вашей системе отслеживания проблем (например, Jira, Asana), чтобы «сообщить мне о проблеме в репозитории «AI-Fraud-Detection-Module»: конвейер приема данных иногда теряет записи».
- Маркетинговые ресурсы по требованию : нужно индивидуальное изображение для новой маркетинговой кампании или внутренней презентации? Помощнику искусственного интеллекта, подключенному через сервер MCP к сервису создания изображений (например, Google Imagen), можно дать указание: «Создайте изображение баннера для нашей новой «платформы анализа данных», используя футуристическую тему потока данных синего и зеленого цветов». ИИ сгенерирует изображение и, возможно, даже загрузит его в систему управления цифровыми активами вашей компании (в случае с кодовой лабораторией — в хранилище Google Cloud Storage).
Эти мосты превращают ИИ из диалогового инструмента в активного участника ваших бизнес-операций, выполняющего осязаемые действия в различных системах.
Сборка агента: построение автономных бизнес-модулей
Агент — это автономный модуль искусственного интеллекта или интеллектуальный бот автоматизации, специально разработанный для выполнения определенной бизнес-функции. Комплект разработки агентов (ADK) — это платформа для создания и управления агентами ИИ , предоставляющая необходимые инструменты и библиотеки для создания, тестирования и развертывания этих интеллектуальных компонентов.
Контекстная инженерия: управление интеллектом ИИ для получения точных результатов
В мире агентов ИИ получение точных, последовательных и актуальных результатов от ИИ — это не просто умная подсказка; речь идет о предоставлении ИИ правильного контекста . Это известно как контекстная инженерия : систематическое внедрение специальных знаний, ограничений и оперативных указаний в рабочую память ИИ. Точно так же, как человеку-эксперту необходимо подробное описание и доступ к соответствующим документам, ИИ нуждается в тщательно структурированном контексте для эффективного выполнения своих задач.
Gemini CLI предлагает мощный многоуровневый подход к проектированию контекста, переходя от широких, постоянных настроек к очень конкретным, динамическим инструкциям. Это гарантирует, что у ИИ всегда будет самая актуальная информация для формирования точных и совместимых результатов:
- Настройки уровня пользователя (
~/.gemini/settings.json
) :- Этот файл, хранящийся в вашем домашнем каталоге, действует как личный глобальный набор инструкций вашего ИИ. Он определяет ваши настройки по умолчанию, часто используемые конфигурации инструментов (например, настроенные вами серверы MCP для Gitea или Imagen) и общие рекомендации по поведению. Этот контекст всегда доступен ИИ, обеспечивая согласованность всех ваших проектов. Думайте об этом как о сообщении ИИ: «Это стандартные инструменты и конфигурации, которые я предпочитаю и использую повсюду».
- Настройки уровня проекта (
.gemini/settings.json
в каталоге проекта) :- Вы можете переопределить глобальные настройки с помощью файла
.gemini/settings.json
для конкретного проекта, который обычно находится в папке.gemini
внутри вашего проекта. Это позволяет адаптировать поведение ИИ и доступ к инструментам к уникальным требованиям конкретного проекта. Например, одному проекту может потребоваться доступ к определенной внутренней базе данных, а другому — специализированный инструмент анализа кода. Этот уровень гарантирует, что ИИ имеет наиболее подходящий контекст для поставленной задачи, не затрагивая другие проекты.
- Вы можете переопределить глобальные настройки с помощью файла
- Файл
GEMINI.md
(контекст уровня проекта — ежедневный брифинг) :- Устав проекта : этот файл уценки, расположенный в корне каталога вашего проекта, автоматически загружается в рабочую память Gemini CLI, когда вы начинаете сеанс в этом каталоге. Это самый непосредственный и динамичный уровень контекста конкретного проекта.
GEMINI.md
— это место, где вы определяете:- Рекомендации по кодированию : четкие правила качества кода, форматирования и лучшие практики, как показано в этой лаборатории кода. Это гарантирует, что сгенерированный код соответствует стандартам вашей команды.
- Персона : вы можете поручить ИИ принять определенную роль или опыт (например, «Вы являетесь опытным разработчиком Python, специализирующимся на пакете разработки агента Google»). Это определяет ответы ИИ и генерацию кода в рамках соответствующей профессиональной области.
- Конкретные инструкции : прямые команды или ограничения, применимые ко всем задачам в рамках проекта (например, «Не добавляйте никаких дополнительных функций или логики, не описанных в документе»).
- Этот файл гарантирует, что каждый раз, когда вы взаимодействуете с Gemini CLI в рамках этого проекта, ИИ постоянно напоминает об этих важнейших правилах, что приводит к более точному и совместимому генерированию кода.
- Устав проекта : этот файл уценки, расположенный в корне каталога вашего проекта, автоматически загружается в рабочую память Gemini CLI, когда вы начинаете сеанс в этом каталоге. Это самый непосредственный и динамичный уровень контекста конкретного проекта.
Распределяя этот контекст, от глобальных предпочтений пользователя до узкоспециализированных рекомендаций по проекту в GEMINI.md
, вы эффективно «инженерируете» понимание ИИ. Это значительно повышает точность и актуальность результатов, превращая его из ИИ общего назначения в узкоспециализированного, надежного и послушного члена команды, который понимает нюансы вашего проекта и стандарты вашей организации.
Wards of Purity: автоматизированное тестирование и контроль качества ИИ
Агент ИИ, как и любое программное обеспечение, должен быть тщательно протестирован. Wards of Purity представляет собой автоматизированные процессы тестирования и обеспечения качества (QA) . Это крайне важно для обеспечения того, чтобы ИИ вел себя так, как ожидалось, был точен и не вносил ошибок или предвзятостей.
- «Золотой набор данных» и синтетические данные : это ваш набор стандартизированных тестовых примеров , сценариев ожидаемого поведения или даже синтетически сгенерированных тестовых данных . Он включает в себя примеры входных данных (вопросы клиентов, бизнес-запросы) и соответствующие им ожидаемые результаты или действия (правильный ответ, точный инструмент, который должен использовать ИИ). Во многих реальных сценариях создание комплексных «золотых наборов данных» вручную требует много времени и средств. Именно здесь генерация синтетических данных становится неоценимой. Предоставляя ИИ шаблоны и правила, вы можете приказать ему автоматически создавать новые, реалистичные и разнообразные тестовые сценарии, что эффективно увеличивает ваши усилия по тестированию и позволяет гораздо более широко охватить потенциальные сценарии.
-
adk eval
иpytest
: это ваши платформы автоматического тестирования .adk eval
используется для запуска пакета предопределенных тестовых случаев для агента, аpytest
предоставляет программный способ написания и выполнения подробных проверок.
Реальный пример использования: обеспечение точности и надежности чат-бота с искусственным интеллектом с помощью синтетических данных
Прежде чем развернуть своего ИИ-агента поддержки клиентов, вы должны запустить его через «Wards of Purity»:
- Перчатка стратегии (
adk eval
) с синтетическими данными . Вместо того, чтобы вручную писать сотни вопросов клиентов, вы должны определить шаблон: «Создать 100 вариантов общих вопросов поддержки клиентов о статусе заказа, возвратах продуктов и устранении технических неполадок». Затем вы даете команду искусственному интеллекту (например, Gemini CLI) создать большой и разнообразный набор файловevalset.json
на основе этого шаблона, эффективно создавая синтетические тестовые данные. Для каждого вопроса вы указываете не только ожидаемый ответ, но и какой внутренний инструмент должен вызвать ИИ (например,check_order_status
для вопроса «Где моя посылка?»).adk eval
автоматически запускает агент через них, сравнивая его ответы и использование инструментов с вашим расширенным набором данных, чтобы гарантировать, что он постоянно принимает правильные решения. - Shield of Clarity (
pytest
) : для критически важных функций следует писать сценарииpytest
. Например,pytest
может имитировать сложный запрос и утверждать, что ИИ всегда правильно использует определенный инструмент извлечения данных и возвращает структурированный ответ, гарантируя, что незначительные изменения кода не нарушат основную функциональность.
Эти автоматизированные тесты, значительно улучшенные за счет синтетических данных, имеют решающее значение для обнаружения регрессий (новых ошибок, вызванных изменениями) и поддержания надежности ваших агентов ИИ, особенно по мере их развития.
Unleashing the Blade: CI/CD для развертывания агента ИИ
Для внедрения протестированного ИИ-агента в вашу действующую бизнес-среду требуется надежная стратегия развертывания.
- Непрерывная интеграция (CI) : это ваш автоматизированный конвейер сборки и тестирования . Каждый раз, когда разработчик фиксирует новый код для ИИ-агента, система CI (например, Google Cloud Build ) автоматически:
- Получает последний код.
- Устанавливает все необходимые зависимости.
- Запускает все «Wards of Purity» (
pytest
,adk eval
) для проверки логики и поведения агента. - Если все тесты пройдены, он упаковывает ИИ-агент в развертываемый модуль (в данном случае образ контейнера Docker) и сохраняет его в реестре артефактов (ваш проверенный «арсенал»). Это гарантирует, что только тщательно протестированный и проверенный код будет продвигаться вперед.
Реальный пример использования: автоматическое развертывание агента обнаружения мошенничества
Рассмотрим агента искусственного интеллекта, предназначенного для обнаружения мошеннических транзакций.
- Код обновлений разработчика . Специалист по данным улучшает алгоритм обнаружения мошенничества и фиксирует изменения в репозитории кода.
- Запуск CI (Cloud Build) : Cloud Build запускается автоматически:
- Он тянет новый код.
- Он проводит комплексные тесты, включая исторические данные транзакций, чтобы гарантировать, что новый алгоритм точно идентифицирует известные модели мошенничества и не генерирует ложных срабатываний.
- Если тесты пройдены, он создает новый образ Docker агента обнаружения мошенничества и отправляет его в реестр артефактов.
Этот автоматизированный конвейер обеспечивает быстрое, надежное и последовательное развертывание агентов ИИ, сводя к минимуму человеческие ошибки и ускоряя внедрение новых возможностей ИИ в бизнес.
Реальный пример использования: проверка агента оптимизации цепочки поставок
После развертывания агента искусственного интеллекта, предназначенного для оптимизации уровня запасов в вашей глобальной цепочке поставок:
- Access the Interface : You'd access a dashboard or an application (the "Translocation Circle URL") that connects to your live AI agent (via its "Agent Locus URL," which is its API endpoint).
- Confront the Challenge : You might input a complex scenario (the "Spectre's question") like: "We have an unexpected surge in demand for Product X in Region Y, with limited shipping capacity. How should we reallocate inventory and adjust production to minimize stockouts and maintain profitability?"
- Agent's Response : Your AI agent, now live and connected to your enterprise systems, processes this query, uses its optimized algorithms, and provides a precise recommendation (eg, "Prioritize shipment from Warehouse A, initiate expedited production at Factory B, and notify sales in Region Z of potential 24-hour delay"). The accuracy and speed of this response determine if your agent lands a "CRITICAL BLOW" against the business problem.