AWS Machine Learning Blog

Build a voice travel concierge with Amazon Bedrock AgentCore, Managed Knowledge Base and Nova Sonic

6.9内容质量
Build a voice travel concierge with Amazon Bedrock AgentCore, Managed Knowledge Base and Nova Sonic

TL;DR · AI 摘要

Build a voice travel concierge with Amazon Bedrock AgentCore, Managed Knowledge Base and Nova Sonic Artificial Intellige...

核心要点

  • 主题聚焦:Build a voice travel concierge with Amazon Bedro
  • 来源:AWS Machine Learning Blog,建议结合原文判断细节。
  • AI 分析暂不可用,本条为保底评分与摘要。
#AI#编程#前端#后端#云计算
打开原文

使用 Amazon Bedrock AgentCore、托管知识库和 Nova Sonic 构建语音旅行助手 | 人工智能

使用 Amazon Bedrock AgentCore、托管知识库和 Nova Sonic 构建语音旅行助手

航空公司已拥有供旅客查询航班、选择座位和管理预订的应用和网站,而添加自然语音交互层可使这些操作通过语音指令完成。通过该语音交互层,旅客无需离开应用或切换界面,即可通过语音更改座位或查询延误信息。构建该系统需要在多个方面进行精心的工程设计。您需要实现双向音频传输并维持多轮对话的连贯性,同时在不将代理与后端系统紧密耦合的情况下访问现有后端系统,并在节假日周末等流量高峰时实现弹性扩展。

本文将展示如何通过三项托管服务为航空公司应用添加语音旅行助手。Amazon Bedrock AgentCore 是一个代理平台,可安全地大规模构建、部署和运营 AI 代理,支持选择框架和模型。Amazon Nova Sonic 是 Bedrock 上的语音到语音模型,用于实时语音交互。Amazon Bedrock 知识库是一项完全托管的检索增强生成服务,可基于您自己的文档提供答案。旅客只需语音输入,助手即可调取行程信息、更改座位、更新餐食偏好、解答政策问题,并根据请求转接人工客服。

该助手与现有界面并行运行而非替代现有界面,使旅客在同一会话中可在点击操作和语音交互之间自由切换。它基于按需扩展的服务构建,使您可以专注于用户体验而非基础设施。AI 层通过合成数据连接到示例航空后端系统,当您将此模式适配到自己的系统时可加速实施。该项目采用模块化设计,使您可以复用适配现有后端的组件,并将其作为工具暴露给代理。

您将学习如何执行以下操作:

  • 使用 AWS 云开发工具包(AWS CDK)在 AWS 上部署语音 AI 助手。
  • 使用 Strands Agents 框架和 Amazon Nova 2.5 Sonic(Bedrock 上的实时语音模型)构建代理,该代理运行在 AgentCore 运行时环境中,这是 Amazon Bedrock AgentCore 框架的一项功能。
  • 通过 AgentCore 网关(Amazon Bedrock AgentCore 的一项功能)使用模型上下文协议(MCP)将代理连接到后端服务。
  • 使用 Amazon Bedrock 知识库回答航空政策问题。
  • 通过参考编号和预估等待时间将旅客转接至人工客服。

解决方案概览

该架构将前端、AI 代理和后端服务分层解耦,使您能够独立开发和扩展各部分。MCP 是一种开放标准,用于将 AI 应用连接到外部工具和数据。它在代理和后端之间传输标准化消息,保持两者松耦合。

该解决方案部署以下服务:

  • Amazon Cognito 处理用户身份验证和临时 AWS 凭据,用于签署 API 访问。
  • Amazon Bedrock AgentCore 运行时环境按会话隔离运行代理,使用微虚拟机(microVM)技术。
  • Amazon Bedrock AgentCore 网关将后端端点作为可发现的 MCP 工具公开。
  • Amazon API Gateway 通过 AWS 身份和访问管理(IAM)授权将后端发布为 REST 端点。
  • AWS Lambda 负责行程安排、座位图、乘客更新、航班状态、忠诚度计划、政策查询和升级请求的业务逻辑处理。
  • Amazon DynamoDB 存储客户档案、预订信息、乘客数据、座位图、购买历史、偏好设置、对话记录和航班数据。
  • Amazon Bedrock 知识库通过基于航空公司的政策文件来回答政策相关问题。
  • Amazon Simple Email Service (Amazon SES) 发送电子邮件通知。
  • AWS Amplify 托管 React 前端。

