1. Введение
В этом руководстве вы узнаете, как развернуть, управлять и отслеживать работу мощного агента, созданного с помощью Agent Development Kit (ADK) на платформе Google Cloud Run. ADK позволяет создавать агентов, способных выполнять сложные многоагентные рабочие процессы. Используя Cloud Run, полностью управляемую бессерверную платформу, вы можете развернуть своего агента как масштабируемое контейнеризированное приложение, не беспокоясь о базовой инфраструктуре. Это мощное сочетание позволяет вам сосредоточиться на основной логике вашего агента, одновременно пользуясь преимуществами надежной и масштабируемой среды Google Cloud.
В этом руководстве мы рассмотрим бесшовную интеграцию ADK с Cloud Run. Вы узнаете, как развернуть агент, а затем перейдете к практическим аспектам управления вашим приложением в условиях, приближенных к производственной среде. Мы рассмотрим, как безопасно развертывать новые версии агента, управляя трафиком, что позволит вам тестировать новые функции на ограниченном количестве пользователей перед полным релизом.
Кроме того, вы получите практический опыт мониторинга производительности вашего агента. Мы смоделируем реальный сценарий, проведя нагрузочное тестирование, чтобы понаблюдать за возможностями автоматического масштабирования Cloud Run в действии. Для более глубокого понимания поведения и производительности вашего агента мы включим трассировку с помощью Cloud Trace. Это обеспечит детальное, сквозное представление запросов по мере их прохождения через ваш агент, что позволит вам выявлять и устранять любые узкие места в производительности. К концу этого руководства вы получите полное понимание того, как эффективно развертывать, управлять и отслеживать ваши агенты на базе ADK в Cloud Run.
В ходе выполнения практического задания вы будете использовать следующий пошаговый подход:
- Создайте базу данных PostgreSQL в CloudSQL для использования в качестве службы сессий базы данных ADK Agent.
- Настройте базовый агент ADK.
- Настройте службу сессий базы данных для использования в ADK Runner.
- Первоначально разверните агент в облаке.
- Тестирование нагрузки и проверка масштабируемости облачных сервисов.
- Внедрите новую версию агента и постепенно увеличивайте трафик на новые версии.
- Настройте трассировку облака и проверьте трассировку выполнения агента.
Обзор архитектуры

Предварительные требования
- Уверенно работаю с Python.
- Понимание базовой архитектуры полного стека с использованием HTTP-сервисов.
Что вы узнаете
- Структура ADK и локальные утилиты
- Настройка агента ADK с использованием службы сессий базы данных.
- Настройка PostgreSQL в CloudSQL для использования службой сессий базы данных.
- Разверните приложение в Cloud Run с помощью Dockerfile и настройте начальные переменные среды.
- Настройка и тестирование автоматического масштабирования Cloud Run с нагрузочным тестированием.
- Стратегия поэтапного внедрения с помощью Cloud Run
- Настройте трассировку агента ADK в Cloud Trace.
Что вам понадобится
- Веб-браузер Chrome
- Аккаунт Gmail
- Облачный проект с включенной функцией выставления счетов.
Этот практический урок, разработанный для разработчиков всех уровней (включая начинающих), использует Python в качестве примера приложения. Однако знание Python не требуется для понимания представленных концепций.
2. 🚀 Подготовка к настройке процесса разработки в мастерской.
Шаг 1: Выберите активный проект в облачной консоли.
В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud (см. раздел в левом верхнем углу консоли).

Нажмите на него, и вы увидите список всех ваших проектов, как в этом примере.

Значение, обозначенное красной рамкой, — это идентификатор проекта , и это значение будет использоваться на протяжении всего урока.
Убедитесь, что для вашего облачного проекта включена оплата. Для этого нажмите на значок меню (гамбургер) ☰ в верхнем левом углу панели, где отображается меню навигации, и найдите пункт «Оплата».

Если в разделе «Биллинг / Обзор » ( в верхнем левом углу консоли облачных сервисов ) вы видите пункт «Пробный платёжный аккаунт Google Cloud Platform» , значит, ваш проект готов к использованию в этом руководстве. В противном случае вернитесь к началу руководства и активируйте пробный платёжный аккаунт.

