Дата публикации
ai_products

Как собрать производительную multi‑agent систему на AWS: NVIDIA NIM, Strands Agents и Amazon Bedrock AgentCore

Что нового

AWS предлагает готовый референс для сборки производительных генеративных multi‑agent систем на трёх ключевых компонентах:

  1. GPU‑инференс через NVIDIA NIM

    • Запуск LLM на управляемых GPU‑бэкендах NVIDIA.
    • Используются CUDA и TensorRT‑LLM для низкой латентности и высокой пропускной способности.
    • Доступ через OpenAI‑совместимый Chat Completion API (build.nvidia.com), без кастомной интеграции под конкретную модель.
  2. Оркестрация агентов через Strands Agents

    • Фреймворк AWS для multi‑agent систем с явным описанием взаимодействий.
    • Параллельный запуск нескольких агентов, управление control flow, агрегация результатов.
    • Упаковка оркестратора и агентов в Docker‑контейнер.
  3. Amazon Bedrock AgentCore Runtime, Memory и Observability

    • Managed‑рантайм для агентов с чекпоинтингом и автоматическим восстановлением.
    • Масштабирование до тысяч одновременных вызовов без ручного управления инфраструктурой.
    • AgentCore Memory — общее состояние и история взаимодействий между вызовами агентов, поддержка мультитуровых диалогов.
    • AgentCore Observability — визуализация каждого шага пайплайна, трассировка reasoning‑цепочек, аудит промежуточных ответов.
    • Метрики (латентность, токены, ошибки) через Amazon CloudWatch.
  4. Готовый пример: система ревью маркетинговых кампаний

    • Три специализированных агента работают параллельно:
      • persona‑reviewer — оценивает креатив с разных аудиторных перспектив, выдаёт "резонансные" оценки;
      • validator — проверяет соответствие юридическим и бренд‑гайдлайнам;
      • finalizer — агрегирует выводы и формирует итоговые рекомендации.
    • React‑фронтенд с асинхронным опросом API и стримингом ответов по мере готовности.
    • Полный пайплайн разворачивается через AWS SAM‑шаблон.
  5. Готовая инфраструктура для production

    • Развёртывание через sam build / sam deploy --guided.
    • Автоматическое создание API Gateway, Lambda, DynamoDB, S3, CloudFront, Bedrock AgentCore.
    • Скрипты для настройки DynamoDB‑таблицы персон и деплоя фронтенда.

Числовых бенчмарков (миллисекунды, токены в секунду, стоимость) в материале нет, но есть чёткий акцент на снижение латентности за счёт GPU и на масштабирование до тысяч параллельных запросов за счёт serverless‑архитектуры.

Как это работает

Общая архитектура

Система разбита на три слоя:

  1. Инференс — NVIDIA NIM:

    • Запускает оптимизированные LLM на GPU‑кластерах NVIDIA.
    • Использует CUDA и TensorRT‑LLM для ускорения генерации и уменьшения latency.
    • Предоставляет OpenAI‑совместимый Chat Completion API, к которому Strands обращается через обычные HTTP‑запросы.
  2. Оркестрация и логика агентов — Strands Agents:

    • Описывает, какие агенты когда вызываются, какие инструменты используют, как делятся контекстом.
    • Обеспечивает параллельный запуск трёх агентов: persona reviewer, validator, finalizer.
    • Управляет сборкой и агрегацией результатов в единый ответ.
    • Вся логика упакована в Docker‑образ вместе с зависимостями.
  3. Рантайм, память и наблюдаемость — Amazon Bedrock AgentCore:

    • Runtime: запускает Docker‑контейнер с Strands агентами как управляемый сервис.
      • Чекпоинтинг и восстановление: если выполнение прерывается, агент может продолжить с сохранённого шага.
      • Автоматическое масштабирование под нагрузку.
    • Memory: общая память для агентов и сессий.
      • Хранит контекст между запросами, чтобы не пересчитывать одно и то же.
      • Позволяет строить мультитуровые диалоги и сохранять историю.
    • Observability:
      • Визуальная трассировка шагов агента в консоли Bedrock AgentCore.
      • Просмотр промежуточных промптов и ответов.
      • Интеграция с CloudWatch для метрик и логов.