架构

下图展示了解决方案架构,分为四个部分。

图1:涵盖后端、AgentCore 网关、AgentCore 运行时和前端的端到端架构

A部分涵盖后端基础设施。五个CDK堆栈部署了DynamoDB表、Lambda函数、API Gateway端点、Amazon Bedrock知识库和Amazon Cognito。

B部分涵盖AgentCore网关。一个CDK堆栈创建了支持MCP协议的Amazon Bedrock AgentCore网关,并通过名称将每个后端端点暴露为代理可调用的工具。

C部分涵盖AgentCore运行时。两个CDK堆栈负责部署运行时基础设施。Amazon Elastic Container Registry (Amazon ECR) 存储容器镜像,Amazon Simple Storage Service (Amazon S3) 存储源代码上传,AWS CodeBuild 生成ARM64 Docker镜像。Amazon Bedrock AgentCore运行时通过Strands Agents框架与Amazon Nova 2.5 Sonic配合,支持WebSocket连接。

D部分涵盖前端。一个CDK堆栈在AWS Amplify上部署React应用。

用户请求流程

  • 用户在浏览器或移动设备上打开托管在AWS Amplify上的网页应用。
  • 用户在登录页面输入凭证信息。Amazon Cognito验证请求并返回JSON Web Tokens (JWT) 和临时AWS凭证。
  • 前端通过SigV4签名的WebSocket连接连接到Amazon Bedrock AgentCore,启动语音管家会话。
  • 运行时通过Amazon Cognito验证令牌,并通过Amazon Bedrock初始化Amazon Nova 2.5 Sonic。
  • 用户发出语音请求。Amazon Nova 2.5 Sonic处理音频并触发工具调用。代理通过调用AgentCore网关使用MCP协议获取航班数据、管理预订和更新乘客偏好。
  • AgentCore网关将请求作为REST API调用转发给Amazon API Gateway,由其路由到AWS Lambda函数。
  • AWS Lambda函数查询Amazon DynamoDB表获取预订信息、乘客数据、座位图、忠诚度状态和航班信息。电子邮件通知通过Amazon SES发送。
  • Amazon Nova 2.5 Sonic生成上下文相关的语音响应,并通过AgentCore运行时通过WebSocket连接流式传输回用户。
  • 对于政策相关问题,AgentCore网关通过MCP知识库连接器直接查询Amazon Bedrock知识库。知识库将相关政策条文作为引用返回给代理。
  • 当用户请求人工代理时,AWS Lambda会在Amazon DynamoDB中记录升级请求并返回参考编号。AWS Amplify随后触发从用户设备发起的呼叫,将其连接到人工代理。
  • AWS CDK 通过单个脚本即可部署解决方案。构建过程会将代理源代码上传到 Amazon S3,并触发 AWS CodeBuild 生成容器镜像,该镜像会存储在 Amazon ECR 中用于 AgentCore 运行时。
  • Amazon CloudWatch 会从所有服务中收集日志、指标和警报,而 AWS 密钥管理服务(AWS KMS)会对静态数据进行加密。

先决条件

在开始之前,请确认已具备以下条件。

  • 一个 AWS 账户。
  • 在部署的 AWS 区域中,针对 Amazon Nova 2.5 Sonic 模型拥有 Amazon Bedrock 的模型访问权限。有关各区域支持的模型信息,请参阅 Amazon Bedrock 中的《按区域划分的支持模型》。Amazon Bedrock 知识库使用服务托管的嵌入模型,因此您无需单独申请嵌入模型访问权限。
  • 用于 AWS CDK 和 Lambda 函数的 Node.js 20.x 或更高版本。
  • 用于数据初始化和测试客户端的 Python 3.12 或更高版本。
  • 已配置凭证的 AWS 命令行界面(AWS CLI)2.x。
  • 已通过 npm install -g aws-cdk 安装的 AWS CDK CLI 2.x,并使用 npx cdk bootstrap 对账户进行引导。
  • 来自 aws-samples GitHub 仓库的配套代码。

使用 AWS CDK 部署解决方案

该解决方案通过单个 CDK 脚本进行部署。克隆仓库、配置 AWS 凭证并运行部署脚本。有关详细部署步骤,请参阅 GitHub 仓库中的 README。