Шаг 2: Подготовка базы данных Cloud SQL
Нам понадобится база данных для дальнейшего использования агентом ADK. Давайте создадим базу данных PostgreSQL в Cloud SQL. Сначала перейдите к строке поиска в верхней части консоли Cloud и введите «Cloud SQL». Затем щелкните продукт Cloud SQL .

После этого нам потребуется создать новый экземпляр базы данных, нажать кнопку «Создать экземпляр» и выбрать PostgreSQL.


При создании нового проекта вам также может потребоваться включить API Compute Engine. Просто нажмите « Включить API», если появится соответствующее сообщение.

Далее мы выберем характеристики базы данных, выберем версию Enterprise с предустановленными параметрами Sandbox Edition.

После этого задайте имя экземпляра и пароль по умолчанию для пользователя postgres . Вы можете использовать любые учетные данные, однако в рамках этого руководства мы будем использовать имя экземпляра " adk-deployment " и пароль "ADK-deployment123".

Для этого урока давайте используем us-central1 с одной зоной. После этого мы можем завершить создание базы данных и дождаться завершения всех необходимых настроек, нажав кнопку «Создать экземпляр» .

Пока это не будет завершено, мы можем перейти к следующему разделу.
Шаг 3: Ознакомьтесь с Cloud Shell.
В большинстве руководств вы будете использовать Cloud Shell . Нажмите «Активировать Cloud Shell» в верхней части консоли Google Cloud. Если система запросит авторизацию, нажмите «Авторизовать».


После подключения к Cloud Shell нам потребуется проверить, авторизована ли оболочка (или терминал) уже с использованием нашей учетной записи.
gcloud auth list
Если вы видите в своей личной почте Gmail результат, как в приведенном ниже примере, значит, все в порядке.
Credentialed Accounts
ACTIVE: *
ACCOUNT: alvinprayuda@gmail.com
To set the active account, run:
$ gcloud config set account `ACCOUNT`
Если это не поможет, попробуйте обновить страницу в браузере и обязательно нажмите кнопку « Авторизовать» , когда появится соответствующий запрос (возможно, авторизация прервалась из-за проблем с подключением).
Далее нам также необходимо проверить, настроена ли оболочка уже для правильного идентификатора проекта (PROJECT ID ). Если вы видите значение внутри скобок ( ) перед значком $ в терминале (на скриншоте ниже значение равно "adk-cloudrun-deployment-476504" ), это значение показывает настроенный проект для вашей активной сессии оболочки.

Если отображаемое значение уже верное , вы можете пропустить следующую команду . Однако, если оно неверно или отсутствует, выполните следующую команду.
gcloud config set project <YOUR_PROJECT_ID>
Затем клонируйте рабочую директорию шаблона для этого практического задания с Github и выполните следующую команду. Она создаст рабочую директорию в каталоге deploy_and_manage_adk.
git clone https://github.com/alphinside/deploy-and-manage-adk-service.git deploy_and_manage_adk
Шаг 4: Ознакомьтесь с редактором Cloud Shell и настройте рабочий каталог приложения.
Теперь мы можем настроить наш редактор кода для выполнения некоторых действий по программированию. Для этого мы будем использовать редактор Cloud Shell.
Нажмите кнопку «Открыть редактор» , это откроет редактор Cloud Shell. 
После этого перейдите в верхнюю часть редактора Cloud Shell и нажмите «Файл» -> «Открыть папку», найдите каталог с вашим именем пользователя и найдите каталог deploy_and_manage_adk, затем нажмите кнопку «ОК». Это сделает выбранный каталог основным рабочим каталогом. В этом примере имя пользователя — alvinprayuda , поэтому путь к каталогу показан ниже.


Теперь ваша рабочая директория в Cloud Shell Editor должна выглядеть следующим образом (внутри папки deploy_and_manage_adk ):
Теперь откройте терминал для редактора. Это можно сделать, щелкнув «Терминал» -> «Новый терминал» в строке меню, или используя Ctrl + Shift + C — это откроет окно терминала в нижней части браузера.

