Многоканальный заказ с Amazon Bedrock AgentCore и Amazon Nova 2 Sonic

Прослушать статью

Введение

Построение системы голосового заказа, которая работает в мобильных приложениях, на веб-сайтах и в голосовых интерфейсах (подход omnichannel), связано с серьезными сложностями. Нужно обрабатывать двунаправленные аудиопотоки, сохранять контекст разговора на нескольких ходах, интегрировать backend-сервисы без жесткой связности и масштабироваться под пиковую нагрузку.

В этой статье показано, как построить полноценную систему многоканального заказа с помощью Amazon Bedrock AgentCore — agentic-платформы для создания, развертывания и эксплуатации эффективных AI-агентов в безопасном масштабе с использованием любого framework и foundation model — и Amazon Nova 2 Sonic. Вы развернете инфраструктуру, которая обрабатывает аутентификацию, принимает заказы и дает рекомендации на основе местоположения. Система использует управляемые сервисы, автоматически масштабирующиеся и снижающие операционные издержки при создании voice AI-приложений. В итоге у вас будет рабочая система, которая обрабатывает голосовые заказы через несколько точек взаимодействия с клиентом. Слой AI-оркестрации подключается к примеру backend-архитектуры с тестовыми данными меню, что дает хорошую стартовую точку для собственного проекта. Проект разбит на модули, чтобы компоненты можно было переиспользовать при интеграции с существующими backend API.

В этой статье вы узнаете, как:

  • развернуть многоканальную инфраструктуру Voice AI-заказов с помощью AWS Cloud Development Kit (AWS CDK)
  • реализовать агента на Strands с Amazon Nova 2 Sonic для обработки речи в реальном времени, размещенного в AgentCore Runtime
  • подключить AI-агента к backend-сервисам через Model Context Protocol (MCP) через AgentCore Gateway
  • протестировать систему на реалистичных сценариях заказа, включая рекомендации по точкам выдачи с учетом маршрута

Amazon Nova 2 Sonic — это foundation model speech-to-speech, доступная через Amazon Bedrock, которую можно использовать для голосового взаимодействия в реальном времени. В сочетании с Amazon Bedrock AgentCore вы получаете естественный голосовой заказ через все точки контакта с клиентом.

Обзор решения

Архитектура решения разделяет frontend, AI-агента и backend-сервисы на отдельные компоненты. Такое разделение позволяет разрабатывать и масштабировать каждый компонент независимо. MCP — это открытый стандарт для подключения AI-приложений к внешним источникам данных, инструментам и workflow. Он обеспечивает стандартизированное взаимодействие между агентом и backend-сервисами.

В решении будут развернуты:

  • Amazon Cognito — обеспечивает аутентификацию пользователей и выдает временные AWS credentials для безопасного доступа к API. При желании это можно заменить на собственный IDP, если он совместим с OAuth 2.0.
  • Amazon Bedrock AgentCore Runtime — размещает AI-агента с изоляцией microVM. Каждая пользовательская сессия выполняется в изолированной виртуальной машине, что сохраняет безопасность и производительность даже при высокой нагрузке. Это предотвращает влияние сессии одного клиента на производительность или данные другого.
  • Amazon Bedrock AgentCore Gateway — предоставляет безопасный способ для разработчиков создавать, развертывать, находить и подключать инструменты в масштабе, обеспечивая стандартизированную связь между агентом и бизнес-логикой без жесткой связности, чтобы можно было менять backend или добавлять новые инструменты без переписывания кода интеграции.
  • Amazon API Gateway — предоставляет backend-сервисы через endpoint’ы Representational State Transfer (REST) с авторизацией на основе AWS Identity and Access Management (IAM)
  • AWS Lambda — выполняет бизнес-логику для получения меню, обработки заказов и location-сервисов
  • Amazon DynamoDB — хранит профили клиентов, заказы, позиции меню и корзины покупок с задержкой на уровне единиц миллисекунд
  • AWS Location Services — предоставляет функции на основе геолокации для рекомендаций по выдаче
  • AWS Amplify — размещает frontend-приложение

Схема архитектуры

Следующая схема показывает архитектуру решения, которая состоит из трех ключевых секций:

Omnichannel Architecture Diagram

Секция A: backend-инфраструктура

Эта секция разворачивает пример ресторанной архитектуры как backend-сервисы с помощью infrastructure as code. Она создает хранилище данных для информации о клиентах, заказов, меню, корзин и местоположений. Также настраиваются location-сервисы для обработки адресов и картографии, Lambda-функции для бизнес-логики, API-слой для внешнего доступа и сервисы аутентификации и авторизации пользователей. Ресурсы развертываются в правильной последовательности зависимостей.