示例航空公司数据模型

API Gateway 发布一个带有 IAM 授权端点和 Lambda 集成的 REST API。Amazon DynamoDB 以单数字毫秒级延迟和按需扩展能力存储示例航空公司数据模型。数据涵盖客户档案、预订信息、乘客信息、座位图、购买历史、偏好设置、对话记录和航班状态。

使用知识库回答政策问题

旅客会询问行李限额、变更费用、宠物运输和忠诚度条款等问题。解决方案通过 Amazon Bedrock 知识库的检索增强生成(RAG)功能来回答这些问题,确保回复基于您的航空公司政策文件。仓库中包含行李、取消和退款、变更和重新预订、票价等级规则、忠诚度条款、宠物运输、特殊协助和升级等政策的示例文档。

您将文档上传到 Amazon S3 并创建知识库一次即可。之后,Amazon Bedrock 会处理其余工作,包括嵌入、分块、索引、存储和检索。存储基于 Amazon S3 Vectors(Amazon S3 的一项功能)。智能解析会准备源 PDF 文件,使表格和结构化布局能够准确检索。当您的政策文档变更时,只需同步知识库,新内容即可立即生效。无需重新部署管道。

通过 AgentCore 网关直接连接知识库。您将知识库添加为 Connectors 的目标,并选择标准或智能检索模式,网关会将其作为命名的 MCP 工具与后端 API 工具一同暴露。代理在运行时会发现该工具并按名称调用,无需编写自定义 Lambda 或检索代码。有关设置步骤,请参阅《将知识库添加为网关目标》。

如需使用自己的政策文件,请将 PDF 或文本文件放入政策文档文件夹,然后重新部署知识库堆栈。

使用 Amazon Bedrock AgentCore 进行语音 AI 处理

每个会话都在AgentCore运行时作为受管理的容器运行,并通过微虚拟机隔离技术确保负载下旅客对话的独立性。AgentCore提供自动扩展、内置监控和会话路由功能。

在生产部署中,添加Amazon Bedrock Guardrails以过滤提示注入尝试并验证响应依据。该解决方案中的“先确认再写入”模式要求旅客在进行更改前进行确认。该模式结合知识库引用(将答案追溯到源文档)已形成负责任的AI实践基线。

代理使用Strands BidiAgents框架定义系统提示、工具和对话流程。Amazon Nova 2.5 Sonic为礼宾服务带来以下能力:

  • 跨口音的语音识别和对背景噪音的鲁棒性
  • 根据旅客语气调整的语音响应
  • 低延迟的双向流传输
  • 异步工具调用(在等待工具结果时生成临时语音响应,保持对话自然)
  • 支持插话和自然对话交替
  • 跨多轮对话的上下文保持

前端通过WebSocket以16kHz PCM格式向AgentCore运行时传输音频流。Amazon Nova 2.5 Sonic进行语音转录,代理选择合适的工具并通过MCP调用。AgentCore网关将每个MCP调用转换为REST请求,Lambda执行逻辑并返回结果,Amazon Nova 2.5 Sonic将这些结果整合为语音回复。

Amazon Nova 2.5 Sonic新特性

该解决方案使用Amazon Nova 2.5 Sonic,这是一个具备强大推理能力的实时语音到语音模型。对于需要调用后端工具并遵循详细系统提示的语音礼宾服务,这种推理能力体现在以下几个实际方面:

更优的工具调用和智能任务完成 – 代理在多步骤请求中可靠地选择和串联工具,例如在一个对话中先查询行程再更改座位。

更强的指令遵循和推理能力 – 模型严格遵循系统提示,包括格式规则(如逐个字符读取确认码和航班号)。

更精准的负责任AI处理 – 模型对真实旅客请求做出有帮助的响应,同时安全处理不当请求。

用户认证

该解决方案使用Amazon Cognito用户池和身份池实现基于角色的访问控制。旅客通过用户名和密码登录后获得JWT(JSON网络令牌),包括访问令牌和身份令牌。前端将身份令牌与Cognito身份池交换,获取包含访问密钥、秘密密钥和会话令牌的临时AWS凭证。这些凭证通过SigV4(签名版本4)对WebSocket连接到AgentCore运行时及API网关的请求进行签名。只有经过认证的旅客才能访问应用程序和服务API。