Ваш текущий активный терминал должен находиться в рабочей директории deploy_and_manage_adk . В этом практическом занятии мы будем использовать Python 3.12 и менеджер проектов Python uv для упрощения создания и управления версиями Python и виртуальными средами. Этот пакет uv уже предустановлен в Cloud Shell.
Выполните эту команду, чтобы установить необходимые зависимости в виртуальное окружение в каталоге .venv.
uv sync --frozen
Теперь нам нужно будет включить необходимые API с помощью команды, показанной ниже. Это может занять некоторое время.
gcloud services enable aiplatform.googleapis.com \
run.googleapis.com \
cloudbuild.googleapis.com \
cloudresourcemanager.googleapis.com \
sqladmin.googleapis.com
После успешного выполнения команды вы должны увидеть сообщение, похожее на показанное ниже:
Operation "operations/..." finished successfully.
Далее нам потребуется настроить конфигурационные файлы для этого проекта.
Переименуйте файл .env.example в .env
cp .env.example .env
Откройте файл .env и обновите значение GOOGLE_CLOUD_PROJECT, указав идентификатор вашего проекта.
# .env # Google Cloud and Vertex AI configuration GOOGLE_CLOUD_PROJECT=your-project-id GOOGLE_CLOUD_LOCATION=global GOOGLE_GENAI_USE_VERTEXAI=True # Database connection for session service # DB_CONNECTION_NAME=your-db-connection-name
Для этой практической работы мы будем использовать предварительно настроенные значения для GOOGLE_CLOUD_LOCATION и GOOGLE_GENAI_USE_VERTEXAI. Пока что мы оставим DB_CONNECTION_NAME закомментированным.
Теперь мы можем перейти к следующему шагу: изучить логику работы агента и развернуть его.
3. 🚀 Создайте агента погоды с помощью ADK и Gemini 2.5
Введение в структуру каталогов ADK
Начнём с изучения возможностей ADK и способов создания агента. Полную документацию по ADK можно найти по этому адресу . ADK предлагает множество утилит в рамках выполнения команд CLI. Некоторые из них:
- Настройка структуры каталогов агента
- Быстро попробуйте взаимодействие через ввод/вывод командной строки.
- Быстрая настройка локального веб-интерфейса для разработки.
Теперь давайте проверим структуру агента в каталоге weather_agent.
weather_agent/ ├── __init__.py ├── agent.py └── tool.py
А если вы изучите файлы init.py и agent.py, то увидите следующий код.
# __init__.py
from weather_agent.agent import root_agent
__all__ = ["root_agent"]
# agent.py
import os
from pathlib import Path
import google.auth
from dotenv import load_dotenv
from google.adk.agents import Agent
from weather_agent.tool import get_weather
# Load environment variables from .env file in root directory
root_dir = Path(__file__).parent.parent
dotenv_path = root_dir / ".env"
load_dotenv(dotenv_path=dotenv_path)
# Use default project from credentials if not in .env
_, project_id = google.auth.default()
os.environ.setdefault("GOOGLE_CLOUD_PROJECT", project_id)
os.environ.setdefault("GOOGLE_CLOUD_LOCATION", "global")
os.environ.setdefault("GOOGLE_GENAI_USE_VERTEXAI", "True")
root_agent = Agent(
name="weather_agent",
model="gemini-2.5-flash",
instruction="""
You are a helpful AI assistant designed to provide accurate and useful information.
""",
tools=[get_weather],
)
Пояснение к коду ADK
Этот скрипт содержит инициализацию нашего агента, в ходе которой мы выполняем следующие действия:
- Установите модель для использования:
gemini-2.5-flash - Предоставьте инструменту
get_weatherподдержку функциональности агента в качестве агента погоды.
Запустите веб-интерфейс
Теперь мы можем взаимодействовать с агентом и локально изучать его поведение. ADK позволяет нам использовать веб-интерфейс для разработки, чтобы взаимодействовать с ним и отслеживать происходящее во время взаимодействия. Выполните следующую команду, чтобы запустить локальный сервер пользовательского интерфейса для разработки.
uv run adk web --port 8080
Результат будет выглядеть примерно так, как в следующем примере, это означает, что мы уже можем получить доступ к веб-интерфейсу.
INFO: Started server process [xxxx] INFO: Waiting for application startup. +-----------------------------------------------------------------------------+ | ADK Web Server started | | | | For local testing, access at http://localhost:8080. | +-----------------------------------------------------------------------------+ INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
Чтобы проверить это, нажмите кнопку « Предварительный просмотр веб-страниц» в верхней части редактора Cloud Shell и выберите «Предварительный просмотр на порту 8080».