Секция B: AgentCore Gateway

Эта секция разворачивает инфраструктуру AgentCore Gateway. Она выделяет необходимые IAM-разрешения сервису, создает сервис AgentCore Gateway и настраивает интеграцию с API, чтобы backend-endpoint’ы были доступны агенту как инструменты.

Секция C: AgentCore Runtime и ECR image

Эта секция разворачивает среду AgentCore Runtime. Она создает Amazon ECR для хранения контейнеров, Amazon S3 для загрузки исходников, AWS CodeBuild для автоматизации сборки и необходимые IAM-разрешения. Сервис AgentCore Runtime настроен на использование WebSocket-протокола.

Секция D: AWS Amplify

Эта секция разворачивает frontend-приложение с помощью AWS Amplify. Она настраивает сервис хостинга Amplify с параметрами развертывания и генерирует необходимую frontend-конфигурацию на основе выходных данных backend. Собранное веб-приложение разворачивается и становится доступным по URL Amplify после завершения.

Поток пользовательского запроса:

  1. Пользователь открывает веб-приложение, размещенное в AWS Amplify, со своего браузера или мобильного устройства.
  2. Пользователь аутентифицируется в Amazon Cognito, используя имя пользователя и пароль, и получает JWT-токены (Access Token и ID Token).
  3. Frontend обменивает ID Token в Cognito Identity Pool на временные AWS credentials (Access Key, Secret Key, Session Token).
  4. Frontend открывает подписанное SigV4 WebSocket-соединение с AgentCore Runtime и отправляет Access Token первым сообщением для проверки личности.
  5. Агент, размещенный в AgentCore Runtime, проверяет Access Token через вызов Cognito GetUser API и извлекает подтвержденные имя, email и customerId клиента.
  6. AgentCore Runtime инициализирует модель Nova 2 Sonic в Amazon Bedrock и формирует персонализированный системный prompt на основе подтвержденного контекста клиента.
  7. AgentCore Runtime подключается к AgentCore Gateway как MCP client с помощью SigV4-аутентификации и обнаруживает доступные инструменты.
  8. Пользователь озвучивает заказ. Агент обрабатывает голосовой ввод через Nova 2 Sonic и вызывает инструменты асинхронно через AgentCore Gateway с использованием MCP.
  9. AgentCore Gateway предоставляет backend REST API как MCP-инструменты, чтобы агент мог находить и вызывать их по имени. Когда агент вызывает инструмент, AgentCore Gateway пересылает запрос как REST API-вызов в API Gateway, а тот направляет его в нужную Lambda-функцию. Lambda-функции обращаются к таблицам DynamoDB и AWS Location Services.
  10. Nova 2 Sonic генерирует контекстный голосовой ответ с учетом результатов инструментов и передает его пользователю по WebSocket-соединению.

Необходимые условия

Перед началом убедитесь, что у вас есть следующее:

  • AWS account
  • Foundation model (FM) access в Amazon Bedrock для Amazon Nova 2 Sonic в том же AWS Region, где будет развернуто решение
  • Node.js 20.x или новее (требуется для развертывания AWS CDK)
  • Python 3.13 или новее (требуется для runtime агента и скриптов развертывания)
  • AWS Command Line Interface (AWS CLI) 2.x, настроенный с учетными данными
  • AWS CDK CLI 2.x: npm install -g aws-cdk (требуется для развертывания инфраструктуры)
  • CDK bootstrapped в целевом аккаунте/регионе: npx cdk bootstrap
  • Boto3 1.38.0 или новее (требуется для поддержки сервиса bedrock-agentcore-control). Установите с помощью python3 -m pip install --upgrade boto3 botocore --break-system-packages
  • Дополнительные Python-пакеты: python3 -m pip install email-validator pyyaml --break-system-packages
  • Код из соответствующего aws-samples GitHub repo

Развертывание ресурсов решения с помощью AWS CDK

Склонируйте GitHub repository и перейдите в каталог проекта.

git clone https://github.com/aws-samples/sample-omnichannel-ordering-with-amazon-bedrock-agentcore-and-nova-sonic

cd sample-omnichannel-ordering-with-amazon-bedrock-agentcore-and-nova-sonic

Запустите скрипт развертывания. Обязательны оба параметра. На адрес электронной почты будет отправлен временный пароль для начального тестового пользователя Cognito.

./deploy-all.sh --user-email <your-email> --user-name "<Your Name>"