认证与WebSocket连接流程

前端使用临时AWS凭证建立SigV4签名的WebSocket连接到AgentCore运行时,并发送访问令牌进行身份验证。浏览器随后通过同一连接传输16kHz PCM音频流,并接收语音响应和工具通知。连接中没有中间服务器代理。

以下图表展示了浏览器、Amazon Cognito 与 AgentCore 运行时之间的认证和 WebSocket 连接流程。

图 2:旅客通过 Amazon Cognito 认证,浏览器通过 SigV4 签名的 WebSocket 连接到 AgentCore 运行时,Amazon Nova 2.5 Sonic 实现双向语音流传输

语音交互与动态工具调用

旅客询问座位信息时,Nova 2.5 Sonic 将请求转录为文字,代理根据需求选择工具。通过 AgentCore 网关使用 MCP 协议并行调用工具,网关将每个调用转换为 API 网关的 REST 请求。Lambda 函数查询 DynamoDB 并返回结果,Nova 2.5 Sonic 将整合后的语音响应实时播放。由于工具调用异步执行,数据加载时对话不会中断。

下图展示了代理如何处理语音请求并通过 AgentCore 网关动态调用后端工具:

图 3:语音请求依次经过 Nova 2.5 Sonic、AgentCore 网关、API 网关、Lambda 和 DynamoDB,语音响应回传至用户端

从知识库回答政策问题

当旅客询问行李政策时,代理通过 AgentCore 网关的原生连接器访问 Amazon Bedrock 知识库。知识库使用托管重排序器进行智能检索,返回相关政策条文作为引用。Nova 2.5 Sonic 整合答案并语音回复旅客。

下图展示了代理通过 Amazon Bedrock 知识库检索相关条文回答政策问题的流程:

图 4:Amazon Bedrock 知识库回答政策问题并语音回复旅客

转接真人客服

当代理无法满足请求或旅客主动要求时,礼宾服务将旅客转接至真人客服。旅客确认后,代理调用 EscalateToAgent 工具。Lambda 将转接记录写入 DynamoDB 并返回参考编号及预估等待时间。代理分享该编号后,Amplify 前端将呼叫客服热线。本示例未包含联络中心应用,因此转接真人客服依赖您配置的客服号码。

下图展示了旅客请求转接真人客服时的流程:

图 5:代理在 DynamoDB 记录转接请求,分享参考编号,前端向真人客服发起呼叫

礼宾服务操作演示

在浏览器中打开 Amplify URL 并使用 AppUser 凭据登录。点击麦克风按钮开始语音对话。代理将通过姓名问候您,并在后台调出您的行程信息。您可以自然对话来更改座位、查询延误、查阅政策或转接真人客服。以下视频演示了从问候到转接的完整会话流程。

整个对话通过单一 WebSocket 连接实现免动手操作。代理在执行任何更改前都会进行确认。它逐字播报航班号确保清晰可辨,并在后台调用后端工具实现无感知延迟。

资源清理

为避免持续计费,请删除已部署的资源。先预览删除内容,再执行清理操作。

code
./cleanup-all.sh --dry-run
./cleanup-all.sh

脚本按照相反顺序销毁资源,首先从前端开始,然后是AgentCore运行时、AgentCore网关,最后是后端基础设施。

结论

本文展示了如何在AWS上构建语音旅行管家。该方案使用Amazon Cognito进行身份验证,使用Amazon Bedrock AgentCore托管代理,使用API Gateway和Lambda处理业务逻辑,使用DynamoDB进行存储,使用Amazon Bedrock知识库提供政策问答。分层设计将前端、代理和后端分离,使各部分能够独立开发和扩展。管家通过MCP工具管理行程、座位变更、餐食偏好、航班状态、忠诚度问题、政策查询和人工代理升级。Amazon Nova 2.5 Sonic带来低延迟语音、并行工具调用和自然中断处理。按需付费定价和自动扩展使成本与流量同步,通过MCP集成可无需修改代理代码即可添加新的Lambda函数。要开始使用,请访问GitHub上的解决方案仓库并将其适配到您自己的航空系统中。

附加资源

  • 使用Amazon Nova Sonic语音到语音模型
  • 入门Amazon Bedrock AgentCore
  • 模型上下文协议规范
  • Amazon Bedrock知识库

作者简介

'"`