Вы увидите следующую веб-страницу, где сможете выбрать доступных агентов в выпадающем списке в верхнем левом углу (в нашем случае это должен быть weather_agent ) и взаимодействовать с ботом. В левом окне вы увидите подробную информацию о логах во время работы агента.

Теперь попробуйте взаимодействовать с ним. На левой панели мы можем просмотреть трассировку для каждого входного сигнала, чтобы понять, сколько времени требуется агенту для выполнения каждого действия, прежде чем сформировать окончательный ответ.

Это одна из функций мониторинга, встроенных в ADK, в настоящее время мы изучаем её локально. Позже мы увидим, как она интегрирована в Cloud Tracing, чтобы у нас была централизованная трассировка всех запросов.
4. 🚀 Развертывание в Cloud Run
Теперь давайте развернем этот агентский сервис в Cloud Run. В рамках этой демонстрации сервис будет предоставлен как общедоступный, к которому смогут получить доступ другие пользователи. Однако имейте в виду, что это не является лучшей практикой, поскольку это небезопасно.

В этом практическом занятии мы будем использовать Dockerfile для развертывания нашего агента в Cloud Run. На данный момент у нас уже есть все необходимые файлы ( Dockerfile и server.py ) для развертывания наших приложений в Cloud Run. Мы обсудим это подробнее позже.
Теперь давайте сначала развернем сервис. Перейдите в терминал Cloud Shell и убедитесь, что текущий проект настроен на ваш активный проект. Если нет, используйте команду gcloud configure для установки идентификатора проекта:
gcloud config set project [PROJECT_ID]
Теперь нам нужно снова открыть файл .env , и вы увидите, что нам нужно раскомментировать переменную DB_CONNECTION_NAME и заполнить её правильным значением.
# Google Cloud and Vertex AI configuration
GOOGLE_CLOUD_PROJECT=your-project-id
GOOGLE_CLOUD_LOCATION=global
GOOGLE_GENAI_USE_VERTEXAI=True
# Database connection for session service
DB_CONNECTION_NAME=your-db-connection-name
Чтобы получить значение DB_CONNECTION_NAME , снова перейдите в Cloud SQL и щелкните созданный вами экземпляр. Перейдите к строке поиска в верхней части консоли Cloud и введите «Cloud SQL». Затем щелкните продукт Cloud SQL .

После этого вы увидите ранее созданный экземпляр, щелкните по нему.

На странице экземпляра прокрутите вниз до раздела « Подключиться к этому экземпляру », и вы сможете скопировать имя подключения , чтобы заменить им значение DB_CONNECTION_NAME .

