- Дата публикации
Как собрать производительную multi‑agent систему на AWS: NVIDIA NIM, Strands Agents и Amazon Bedrock AgentCore
Что нового
AWS предлагает готовый референс для сборки производительных генеративных multi‑agent систем на трёх ключевых компонентах:
-
GPU‑инференс через NVIDIA NIM
- Запуск LLM на управляемых GPU‑бэкендах NVIDIA.
- Используются CUDA и TensorRT‑LLM для низкой латентности и высокой пропускной способности.
- Доступ через OpenAI‑совместимый Chat Completion API (build.nvidia.com), без кастомной интеграции под конкретную модель.
-
Оркестрация агентов через Strands Agents
- Фреймворк AWS для multi‑agent систем с явным описанием взаимодействий.
- Параллельный запуск нескольких агентов, управление control flow, агрегация результатов.
- Упаковка оркестратора и агентов в Docker‑контейнер.
-
Amazon Bedrock AgentCore Runtime, Memory и Observability
- Managed‑рантайм для агентов с чекпоинтингом и автоматическим восстановлением.
- Масштабирование до тысяч одновременных вызовов без ручного управления инфраструктурой.
- AgentCore Memory — общее состояние и история взаимодействий между вызовами агентов, поддержка мультитуровых диалогов.
- AgentCore Observability — визуализация каждого шага пайплайна, трассировка reasoning‑цепочек, аудит промежуточных ответов.
- Метрики (латентность, токены, ошибки) через Amazon CloudWatch.
-
Готовый пример: система ревью маркетинговых кампаний
- Три специализированных агента работают параллельно:
- persona‑reviewer — оценивает креатив с разных аудиторных перспектив, выдаёт "резонансные" оценки;
- validator — проверяет соответствие юридическим и бренд‑гайдлайнам;
- finalizer — агрегирует выводы и формирует итоговые рекомендации.
- React‑фронтенд с асинхронным опросом API и стримингом ответов по мере готовности.
- Полный пайплайн разворачивается через AWS SAM‑шаблон.
- Три специализированных агента работают параллельно:
-
Готовая инфраструктура для production
- Развёртывание через
sam build/sam deploy --guided. - Автоматическое создание API Gateway, Lambda, DynamoDB, S3, CloudFront, Bedrock AgentCore.
- Скрипты для настройки DynamoDB‑таблицы персон и деплоя фронтенда.
- Развёртывание через
Числовых бенчмарков (миллисекунды, токены в секунду, стоимость) в материале нет, но есть чёткий акцент на снижение латентности за счёт GPU и на масштабирование до тысяч параллельных запросов за счёт serverless‑архитектуры.
Как это работает
Общая архитектура
Система разбита на три слоя:
-
Инференс — NVIDIA NIM:
- Запускает оптимизированные LLM на GPU‑кластерах NVIDIA.
- Использует CUDA и TensorRT‑LLM для ускорения генерации и уменьшения latency.
- Предоставляет OpenAI‑совместимый Chat Completion API, к которому Strands обращается через обычные HTTP‑запросы.
-
Оркестрация и логика агентов — Strands Agents:
- Описывает, какие агенты когда вызываются, какие инструменты используют, как делятся контекстом.
- Обеспечивает параллельный запуск трёх агентов: persona reviewer, validator, finalizer.
- Управляет сборкой и агрегацией результатов в единый ответ.
- Вся логика упакована в Docker‑образ вместе с зависимостями.
-
Рантайм, память и наблюдаемость — Amazon Bedrock AgentCore:
- Runtime: запускает Docker‑контейнер с Strands агентами как управляемый сервис.
- Чекпоинтинг и восстановление: если выполнение прерывается, агент может продолжить с сохранённого шага.
- Автоматическое масштабирование под нагрузку.
- Memory: общая память для агентов и сессий.
- Хранит контекст между запросами, чтобы не пересчитывать одно и то же.
- Позволяет строить мультитуровые диалоги и сохранять историю.
- Observability:
- Визуальная трассировка шагов агента в консоли Bedrock AgentCore.
- Просмотр промежуточных промптов и ответов.
- Интеграция с CloudWatch для метрик и логов.
- Runtime: запускает Docker‑контейнер с Strands агентами как управляемый сервис.
Пример: система ревью кампаний
Пайплайн выглядит так:
- Пользователь загружает документ (например,
campaign_brief.md) через React‑фронтенд. - Фронтенд отправляет документ на API Gateway.
- API Gateway вызывает оркестратор на Strands Agents в AgentCore Runtime.
- Оркестратор параллельно запускает три агента:
- Persona reviewer:
- Берёт текст кампании и список персон из DynamoDB‑таблицы.
- Для каждой персоны вызывает NVIDIA NIM через Chat Completion API.
- Получает оценки "резонанса" и комментарии.
- Validator:
- Проверяет текст на соответствие юридическим и бренд‑гайдлайнам.
- Формирует список нарушений и рекомендаций.
- Finalizer:
- Собирает результаты двух предыдущих агентов.
- Формирует единый отчёт с рекомендациями по доработке.
- Persona reviewer:
- AgentCore Memory хранит контекст, чтобы при повторных запросах не терять историю и состояние.
- Фронтенд асинхронно опрашивает API и показывает ответы по мере завершения агентов.
Зависимости внутри Docker‑образа
Контейнер с агентами включает:
strands-agents— multi‑agent фреймворк AWS.strands-agents-tools— инструменты и утилиты агентов.requests— HTTP‑клиент для вызовов NVIDIA NIM и других API.bedrock-agentcore— интеграция с рантаймом, памятью и наблюдаемостью AgentCore.boto3— AWS SDK для Python для работы с DynamoDB, SSM, CloudWatch и др.
Наблюдаемость и метрики
Через Bedrock AgentCore Observability разработчик видит:
- Дерево вызовов агентов и инструментов.
- Временные характеристики каждого шага.
- Промежуточные промпты и ответы для отладки.
Через CloudWatch доступны:
- Латентность вызовов.
- Использование токенов.
- Частота ошибок.
Это помогает находить медленные участки пайплайна и контролировать стоимость.
Что это значит для вас
Для чего это хорошо подходит
-
Автоматизация ревью контента
- Маркетинговые кампании, бренд‑гайдлайны, юридические проверки.
- Сценарий из примера можно адаптировать под модерацию UGC, ревью документов, проверку текстов на соответствие внутренним политикам.
-
Сложные цифровые ассистенты
- Когда одного LLM‑запроса мало, и нужно несколько специализированных ролей: эксперт по продукту, юрист, аналитик.
- Strands Agents позволяют явно описать эти роли и их взаимодействие, а AgentCore Memory — сохранить контекст диалога.
-
RAG‑пайплайны и цепочки рассуждений
- Можно подключить retrieval‑агенты, агентов‑планировщиков, агентов‑верификаторов.
- Параллельное выполнение снижает общее время ответа по сравнению с последовательным вызовом.
-
Production‑нагрузка с тысячами одновременных запросов
- AgentCore Runtime и serverless‑инфраструктура снимают необходимость вручную управлять кластерами.
- Чекпоинтинг и восстановление упрощают работу под реальной нагрузкой.
Когда это может быть избыточно
-
Простой чат‑бот или один LLM‑запрос
- Если вам нужен только один промпт к GPT‑подобной модели, без инструментов и нескольких ролей, 3‑слойная архитектура с AgentCore, Strands и NIM будет слишком тяжёлой.
-
Жёсткие ограничения по инфраструктуре
- Стек завязан на AWS (Lambda, API Gateway, DynamoDB, S3, CloudFront, Bedrock AgentCore) и NVIDIA NIM через build.nvidia.com / AWS Marketplace.
- Если вы не можете использовать AWS или сторонние облака, этот подход не подойдёт.
-
Низкий бюджет на эксперименты
- GPU‑инференс через NVIDIA NIM и многокомпонентная архитектура увеличивают стоимость по сравнению с одним CPU‑сервисом или минимальным LLM‑API.
- Для небольших pet‑проектов проще начать с одного управляемого LLM‑API без multi‑agent‑слоя.
Доступность и юридические нюансы
- Для использования NVIDIA NIM нужно принять NVIDIA AI Enterprise EULA. Это делается при подписке через AWS Marketplace или регистрации в NGC.
- Весь стек завязан на AWS‑сервисы. При ограничениях на доступ к AWS или необходимости держать всё on‑premise придётся искать альтернативы.
Если вы разрабатываете:
- маркетинговые платформы,
- корпоративных ассистентов,
- системы автоматического ревью документов,
— этот пример можно почти напрямую адаптировать под ваши задачи.
Место на рынке
Материал описывает архитектуру и интеграцию, а не даёт числовые сравнения с GPT‑4o, Claude 3 и другими LLM‑сервисами по скорости, цене или качеству ответов.
По позиции в экосистеме:
- NVIDIA NIM — это управляемый слой GPU‑инференса: альтернатива самостоятельному развёртыванию моделей на своих GPU или использованию LLM‑API без контроля над инфраструктурой.
- Strands Agents — фреймворк для multi‑agent оркестрации внутри AWS, ориентированный на инструментальные пайплайны и явное моделирование взаимодействий.
- Amazon Bedrock AgentCore — managed‑рантайм и обвязка вокруг агентов: память, наблюдаемость, чекпоинтинг, масштабирование.
Если сравнивать подход на уровне архитектуры:
- В отличие от "монолитного" вызова одного LLM‑API, здесь есть разделение:
- слой инференса (NIM),
- слой логики агентов (Strands),
- слой рантайма и платформенных возможностей (AgentCore).
- Это упрощает независимое масштабирование и замену компонентов: можно менять модель в NIM, не трогая оркестратор.
Чётких цифр по тому, насколько NIM быстрее или дешевле конкретных моделей вроде GPT‑4o или Claude 3, в материале нет. Архитектура ориентирована на производительность и масштабирование, но без прямых сравнительных бенчмарков.
Установка
Ниже — полный набор шагов для развёртывания решения в вашем AWS‑аккаунте. Команды приведены полностью, без сокращений.
Предварительные условия
Нужно подготовить рабочее окружение:
- Установленный AWS CLI и настроенные креденшелы.
- AWS SAM CLI для сборки и деплоя serverless‑приложения.
- Docker для сборки контейнера с агентами.
- Node.js и npm для фронтенда.
- Аккаунт с доступом к необходимым AWS‑сервисам.
- Принятая лицензия NVIDIA AI Enterprise при подписке на NVIDIA NIM (через AWS Marketplace или NGC).
Зависимости в Docker‑образе
Strands‑агенты используют следующие Python‑пакеты:
strands-agents— AWS Strands multi‑agent framework.strands-agents-tools— инструменты и утилиты для агентов.requests— HTTP‑клиент.bedrock-agentcore— функциональность Amazon Bedrock AgentCore.boto3— AWS SDK для Python.
Шаг 1: Клонировать репозиторий
git clone <respository url>
cd aws-genai-campaign-review-strands-agentcore
Шаг 2: Настроить AWS‑креденшелы
aws configure
aws sts get-caller-identity
Убедитесь, что используемый IAM‑пользователь или роль имеют права на CloudFormation, Lambda, API Gateway, DynamoDB, S3, CloudFront, SSM, Bedrock AgentCore и др.
Шаг 3: Создать таблицу Amazon DynamoDB для персон
Сделать скрипт исполняемым:
chmod +x scripts/setup_persona_table.sh
Запустить скрипт:
./scripts/setup_persona_table.sh
Таблица будет использоваться persona‑reviewer‑агентом для загрузки аудиторий.
Шаг 4: Собрать AWS SAM‑приложение
sam build
SAM соберёт Lambda‑функции, Docker‑образ с агентами и подготовит шаблон для деплоя.
Шаг 5: Задеплоить инфраструктуру
Используйте guided‑режим и ответьте на вопросы (имя стека, имя агента, регион и т.д.):
sam deploy --guided
Будут созданы:
- API Gateway,
- Lambda‑функции для оркестратора и деплоя агента,
- S3‑бакеты для фронтенда и артефактов,
- CloudFront‑дистрибутив,
- DynamoDB‑таблица,
- ресурсы для AgentCore Runtime, Memory и Observability.
Шаг 6: Получить выходные параметры деплоя
aws cloudformation describe-stacks \
--stack-name <Your stack name> \
--query 'Stacks[0].Outputs' \
--output table
Сохраните значения:
ApiEndpoint— HTTP API URL.CampaignOrchestratorApi— Agent API URL.CloudFrontURL— URL фронтенда.FrontendBucket— имя S3‑бакета для фронта.
Шаг 7: Задеплоить агента в AgentCore Runtime
Вызовите API деплоя агента:
curl -X POST <DeployAgentApiEndpoint> \
-H "Content-Type: application/json" \
-d '{"action":"deploy","agent_name":"<your agent name>"}'
Процесс занимает около 5 минут. API Gateway отвалится по таймауту на 29 секунде, но Lambda продолжит выполнение.
Следите за логами:
aws logs tail /aws/lambda/deploy-agentcore \
--region <your AWS region> \
--follow
Ждите сообщений:
Agent Core Runtime is READY!Wrote Agent ARN to SSM.
Проверьте, что ARN агента записан в SSM Parameter Store:
aws ssm get-parameter \
--name /agentcore/<your agent name>/agent-arn \
--region <your AWS region>
Шаг 8: Настроить окружение фронтенда
Получите URL‑ы API:
API_URL=$(aws cloudformation describe-stacks --stack-name <your stack name> \
--query 'Stacks[0].Outputs[?OutputKey==`ApiEndpoint`].OutputValue' \
--output text)
AGENT_API_URL=$(aws cloudformation describe-stacks --stack-name <your stack name> -review \
--query 'Stacks[0].Outputs[?OutputKey==`CampaignOrchestratorApi`].OutputValue' \
--output text)
Создайте .env для фронта:
cat > .env << EOF
VITE_API_URL=$API_URL
VITE_AGENT_API_URL=$AGENT_API_URL
VITE_AWS_REGION=<your AWS region>
EOF
Шаг 9: Собрать и задеплоить фронтенд
Установите зависимости:
npm install
Соберите фронтенд:
npm run build
Получите имя бакета для фронта:
FRONTEND_BUCKET=$(aws cloudformation describe-stacks --stack-name unified-campaign-review \
--query 'Stacks[0].Outputs[?OutputKey==`FrontendBucket`].OutputValue' \
--output text)
Синхронизируйте собранный фронт с S3:
aws s3 sync dist/ s3://$FRONTEND_BUCKET --delete
Необязательно, но полезно при обновлениях — сбросить кеш CloudFront:
DISTRIBUTION_ID=$(aws cloudfront list-distributions \
--query "DistributionList.Items[?Origins.Items[0].DomainName=='${FRONTEND_BUCKET}.s3.us-west-2.amazonaws.com'].Id" \
--output text)
aws cloudfront create-invalidation \
--distribution-id $DISTRIBUTION_ID \
--paths "/*"
Шаг 10: Открыть приложение
Получите CloudFront URL:
aws cloudformation describe-stacks --stack-name unified-campaign-review \
--query 'Stacks[0].Outputs[?OutputKey==`CloudFrontURL`].OutputValue' \
--output text
Откройте URL в браузере.
- В левой панели загрузите файл
campaign_brief.mdкак пример кампании. - В правой панели увидите результаты работы multi‑agent‑системы: оценки по персонам, проверки валидатора и финальные рекомендации.
Для анализа пайплайна зайдите в консоль Bedrock AgentCore Observability и выберите вашего агента. Там будет визуализация шагов, промптов и ответов.
Как запустить (краткий чек‑лист)
- Подготовьте AWS‑аккаунт, SAM, Docker, Node.js.
- Клонируйте репозиторий и настройте AWS CLI.
- Создайте DynamoDB‑таблицу персон через
setup_persona_table.sh. - Выполните
sam buildиsam deploy --guided. - Получите выходные значения стека, задеплойте агента в AgentCore Runtime.
- Настройте
.envдля фронта, соберите и задеплойте React‑приложение в S3. - Откройте CloudFront URL и протестируйте ревью кампаний.
Как убрать все ресурсы
Чтобы не платить за простаивающие ресурсы:
Удалите CloudFormation‑стек:
sam delete --stack-name unified-campaign-review
Удалите DynamoDB‑таблицу:
aws dynamodb delete-table \
--table-name PersonaTable \
--region us-west-2
Проверьте, не остались ли вручную созданные ресурсы (если вы что‑то меняли в шаблоне).
Эта архитектура даёт готовый каркас для тех, кто хочет собрать на AWS production‑multi‑agent систему с GPU‑инференсом, общей памятью и наблюдаемостью, не погружаясь в детали оркестрации контейнеров и масштабирования под нагрузкой.