Пример: система ревью кампаний

Пайплайн выглядит так:

  1. Пользователь загружает документ (например, campaign_brief.md) через React‑фронтенд.
  2. Фронтенд отправляет документ на API Gateway.
  3. API Gateway вызывает оркестратор на Strands Agents в AgentCore Runtime.
  4. Оркестратор параллельно запускает три агента:
    • Persona reviewer:
      • Берёт текст кампании и список персон из DynamoDB‑таблицы.
      • Для каждой персоны вызывает NVIDIA NIM через Chat Completion API.
      • Получает оценки "резонанса" и комментарии.
    • Validator:
      • Проверяет текст на соответствие юридическим и бренд‑гайдлайнам.
      • Формирует список нарушений и рекомендаций.
    • Finalizer:
      • Собирает результаты двух предыдущих агентов.
      • Формирует единый отчёт с рекомендациями по доработке.
  5. AgentCore Memory хранит контекст, чтобы при повторных запросах не терять историю и состояние.
  6. Фронтенд асинхронно опрашивает 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 доступны:

  • Латентность вызовов.
  • Использование токенов.
  • Частота ошибок.

Это помогает находить медленные участки пайплайна и контролировать стоимость.

Что это значит для вас

Для чего это хорошо подходит

  1. Автоматизация ревью контента

    • Маркетинговые кампании, бренд‑гайдлайны, юридические проверки.
    • Сценарий из примера можно адаптировать под модерацию UGC, ревью документов, проверку текстов на соответствие внутренним политикам.
  2. Сложные цифровые ассистенты

    • Когда одного LLM‑запроса мало, и нужно несколько специализированных ролей: эксперт по продукту, юрист, аналитик.
    • Strands Agents позволяют явно описать эти роли и их взаимодействие, а AgentCore Memory — сохранить контекст диалога.
  3. RAG‑пайплайны и цепочки рассуждений

    • Можно подключить retrieval‑агенты, агентов‑планировщиков, агентов‑верификаторов.
    • Параллельное выполнение снижает общее время ответа по сравнению с последовательным вызовом.
  4. Production‑нагрузка с тысячами одновременных запросов

    • AgentCore Runtime и serverless‑инфраструктура снимают необходимость вручную управлять кластерами.
    • Чекпоинтинг и восстановление упрощают работу под реальной нагрузкой.

Когда это может быть избыточно

  1. Простой чат‑бот или один LLM‑запрос

    • Если вам нужен только один промпт к GPT‑подобной модели, без инструментов и нескольких ролей, 3‑слойная архитектура с AgentCore, Strands и NIM будет слишком тяжёлой.
  2. Жёсткие ограничения по инфраструктуре

    • Стек завязан на AWS (Lambda, API Gateway, DynamoDB, S3, CloudFront, Bedrock AgentCore) и NVIDIA NIM через build.nvidia.com / AWS Marketplace.
    • Если вы не можете использовать AWS или сторонние облака, этот подход не подойдёт.
  3. Низкий бюджет на эксперименты

    • 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 и выберите вашего агента. Там будет визуализация шагов, промптов и ответов.

Как запустить (краткий чек‑лист)

  1. Подготовьте AWS‑аккаунт, SAM, Docker, Node.js.
  2. Клонируйте репозиторий и настройте AWS CLI.
  3. Создайте DynamoDB‑таблицу персон через setup_persona_table.sh.
  4. Выполните sam build и sam deploy --guided.
  5. Получите выходные значения стека, задеплойте агента в AgentCore Runtime.
  6. Настройте .env для фронта, соберите и задеплойте React‑приложение в S3.
  7. Откройте 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‑инференсом, общей памятью и наблюдаемостью, не погружаясь в детали оркестрации контейнеров и масштабирования под нагрузкой.


Читайте также