После этого откройте файл .env и измените переменную DB_CONNECTION_NAME . Ваш файл env должен выглядеть примерно так, как показано в примере ниже.
# Google Cloud and Vertex AI configuration
GOOGLE_CLOUD_PROJECT=your-project-id
GOOGLE_CLOUD_LOCATION=global
GOOGLE_GENAI_USE_VERTEXAI=True
# Database connection for session service
DB_CONNECTION_NAME=your-project-id:your-location:your-instance-name
После этого запустите скрипт развертывания.
bash deploy_to_cloudrun.sh
Если появится запрос на подтверждение создания реестра артефактов для репозитория Docker, просто ответьте «Да».
Пока мы ждём завершения процесса развертывания, давайте взглянем на скрипт deploy_to_cloudrun.sh.
#!/bin/bash
# Load environment variables from .env file
if [ -f .env ]; then
export $(cat .env | grep -v '^#' | xargs)
else
echo "Error: .env file not found"
exit 1
fi
# Validate required variables
required_vars=("GOOGLE_CLOUD_PROJECT" "DB_CONNECTION_NAME")
for var in "${required_vars[@]}"; do
if [ -z "${!var}" ]; then
echo "Error: $var is not set in .env file"
exit 1
fi
done
gcloud run deploy weather-agent \
--source . \
--port 8080 \
--project ${GOOGLE_CLOUD_PROJECT} \
--allow-unauthenticated \
--add-cloudsql-instances ${DB_CONNECTION_NAME} \
--update-env-vars SESSION_SERVICE_URI="postgresql+pg8000://postgres:ADK-deployment123@postgres/?unix_sock=/cloudsql/${DB_CONNECTION_NAME}/.s.PGSQL.5432",GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT} \
--region us-central1 \
--min 1 \
--memory 1G \
--concurrency 10
Этот скрипт загрузит вашу переменную .env , а затем выполнит команду развертывания.
Если присмотреться, нам нужна всего одна команда `gcloud run deploy`, чтобы выполнить все необходимые действия для развертывания сервиса: сборку образа, отправку в реестр, развертывание сервиса, настройку политики IAM, создание ревизии и даже маршрутизацию трафика. В этом примере у нас уже есть Dockerfile, поэтому эта команда будет использовать его для сборки приложения.
После завершения развертывания вы должны получить ссылку, похожую на приведенную ниже:
https://weather-agent-*******.us-central1.run.app
Получив этот URL-адрес, вы можете использовать свое приложение в режиме инкогнито или на мобильном устройстве и получить доступ к пользовательскому интерфейсу разработчика агента. Пока ожидается развертывание, давайте рассмотрим подробную информацию о службе, которую мы только что развернули, в следующем разделе.
5. 💡 Dockerfile и скрипт бэкэнд-сервера
Чтобы сделать агента доступным в качестве сервиса, мы обернем его в приложение FastAPI, которое будет запускаться по команде Dockerfile. Ниже приведено содержимое Dockerfile.
FROM python:3.12-slim
RUN pip install --no-cache-dir uv==0.7.13
WORKDIR /app
COPY . .
RUN uv sync --frozen
EXPOSE 8080
CMD ["uv", "run", "uvicorn", "server:app", "--host", "0.0.0.0", "--port", "8080"]
Здесь мы можем настроить необходимые службы для поддержки агента, например, подготовить службы сессий , памяти или артефактов для использования в производственной среде. Вот код файла server.py , который будет использоваться.
import os
from dotenv import load_dotenv
from fastapi import FastAPI
from google.adk.cli.fast_api import get_fast_api_app
from pydantic import BaseModel
from typing import Literal
from google.cloud import logging as google_cloud_logging
# Load environment variables from .env file
load_dotenv()
logging_client = google_cloud_logging.Client()
logger = logging_client.logger(__name__)
AGENT_DIR = os.path.dirname(os.path.abspath(__file__))
# Get session service URI from environment variables
session_uri = os.getenv("SESSION_SERVICE_URI", None)
# Prepare arguments for get_fast_api_app
app_args = {"agents_dir": AGENT_DIR, "web": True, "trace_to_cloud": True}
# Only include session_service_uri if it's provided
if session_uri:
app_args["session_service_uri"] = session_uri
else:
logger.log_text(
"SESSION_SERVICE_URI not provided. Using in-memory session service instead. "
"All sessions will be lost when the server restarts.",
severity="WARNING",
)
# Create FastAPI app with appropriate arguments
app: FastAPI = get_fast_api_app(**app_args)
app.title = "weather-agent"
app.description = "API for interacting with the Agent weather-agent"
class Feedback(BaseModel):
"""Represents feedback for a conversation."""
score: int | float
text: str | None = ""
invocation_id: str
log_type: Literal["feedback"] = "feedback"
service_name: Literal["weather-agent"] = "weather-agent"
user_id: str = ""
# Example if you want to add your custom endpoint
@app.post("/feedback")
def collect_feedback(feedback: Feedback) -> dict[str, str]:
"""Collect and log feedback.
Args:
feedback: The feedback data to log
Returns:
Success message
"""
logger.log_struct(feedback.model_dump(), severity="INFO")
return {"status": "success"}
# Main execution
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8080)
Пояснение к серверному коду
Вот параметры, которые определены в скрипте server.py :
- Преобразуем наш агент в приложение FastAPI, используя метод
get_fast_api_app. Таким образом, мы унаследуем то же определение маршрута, которое используется для пользовательского интерфейса веб-разработки. - Настройте необходимые службы для работы с сессиями, памятью или артефактами, добавив ключевые аргументы к методу
get_fast_api_app. В этом руководстве, если мы настроим переменную окруженияSESSION_SERVICE_URI, служба сессий будет использовать её, в противном случае она будет использовать сессию в памяти. - Мы можем добавить пользовательский маршрут для поддержки другой бизнес-логики бэкэнда; в скрипте мы добавляем маршрут для функциональности обратной связи, например.
- Включите трассировку облака в параметре
get_fast_api_app, чтобы отправлять трассировку в Google Cloud Trace. - Запустите сервис FastAPI с помощью uvicorn.
Если развертывание уже завершено, попробуйте взаимодействовать с агентом через веб-интерфейс разработчика, перейдя по URL-адресу Cloud Run.
6. 🚀 Проверка автоматического масштабирования Cloud Run с помощью нагрузочного тестирования
Теперь рассмотрим возможности автоматического масштабирования Cloud Run. Для этого сценария развернем новую версию, включив ограничение на максимальное количество параллельных экземпляров. В предыдущем разделе мы установили максимальное количество параллельных экземпляров равным 10 (флаг --concurrency 10 ). Следовательно, можно ожидать, что Cloud Run попытается масштабировать свой экземпляр при проведении нагрузочного тестирования, превышающего это число.
Давайте рассмотрим файл load_test.py . Это скрипт, который мы будем использовать для нагрузочного тестирования с помощью фреймворка Locust . Этот скрипт выполнит следующие действия:
- Случайные значения user_id и session_id
- Создайте session_id для user_id.
- Обратитесь к конечной точке "/run_sse", используя созданные user_id и session_id.
Нам потребуется URL-адрес развернутой нами службы, если вы его пропустили. Перейдите в консоль Cloud Run и щелкните по службе weather-agent.