Скрипт сначала выполняет предварительные проверки, чтобы убедиться, что Node.js, Python, AWS CLI, CDK, учетные данные, CDK bootstrap и доступ к модели Bedrock Nova 2 Sonic уже настроены. Если какая-то проверка не пройдет, он сообщит, чего не хватает, и предложит автоматически установить то, что может.

После прохождения preflight скрипт выполняет пять шагов. Шаги 1–3 полностью автоматизированы. Шаг 4 (Synthetic Data) попросит указать местоположение — город, почтовый индекс или адрес, который будет центром для поиска ближайших ресторанов, тип кухни или еды для поиска (например, pizza, burgers, coffee shop, sandwich, tacos), использовать ли тот же адрес как домашний адрес клиента, а также подтвердить запись сгенерированных данных в DynamoDB. Шаг 5 (Password Setup) предложит при желании изменить временный Cognito-пароль, отправленный вам по email. Если вы выберете yes, нужно будет ввести временный пароль из письма и задать новый постоянный пароль, соответствующий политике Cognito (8+ символов, заглавная и строчная буквы, цифра, символ).

После завершения скрипт выводит URL frontend’а, например https://main.<app-id>.amplifyapp.com, который вы будете использовать для доступа к приложению.

Omnichannel CDK output

Понимание serverless-управления данными

API Gateway создает REST API, который соединяет frontend с backend-сервисами через восемь IAM-аутентифицированных endpoint’ов и интеграцию с Lambda.

Ваш backend использует пять таблиц DynamoDB, поддерживающих полный процесс заказа. Customers Table хранит профили (имя, email, телефон, уровень лояльности, баллы) для персонализированных рекомендаций. Orders Table хранит историю заказов с данными о местоположении и использует Global Secondary Index для запроса по местоположению при определении популярных позиций. Menu Table хранит позиции, зависящие от ресторана, с ценами и доступностью, которые меняются в зависимости от ресторана. Carts Table хранит временные корзины с TTL 24 часа для автоматической очистки. Locations Table хранит данные о ресторанах (координаты, часы работы, налоговые ставки) для расчетов заказа и рекомендаций. On-demand capacity в DynamoDB автоматически масштабируется вместе с трафиком.

Понимание location-сервисов

Location Services предоставляет функции на основе геолокации, которые помогают клиентам находить удобные точки выдачи. Система разворачивает три ресурса: Place Index (Esri) для геокодирования и поиска адресов, Route Calculator (Esri) для расчета маршрутов и времени объезда, а также Map (стиль VectorEsriNavigation) для интерактивной визуализации, оптимизированной для вождения.

Lambda-функции обеспечивают три возможности: Nearest Location Search находит ближайшие рестораны, отсортированные по расстоянию, используя GPS-координаты и формулу гаверсина. Route-Based Search определяет рестораны в пределах заданного времени объезда (по умолчанию 10 минут), используя фактическое время в пути, а не расстояние по прямой. Address Geocoding преобразует адреса в координаты, когда GPS недоступен.

Эти функции позволяют давать контекстные рекомендации вроде «Я нашел точку в 2 минутах от вашего маршрута» или «Ваш привычный ресторан находится в 5 милях отсюда».

Понимание обработки voice AI с Amazon Bedrock AgentCore

Ваш AI-агент обрабатывает голосовые взаимодействия через Amazon Bedrock AgentCore. Каждая пользовательская сессия выполняется в изолированной microVM, что сохраняет безопасность и производительность даже при высокой нагрузке. Это предотвращает влияние сессии одного клиента на производительность или доступ к данным другого. AgentCore обеспечивает автоматическое масштабирование, встроенный мониторинг и поддержку WebSocket для голоса в реальном времени.

Агент использует framework Strands для определения системных prompt’ов, инструментов и потока диалога. Nova 2 Sonic обеспечивает:

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

Поток голосовой обработки: аудиопотоки с frontend (16 kHz PCM) передаются по WebSocket в AgentCore Runtime. Nova 2 Sonic распознает речь, агент определяет intent и выбирает инструменты, вызывает их асинхронно через MCP, а AgentCore Gateway преобразует MCP-вызовы в REST API-вызовы. Lambda-функции выполняют бизнес-логику и возвращают результаты, которые агент включает в свой ответ. Nova 2 Sonic генерирует голосовой output, который потоково возвращается в frontend.

Такая архитектура минимизирует задержки в разговорном заказе.

Аутентификация пользователей

