1. Введение
Обзор
В этой лабораторной работе вы развернёте готовый к использованию агент Agent Development Kit (ADK) с бэкендом Gemma с графическим ускорением. Основное внимание уделено критически важным шаблонам развёртывания: настройке сервисов Cloud Run с поддержкой GPU, интеграции бэкендов моделей с агентами ADK и наблюдению за поведением автоматического масштабирования под нагрузкой.
Что ты будешь делать?
В этой лабораторной работе вы сосредоточитесь на важнейших аспектах развертывания производства:
- Развертывание Gemma в облаке с использованием графического процессора — настройка высокопроизводительной серверной части модели Gemma
- Интегрируйте развертывание Gemma с агентом ADK — подключите свой агент к модели с ускорением на GPU.
- Тестирование с помощью веб-интерфейса ADK — проверка корректности работы вашего диалогового агента.
- Проведите нагрузочное тестирование — посмотрите, как оба экземпляра Cloud Run автоматически масштабируются под нагрузкой.
Основное внимание уделяется шаблонам развертывания производства, а не обширной разработке агентов.
Чему вы научитесь
- Развертывание моделей Gemma с ускорением на GPU в Cloud Run для использования в производственной среде
- Интеграция внешних развертываний моделей с агентами ADK
- Настройте и протестируйте готовые к использованию развертывания агентов ИИ
- Понимание поведения автомасштабирования Cloud Run под нагрузкой
- Наблюдайте, как несколько экземпляров Cloud Run координируют работу во время пиков трафика.
- Примените нагрузочное тестирование для проверки производительности и автоматического масштабирования
2. Настройка проекта
- Если у вас еще нет учетной записи Google, вам необходимо ее создать .
- Используйте личную учётную запись вместо рабочей или учебной. Рабочие и учебные учётные записи могут иметь ограничения, которые не позволят вам включить API, необходимые для этой лабораторной работы.
- Войдите в Google Cloud Console .
- Включите выставление счетов в Cloud Console.
- Выполнение этой лабораторной работы обойдется менее чем в 1 доллар США в виде облачных ресурсов.
- Вы можете следовать инструкциям в конце этой лабораторной работы, чтобы удалить ресурсы и избежать дальнейших расходов.
- Новые пользователи имеют право на бесплатную пробную версию стоимостью 300 долларов США .
- Создайте новый проект или выберите повторное использование существующего проекта.
3. Откройте редактор Cloud Shell
- Нажмите эту ссылку, чтобы перейти непосредственно в редактор Cloud Shell.
- Если сегодня в какой-либо момент вам будет предложено авторизоваться, нажмите «Авторизовать» , чтобы продолжить.
- Если терминал не отображается внизу экрана, откройте его:
- Нажмите «Просмотр»
- Нажмите «Терминал»
- В терминале настройте свой проект с помощью этой команды:
- Формат:
gcloud config set project [PROJECT_ID]
- Пример:
gcloud config set project lab-project-id-example
- Если вы не можете вспомнить идентификатор своего проекта:
- Вы можете вывести список всех идентификаторов своих проектов с помощью:
gcloud projects list | awk '/PROJECT_ID/{print $2}'
- Вы можете вывести список всех идентификаторов своих проектов с помощью:
- Формат:
- Вы должны увидеть это сообщение:
Если вы видитеUpdated property [core/project].
WARNING
и вопросDo you want to continue (Y/n)?
, вероятно, вы неправильно ввели идентификатор проекта. Нажмитеn
, затемEnter
и попробуйте снова выполнить командуgcloud config set project
.
4. Включите API и установите регион по умолчанию
Прежде чем мы сможем развернуть службы Cloud Run с поддержкой GPU, нам необходимо включить требуемые API Google Cloud и настроить параметры вашего проекта.
- В терминале включите API:
gcloud services enable \
run.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
aiplatform.googleapis.com
Если будет предложено авторизоваться, нажмите «Авторизовать» , чтобы продолжить.
Выполнение этой команды может занять несколько минут, но в конечном итоге должно выдать сообщение об успешном выполнении, похожее на это:
Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.
- Установите регион Cloud Run по умолчанию.
gcloud config set run/region europe-west1
5. Подготовьте свой проект Python
Давайте настроим стартовый код, содержащий базовую структуру для нашего бэкэнда Gemma и служб агентов ADK.
- Клонируйте стартовый репозиторий:
cd ~ git clone https://github.com/amitkmaraj/accelerate-ai-lab3-starter.git cd accelerate-ai-lab3-starter
- Изучите структуру проекта:
Вы должны увидеть следующую стартовую структуру:ls -R
accelerate-ai-lab3-starter/ ├── README.md # Project overview ├── ollama-backend/ # Ollama backend (separate deployment) │ └── Dockerfile # Backend container (🚧 to implement) └── adk-agent/ # ADK agent (separate deployment) ├── pyproject.toml # Python dependencies (✅ completed) ├── server.py # FastAPI server (🚧 to implement) ├── Dockerfile # Container config (🚧 to implement) ├── load_test.py # Load testing (🚧 to implement) └── production_agent/ # Agent implementation ├── __init__.py # Package init (✅ completed) └── agent.py # Agent logic (🚧 to implement)
6. Обзор архитектуры
Перед реализацией давайте разберемся с архитектурой из двух сервисов:
Ключевая информация : во время нагрузочного тестирования вы увидите, что обе службы масштабируются независимо друг от друга: серверная часть GPU (служба узкого места) масштабируется до 1–3 экземпляров для нагрузки вывода, в то время как агент ADK остается на уровне 1 экземпляра для обработки запросов.
7. Развертывание Gemma Backend в облаке с использованием графического процессора
Первый критически важный шаг — развёртывание модели Gemma с графическим ускорением, которая послужит мозгом вашего агента ADK. Наличие развёрнутой, изолированной модели LLM может быть полезным в архитектурах, где требуется отдельная, точно настроенная модель или изолированное масштабирование.
- Перейдите в внутренний каталог Ollama:
cd ollama-backend
- Откройте и реализуйте Dockerfile Ollama:
Замените комментарий TODO на:cloudshell edit Dockerfile
🔧 Что это делает:FROM ollama/ollama:latest # Listen on all interfaces, port 8080 ENV OLLAMA_HOST 0.0.0.0:8080 # Store model weight files in /models ENV OLLAMA_MODELS /models # Reduce logging verbosity ENV OLLAMA_DEBUG false # Never unload model weights from the GPU ENV OLLAMA_KEEP_ALIVE -1 # Store the model weights in the container image ENV MODEL gemma3:270m RUN ollama serve & sleep 5 && ollama pull $MODEL # Start Ollama ENTRYPOINT ["ollama", "serve"]
- Использует официальное изображение Ollama в качестве основы
- Настраивает
OLLAMA_HOST
на прием подключений с любого IP-адреса - Открывает порт 8080
- Разверните бэкэнд Gemma с поддержкой GPU:
gcloud run deploy ollama-gemma3-270m-gpu \
--source . \
--region europe-west1 \
--concurrency 4 \
--cpu 8 \
--set-env-vars OLLAMA_NUM_PARALLEL=4 \
--gpu 1 \
--gpu-type nvidia-l4 \
--max-instances 3 \
--memory 16Gi \
--allow-unauthenticated \
--no-cpu-throttling \
--no-gpu-zonal-redundancy \
--timeout 600 \
--labels dev-tutorial=codelab-agent-gpu
Если вы получили сообщение «Для развертывания из источника требуется репозиторий Artifact Registry Docker для хранения созданных контейнеров. Будет создан репозиторий с именем [cloud-run-source-deploy] в регионе [europe-west1]», продолжайте.
⚙️ Объяснение конфигурации клавиш:
- Графический процессор : NVIDIA L4 выбрана за превосходное соотношение цены и производительности для задач логического вывода. L4 обеспечивает 24 ГБ графической памяти и оптимизированные тензорные операции, что делает её идеальной для моделей с 270 млн параметров, таких как Gemma.
- Память : 16 ГБ системной памяти для обработки загрузки моделей, операций CUDA и управления памятью Ollama
- ЦП : 8 ядер для оптимальной обработки ввода-вывода и задач предварительной обработки
- Параллелизм : 4 запроса на экземпляр обеспечивают баланс пропускной способности с использованием памяти графического процессора.
- Тайм-аут : 600 секунд, необходимый для первоначальной загрузки модели и запуска контейнера.
💰 Учет затрат : экземпляры GPU значительно дороже экземпляров, использующих только CPU (~$2-4/час против ~$0,10/час). Параметр --max-instances 1
помогает контролировать расходы, предотвращая ненужное масштабирование экземпляров GPU.
- Дождитесь завершения развертывания и запишите URL-адрес службы:
export OLLAMA_URL=$(gcloud run services describe ollama-gemma3-270m-gpu \ --region=europe-west1 \ --format='value(status.url)') echo "🎉 Gemma backend deployed at: $OLLAMA_URL"
8. Реализуйте интеграцию агента ADK.
Теперь давайте создадим минимальный агент ADK, который подключится к развернутому бэкэнду Gemma.
- Перейдите в каталог агента ADK:
cd ../adk-agent
- Откройте и реализуйте конфигурацию агента:
Замените все комментарии TODO этой минимальной реализацией:cloudshell edit production_agent/agent.py
🔧 Что это делает:import os from pathlib import Path from dotenv import load_dotenv from google.adk.agents import Agent from google.adk.models.lite_llm import LiteLlm import google.auth # Load environment variables root_dir = Path(__file__).parent.parent dotenv_path = root_dir / ".env" load_dotenv(dotenv_path=dotenv_path) # Configure Google Cloud try: _, project_id = google.auth.default() os.environ.setdefault("GOOGLE_CLOUD_PROJECT", project_id) except Exception: pass os.environ.setdefault("GOOGLE_CLOUD_LOCATION", "europe-west1") # Configure model connection gemma_model_name = os.getenv("GEMMA_MODEL_NAME", "gemma3:270m") # Production Gemma Agent - GPU-accelerated conversational assistant gemma_agent = Agent( model=LiteLlm(model=f"ollama_chat/{gemma_model_name}"), name="gemma_agent", description="A production-ready conversational assistant powered by GPU-accelerated Gemma.", instruction="""You are 'Gem', a friendly, knowledgeable, and enthusiastic zoo tour guide. Your main goal is to make a zoo visit more fun and educational for guests by answering their questions. You can provide general information and interesting facts about different animal species, such as: - Their natural habitats and diet. 🌲🍓 - Typical lifespan and behaviors. - Conservation status and unique characteristics. IMPORTANT: You do NOT have access to any tools. This means you cannot look up real-time, specific information about THIS zoo. You cannot provide: - The names or ages of specific animals currently at the zoo. - The exact location or enclosure for an animal. - The daily schedule for feedings or shows. Always answer based on your general knowledge about the animal kingdom. Keep your tone cheerful, engaging, and welcoming for visitors of all ages. 🦁✨""", tools=[], # Gemma focuses on conversational capabilities ) # Set as root agent root_agent = gemma_agent
- Подключается к развернутому бэкэнду Gemma через LiteLlm
- Создает простой диалоговый агент
- Настраивает интеграцию с Google Cloud
- Откройте и реализуйте сервер FastAPI:
Заменить все комментарии TODO на:cloudshell edit server.py
🔧 Что это делает:import os from dotenv import load_dotenv from fastapi import FastAPI from google.adk.cli.fast_api import get_fast_api_app # Load environment variables load_dotenv() AGENT_DIR = os.path.dirname(os.path.abspath(__file__)) app_args = {"agents_dir": AGENT_DIR, "web": True} # Create FastAPI app with ADK integration app: FastAPI = get_fast_api_app(**app_args) # Update app metadata app.title = "Production ADK Agent - Lab 3" app.description = "Gemma agent with GPU-accelerated backend" app.version = "1.0.0" @app.get("/health") def health_check(): return {"status": "healthy", "service": "production-adk-agent"} @app.get("/") def root(): return { "service": "Production ADK Agent - Lab 3", "description": "GPU-accelerated Gemma agent", "docs": "/docs", "health": "/health" } if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8080, log_level="info")
- Создает сервер FastAPI с интеграцией ADK
- Включает веб-интерфейс для тестирования
- Предоставляет конечные точки проверки работоспособности
- Откройте и реализуйте Dockerfile:
Заменить все комментарии TODO на:cloudshell edit Dockerfile
Объяснение выбора технологий:FROM python:3.13-slim # Copy uv from the official image COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv # Install system dependencies RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* # Set working directory WORKDIR /app # Copy all files COPY . . # Install Python dependencies RUN uv sync # Expose port EXPOSE 8080 # Run the application CMD ["uv", "run", "uvicorn", "server:app", "--host", "0.0.0.0", "--port", "8080"]
- uv : Современный менеджер пакетов Python, который в 10-100 раз быстрее, чем pip. Он использует глобальный кэш и параллельные загрузки, что значительно сокращает время сборки контейнера.
- Python 3.13-slim : последняя версия Python с минимальными системными зависимостями, уменьшающая размер контейнера и поверхность атаки.
- Многоэтапная сборка : копирование uv из официального образа гарантирует получение последней оптимизированной версии бинарного файла.
9. Настройте среду и разверните агента
Теперь мы настроим агент ADK для подключения к вашему развернутому бэкенду Gemma и развернем его как службу Cloud Run. Это включает в себя настройку переменных среды и развёртывание агента с правильной конфигурацией.
- Настройте конфигурацию вашей среды:
cat << EOF > .env GOOGLE_CLOUD_PROJECT=$(gcloud config get-value project) GOOGLE_CLOUD_LOCATION=europe-west1 GEMMA_MODEL_NAME=gemma3:270m OLLAMA_API_BASE=$OLLAMA_URL EOF
Понимание переменных среды в Cloud Run
Переменные среды — это пары «ключ-значение», которые настраивают приложение во время выполнения. Они особенно полезны для:
- Конечные точки API и URL-адреса служб (например, наш бэкэнд Ollama)
- Конфигурация, которая меняется между средами (разработка, промежуточная разработка, производственная среда)
- Конфиденциальные данные, которые не следует жестко кодировать
Разверните агент ADK:
export PROJECT_ID=$(gcloud config get-value project)
gcloud run deploy production-adk-agent \
--source . \
--region europe-west1 \
--allow-unauthenticated \
--memory 4Gi \
--cpu 2 \
--max-instances 1 \
--concurrency 10 \
--timeout 300 \
--set-env-vars GOOGLE_CLOUD_PROJECT=$PROJECT_ID \
--set-env-vars GOOGLE_CLOUD_LOCATION=europe-west1 \
--set-env-vars GEMMA_MODEL_NAME=gemma3:270m \
--set-env-vars OLLAMA_API_BASE=$OLLAMA_URL \
--labels dev-tutorial=codelab-agent-gpu
⚙️ Конфигурация клавиш:
- Автомасштабирование : фиксировано на 1 экземпляре (облегченная обработка запросов)
- Параллелизм : 10 запросов на экземпляр
- Память : 4 ГБ для агента ADK
- Окружение : подключается к вашему бэкэнду Gemma
🔒 Примечание по безопасности : в этой лабораторной работе для простоты используется --allow-unauthenticated
. В рабочей среде реализуйте корректную аутентификацию с помощью:
- Аутентификация между сервисами Cloud Run с использованием учетных записей сервисов
- Политики управления идентификацией и доступом (IAM)
- API-ключи или OAuth для внешнего доступа
- Рассмотрите возможность использования
gcloud run services add-iam-policy-binding
для управления доступом.
Получите URL-адрес службы вашего агента:
export AGENT_URL=$(gcloud run services describe production-adk-agent \
--region=europe-west1 \
--format='value(status.url)')
echo "🎉 ADK Agent deployed at: $AGENT_URL"
✅ Лучшие практики использования переменных среды , основанные на документации по переменным среды Cloud Run :
- Избегайте зарезервированных переменных : не устанавливайте
PORT
(Cloud Run устанавливает его автоматически) или переменные, начинающиеся сX_GOOGLE_
- Используйте описательные имена : добавляйте префиксы к переменным, чтобы избежать конфликтов (например,
GEMMA_MODEL_NAME
вместоMODEL
). - Экранирование запятыми : если ваши значения содержат запятые, используйте другой разделитель:
--set-env-vars "^@^KEY1=value1,value2@KEY2=..."
- Обновление или замена : используйте
--update-env-vars
для добавления/изменения определенных переменных, не затрагивая другие.
Как установить переменные в Cloud Run :
- Из файла :
gcloud run deploy SERVICE_NAME --env-vars-file .env --labels dev-tutorial codelab-adk
(загружает несколько переменных из файла) - Несколько флагов : повторите
--set-env-vars
для сложных значений, которые нельзя разделить запятыми.
10. Тестирование с помощью веб-интерфейса ADK
После развертывания обеих служб пришло время проверить, может ли ваш агент ADK успешно взаимодействовать с серверной частью Gemma, работающей на графическом процессоре, и отвечать на запросы пользователей.
- Проверьте конечную точку работоспособности:
Вы должны увидеть:curl $AGENT_URL/health
{ "status": "healthy", "service": "production-adk-agent" }
- Для взаимодействия с агентом введите URL-адрес вашего
production-adk-agent
в новой вкладке браузера. Должен появиться веб-интерфейс ADK. - Проверьте своего агента с помощью следующих примеров разговоров:
- «Чем обычно питаются красные панды в дикой природе?»
- «Можете ли вы рассказать мне интересный факт о снежных барсах?»
- «Почему лягушки-дротики так ярко окрашены?»
- «Где в зоопарке я могу найти нового детеныша кенгуру?»
- Агент отвечает, используя вашу развернутую модель Gemma. Вы можете убедиться в этом, просматривая журналы развернутой службы Gemma. Мы сделаем это в следующем разделе.
- Ответы генерируются серверной частью с ускорением на GPU.
- Веб-интерфейс обеспечивает удобный чат.
11. Внедрение и проведение нагрузочного тестирования
Чтобы понять, как ваше производственное развертывание справляется с реальным трафиком, мы реализуем комплексное нагрузочное тестирование, которое запустит автоматическое масштабирование как в агенте ADK, так и в бэкэнд-сервисах GPU.
- Откройте и реализуйте скрипт нагрузочного тестирования:
Замените комментарий TODO на:cloudshell edit load_test.py
🔧 Что это делает:import random import uuid from locust import HttpUser, task, between class ProductionAgentUser(HttpUser): """Load test user for the Production ADK Agent.""" wait_time = between(1, 3) # Faster requests to trigger scaling def on_start(self): """Set up user session when starting.""" self.user_id = f"user_{uuid.uuid4()}" self.session_id = f"session_{uuid.uuid4()}" # Create session for the Gemma agent using proper ADK API format session_data = {"state": {"user_type": "load_test_user"}} self.client.post( f"/apps/production_agent/users/{self.user_id}/sessions/{self.session_id}", headers={"Content-Type": "application/json"}, json=session_data, ) @task(4) def test_conversations(self): """Test conversational capabilities - high frequency to trigger scaling.""" topics = [ "What do red pandas typically eat in the wild?", "Can you tell me an interesting fact about snow leopards?", "Why are poison dart frogs so brightly colored?", "Where can I find the new baby kangaroo in the zoo?", "What is the name of your oldest gorilla?", "What time is the penguin feeding today?" ] # Use proper ADK API format for sending messages message_data = { "app_name": "production_agent", "user_id": self.user_id, "session_id": self.session_id, "new_message": { "role": "user", "parts": [{ "text": random.choice(topics) }] } } self.client.post( "/run", headers={"Content-Type": "application/json"}, json=message_data, ) @task(1) def health_check(self): """Test the health endpoint.""" self.client.get("/health")
- Создание сеанса : использует правильный формат API ADK с POST-запросом к
/apps/production_agent/users/{user_id}/sessions/{session_id}
. После созданияsession_id
иuser_id
можно отправить запрос агенту. - Формат сообщения : соответствует спецификации ADK с
app_name
,user_id
,session_id
и структурированным объектомnew_message
- Конечная точка разговора : использует конечную точку
/run
для сбора всех событий одновременно (рекомендуется для нагрузочного тестирования) - Реалистичная нагрузка : создает разговорную нагрузку с более коротким временем ожидания для запуска автоматического масштабирования.
- Создание сеанса : использует правильный формат API ADK с POST-запросом к
- Установка зависимостей:
uv sync
- Locust — это инструмент нагрузочного тестирования с открытым исходным кодом на основе Python, предназначенный для тестирования производительности и нагрузочного тестирования веб-приложений и других систем. Его ключевая особенность заключается в том, что тестовые сценарии и поведение пользователей определяются с помощью стандартного кода Python, что обеспечивает высокую гибкость и выразительность по сравнению с инструментами, использующими графические интерфейсы или предметно-ориентированные языки. Мы будем использовать Locust для моделирования пользовательского трафика к нашим сервисам. Запустите нагрузочный тест.
Попробуйте изменить параметры теста и понаблюдайте за результатами. Вы заметите скачок числа экземпляров# Run a load test to trigger autoscaling uv run locust -f load_test.py \ -H $AGENT_URL \ --headless \ -t 50s \ -u 3 \ -r 1
ollama-gemma3-270m-gpu
до 2-3. Параметры нагрузочного теста:- Продолжительность : 50 секунд
- Пользователи : 3 одновременных пользователя
- Скорость появления : 1 пользователь в секунду
- Цель : запустить автоматическое масштабирование на обеих службах.
12. Наблюдайте за поведением AutoScaling
Во время нагрузочного теста вы сможете наблюдать за автоматическим масштабированием Cloud Run в действии. Здесь вы увидите ключевые архитектурные преимущества разделения агента ADK и бэкэнда на базе графического процессора.
Во время нагрузочного теста отслеживайте масштабирование обеих служб Cloud Run в вашей консоли.
- В Cloud Console перейдите к:
- Cloud Run → production-adk-agent → Метрики
- Cloud Run → ollama-gemma3-270m-gpu → Metrics
👀 На что следует обратить внимание:
🤖 Служба агентов ADK:
- Должен оставаться стабильным в 1 момент времени, пока трафик увеличивается
- Резкий рост использования ЦП и памяти при высоком трафике
- Эффективно управляет сеансами и маршрутизирует запросы
🎮 Gemma Backend Service (узкое место):
- Масштабируется от 1 до 3 экземпляров в зависимости от потребности в выводе
- Использование графического процессора значительно увеличивается под нагрузкой
- Эта служба становится узким местом из-за интенсивного использования графического процессора для вывода модели.
- Время вывода модели остается неизменным благодаря ускорению на GPU
💡 Ключевые выводы:
- Бэкэнд GPU является узким местом и масштабируется более агрессивно (1–3 экземпляра)
- Агент ADK остается последовательным
- Обе службы масштабируются независимо друг от друга в зависимости от индивидуальных характеристик нагрузки.
- Автомасштабирование помогает поддерживать производительность в условиях изменяющейся нагрузки
13. Заключение
Поздравляем! Вы успешно развернули готовый к использованию агент ADK с бэкендом Gemma с графическим ускорением и наблюдаете автоматическое масштабирование.
✅ Чего вы достигли
- ✅ Развернули серверную часть модели Gemma с графическим ускорением в Cloud Run
- ✅ Создан и развернут агент ADK, который интегрируется с бэкэндом Gemma.
- ✅ Протестировал агента с помощью веб-интерфейса ADK
- ✅ Наблюдаемое поведение автоматического масштабирования в двух скоординированных сервисах Cloud Run
💡 Ключевые выводы из этой лаборатории
- 🎮 Ускорение графического процессора : графический процессор NVIDIA L4 значительно повышает производительность вывода моделей.
- 🔗 Координация услуг : две службы Cloud Run могут работать вместе без сбоев.
- 📈 Независимое масштабирование : каждый сервис масштабируется в зависимости от индивидуальных характеристик нагрузки.
- 🚀 Готовность к эксплуатации : архитектура эффективно обрабатывает реальные модели дорожного движения.
🔄 Дальнейшие шаги
- Экспериментируйте с различными схемами нагрузки и наблюдайте за поведением масштабирования.
- Попробуйте разные размеры модели Gemma (соответственно настройте память и графический процессор)
- Реализовать мониторинг и оповещение для производственных развертываний
- Изучите возможности многорегионального развертывания для обеспечения глобальной доступности
🧹 Уборка
Чтобы избежать дополнительных расходов, удалите ресурсы после завершения работы:
gcloud run services delete production-adk-agent --region=europe-west1
gcloud run services delete ollama-gemma3-270m-gpu --region=europe-west1
📖 Ресурсы
- Стартовый репозиторий
- Комплексное решение
- Документация Google ADK
- Руководство по тестированию ADK — полный справочник по конечным точкам API ADK и шаблонам тестирования
- Нагрузочное тестирование в облаке
- Документация по комплекту разработки агентов (ADK)
- Документация Cloud Run GPU
- Библиотека моделей Оллама
- Документация Google Cloud Trace
- Лучшие практики безопасности Cloud Run
- Менеджер пакетов UV Python
- Фреймворк нагрузочного тестирования Locust