Затем найдите свою службу метеорологического агентства и нажмите на неё.

URL-адрес сервиса будет отображаться рядом с информацией о регионе. Например:

Затем выполните следующую команду для проведения нагрузочного тестирования.
uv run locust -f load_test.py \
-H {YOUR_SERVICE_URL} \
-u 60 \
-r 5 \
-t 120 \
--headless
При запуске программы вы увидите метрики, подобные этим. (В этом примере все запросы выполнены успешно)
Type Name # reqs # fails | Avg Min Max Med | req/s failures/s
--------|------------------------------------|-------|-------------|-------|-------|-------|-------|--------|-----------
POST /run_sse end 813 0(0.00%) | 5817 2217 26421 5000 | 6.79 0.00
POST /run_sse message 813 0(0.00%) | 2678 1107 17195 2200 | 6.79 0.00
--------|------------------------------------|-------|-------------|-------|-------|-------|-------|--------|-----------
Aggregated 1626 0(0.00%) | 4247 1107 26421 3500 | 13.59 0.00
Давайте посмотрим, что произошло в Cloud Run. Снова перейдите к развернутой службе и посмотрите на панель мониторинга. Там будет показано, как Cloud Run автоматически масштабирует экземпляр для обработки входящих запросов. Поскольку мы ограничиваем максимальное количество параллельных запросов до 10 на экземпляр, экземпляр Cloud Run попытается автоматически скорректировать количество контейнеров, чтобы удовлетворить это условие.