Решение использует user pools и identity pools Amazon Cognito для безопасного разграничения доступа на основе ролей. User pools управляют аутентификацией и группами. Identity pools выдают временные AWS credentials, привязанные к IAM-ролям. Пользователи входят в Cognito User Pool по имени пользователя и паролю и получают JSON Web Token (JWT) — Access Token и ID Token. Frontend обменивает ID Token в Cognito Identity Pool на временные AWS credentials (Access Key, Secret Key, Session Token). Эти credentials подписывают WebSocket-соединение с AgentCore Runtime и запросы к API Gateway с помощью Signature Version 4 (SigV4). Такая архитектура гарантирует, что к приложению и API заказов смогут получить доступ только аутентифицированные пользователи.

Поток WebSocket-соединения

Следующая sequence diagram показывает, как учетные данные аутентификации из предыдущего раздела устанавливают прямое соединение browser-to-AgentCore. Используя временные AWS credentials, frontend открывает подписанное SigV4 WebSocket-соединение с AgentCore Runtime и отправляет Access Token для проверки личности. Затем браузер передает аудио 16 kHz PCM и получает голосовые ответы, транскрипции и уведомления о вызове инструментов по тому же соединению. Это позволяет обойтись без серверного proxy.

Omnichannel Authentication and Connection flow

Голосовое взаимодействие и динамический заказ

Следующая sequence diagram показывает поток запроса клиента на заказ, демонстрируя, как запросы на естественном языке обрабатываются для синхронизированного ответа:

Omnichannel voice interaction and dynamic ordering flow

На схеме показан запрос клиента («Я хочу заказать»), который обрабатывается через асинхронный вызов инструментов. Агент параллельно вызывает несколько инструментов (GetCustomerProfile, GetPreviousOrders, GetMenu) через AgentCore Gateway, который преобразует их в REST-вызовы API Gateway. Lambda-функции обращаются к DynamoDB и возвращают результаты обратно через gateway. Затем Nova 2 Sonic формирует контекстный ответ с учетом всех результатов инструментов, создавая персонализированный опыт для клиента на протяжении всего разговора.

Пошаговый процесс заказа

Откройте URL frontend’а в браузере и войдите с учетными данными AppUser. После аутентификации нажмите кнопку микрофона, чтобы начать голосовой разговор с агентом по заказам. Агент приветствует вас по имени, получает ваше местоположение из браузера и в фоновом режиме подгружает ваши предыдущие заказы. Вы можете говорить естественно. Попросите повторить прошлый заказ, посмотреть меню, найти ближайшие точки выдачи по маршруту или собрать новый заказ с нуля. Агент отвечает голосом в реальном времени, обрабатывает вопросы по меню, добавляет позиции в корзину и подтверждает заказ с общей суммой и расчетным временем выдачи. Весь разговор происходит без рук через одно WebSocket-соединение. Агент вызывает backend-инструменты асинхронно, поэтому при получении данных нет пауз. Следующее видео демонстрирует полный сеанс заказа от приветствия до подтверждения.

Очистка

Если вы решите прекратить использование решения, удалите его и связанные ресурсы по следующим шагам:

Удаление стеков:

./cleanup-all.sh

Заключение

В этой статье показано, как построить систему многоканального заказа с использованием Amazon Cognito для аутентификации, Amazon Bedrock AgentCore для размещения агента, API Gateway для обмена данными, DynamoDB для хранения и Location Services для оптимизации маршрута. Трехслойная архитектура разделяет frontend, agent и backend-компоненты, что позволяет разрабатывать и масштабировать их независимо. Система поддерживает управление меню, корзину, программы лояльности, обработку заказов и location-сервисы через интеграцию MCP. Amazon Nova 2 Sonic обеспечивает голосовое взаимодействие с низкой задержкой, асинхронный вызов инструментов и обработку прерываний. Параллельный вызов инструментов сокращает время ожидания, распознавание речи работает с акцентами, персонализированные рекомендации используют историю заказов, а оптимизированные по маршруту точки выдачи помогают клиентам находить удобные остановки. Модель оплаты по факту использования и автоматическое масштабирование помогают контролировать затраты по мере роста нагрузки, а благодаря интеграции MCP вы можете адаптировать решение, добавляя новые Lambda-функции без изменения кода агента. Чтобы начать, перейдите в репозиторий решения на GitHub и адаптируйте решение под свои каналы заказов. Дополнительную информацию см. в документации Amazon Bedrock и статье Introducing Amazon Nova 2 Sonic.

Дополнительные ресурсы

Чтобы узнать больше об Amazon Bedrock AgentCore, Amazon Nova Sonic и других решениях, обратитесь к следующим ресурсам:


Материал — перевод статьи с английского.

Оригинал: Omnichannel ordering with Amazon Bedrock AgentCore and Amazon Nova 2 Sonic