7. 🚀 Постепенный выпуск новых версий
Теперь рассмотрим следующий сценарий. Мы хотим обновить подсказку агента. Откройте файл weather_agent/agent.py и замените его следующим кодом:
# weather_agent/agent.py
import os
from pathlib import Path
import google.auth
from dotenv import load_dotenv
from google.adk.agents import Agent
from weather_agent.tool import get_weather
# Load environment variables from .env file in root directory
root_dir = Path(__file__).parent.parent
dotenv_path = root_dir / ".env"
load_dotenv(dotenv_path=dotenv_path)
# Use default project from credentials if not in .env
_, project_id = google.auth.default()
os.environ.setdefault("GOOGLE_CLOUD_PROJECT", project_id)
os.environ.setdefault("GOOGLE_CLOUD_LOCATION", "global")
os.environ.setdefault("GOOGLE_GENAI_USE_VERTEXAI", "True")
root_agent = Agent(
name="weather_agent",
model="gemini-2.5-flash",
instruction="""
You are a helpful AI assistant designed to provide accurate and useful information.
You only answer inquiries about the weather. Refuse all other user query
""",
tools=[get_weather],
)
Итак, вы хотите выпустить новые ревизии, но не хотите, чтобы весь трафик запросов направлялся напрямую на новую версию. Мы можем осуществить поэтапный выпуск с помощью Cloud Run. Сначала нам нужно развернуть новую ревизию, но с флагом –no-traffic . Сохраните предыдущий скрипт агента и выполните следующую команду.
gcloud run deploy weather-agent \
--source . \
--port 8080 \
--project {YOUR_PROJECT_ID} \
--allow-unauthenticated \
--region us-central1 \
--no-traffic
После завершения вы получите аналогичный журнал, как и в предыдущем процессе развертывания, но с той разницей, что будет отображаться количество обработанного трафика. В нем будет показано 0% обработанного трафика.
Service [weather-agent] revision [weather-agent-xxxx-xxx] has been deployed and is serving 0 percent of traffic.
Далее перейдем на страницу продукта Cloud Run и найдем развернутый вами экземпляр. Введите «Cloud Run» в строку поиска и щелкните по продукту Cloud Run.

Затем найдите свою службу метеорологического агентства и нажмите на неё.

Перейдите на вкладку «Ревизии» , и вы увидите там список развернутых ревизий.

Вы увидите, что новые развернутые версии обслуживают 0%, отсюда вы можете нажать кнопку с изображением шашлычка (⋮) и выбрать «Управление трафиком».

В появившемся окне вы можете изменить процент трафика, направляемого на те или иные версии.

После некоторого ожидания трафик будет распределен пропорционально в соответствии с заданными процентными настройками. Таким образом, мы сможем легко вернуться к предыдущим версиям, если что-то случится с новым релизом.
8. 🚀 Отслеживание ADK
Агенты, созданные с использованием ADK, уже поддерживают трассировку с помощью встроенной открытой телеметрии. У нас есть Cloud Trace для сбора и визуализации этих данных. Давайте посмотрим в файле server.py , как мы включаем эту функцию в нашем ранее развернутом сервисе.
# server.py
...
app_args = {"agents_dir": AGENT_DIR, "web": True, "trace_to_cloud": True}
...
app: FastAPI = get_fast_api_app(**app_args)
...
Здесь мы передаем аргумент trace_to_cloud со значением True . Если вы развертываете систему с другими параметрами, вы можете ознакомиться с этой документацией для получения более подробной информации о том, как включить трассировку в Cloud Trace из различных вариантов развертывания.
Попробуйте получить доступ к веб-интерфейсу разработчика вашей службы и пообщайтесь с агентом. После этого перейдите в строку поиска консоли облака, введите «trace explorer» и выберите продукт Trace Explorer .

На странице просмотра трассировки вы увидите, что наша переписка с агентом отправлена. В разделе «Имя сегмента» вы можете отфильтровать сегмент, относящийся к нашему агенту (он называется agent_run [weather_agent] ).

После фильтрации трассировок вы также можете просмотреть каждую из них напрямую. Будет показана подробная продолжительность каждого действия, выполненного агентом. Например, посмотрите изображения ниже.


В каждом разделе вы можете просмотреть подробную информацию в атрибутах, как показано ниже.

Вот и все, теперь у нас есть хорошая возможность наблюдения и информация о каждом взаимодействии нашего агента с пользователем, что поможет в отладке проблем. Смело пробуйте различные инструменты или рабочие процессы!
9. 🎯 Вызов
Попробуйте использовать многоагентные или агентные рабочие процессы, чтобы посмотреть, как они работают под нагрузкой и как выглядит трассировка.
10. 🧹 Уборка
Чтобы избежать списания средств с вашего аккаунта Google Cloud за ресурсы, использованные в этом практическом задании, выполните следующие действия:
- В консоли Google Cloud перейдите на страницу «Управление ресурсами» .
- В списке проектов выберите проект, который хотите удалить, и нажмите кнопку «Удалить» .
- В диалоговом окне введите идентификатор проекта, а затем нажмите «Завершить» , чтобы удалить проект.
- В качестве альтернативы вы можете перейти в Cloud Run в консоли, выбрать только что развернутую службу и удалить ее.
