使用 Amazon Bedrock 与 Nova Sonic 构建实时语音旅行助手
- 作者

- 姓名
- Nino
- 职业
- Senior Tech Editor
现代航空应用需要低延迟、自然顺畅的对话式语音接口,在严格遵守业务政策的前提下完成复杂的交易级工作流。旅客希望直接通过语音查询航班状态、改签座位或了解行李托运规则,而非在繁琐的 App 菜单中手动寻觅。
实现这一目标需要将实时语音处理、基于结构化政策文档的检索增强生成(RAG)以及带有明确用户确认机制的后端 API 变更操作高效组合。本文将提供一份完整的系统架构与代码落地指南,展示如何使用 Amazon Bedrock AgentCore、Amazon Nova Sonic、托管知识库(Managed Knowledge Bases)和 Model Context Protocol (MCP) 工具构建企业级语音旅行助手。
系统整体架构设计
该架构的核心理念是将实时语音音频流处理与业务逻辑编排、政策检索解耦。
[用户终端 App / WebRTC]
│
▼ (语音音频流)
[Amazon Nova Sonic] ◄──(双向语音到语音 streaming)
│
▼ (Token / 工具调用事件流)
[Amazon Bedrock AgentCore]
├──► [托管知识库 Managed KB] (RAG 政策检索)
└──► [MCP 服务网关] ──► [航空公司后端 REST API]
- 语音输入输出(Amazon Nova Sonic):通过 WebSocket 实现端到端的语音到语音(Speech-to-Speech)双向流处理,绕过传统的语音识别(STT)和文本转语音(TTS)分段流水线,将整体延迟控制在 300ms 以内。
- 智能体编排引擎(Amazon Bedrock AgentCore):维持对话上下文,执行意图路由,并在执行写操作前强制触发人机确认(Human-in-the-loop)交互。
- 政策规则引擎(Managed Knowledge Bases):基于向量索引的知识库,包含票务退改签规则、行李额度及休息室使用条件。
- 后端系统集成(MCP Server 网关):将航空公司后端微服务(如选座、航班状态查询、订单修改)以标准 Model Context Protocol(MCP)工具的形式暴露给 Agent。
在测试多模型架构或评估不同语音网关的延迟指标时,开发者可以通过 n1n.ai 获得高可用 LLM API 的统一接入,方便在多模型提供商之间快速进行工具调用与推理能力的对比测试。
第一步:配置用于政策问答的托管知识库
航空公司政策通常较为繁复且具有法律约束力。我们需要将政策 PDFIngest 到基于 Amazon OpenSearch Serverless 的 Amazon Bedrock 托管知识库中。
向量存储与分块策略
为了避免模型在回答行李费或退订窗口时产生幻觉,建议采用分层分块策略并设置 20% 的重叠度。
import boto3
bedrock_agent = boto3.client('bedrock-agent')
create_kb_response = bedrock_agent.create_knowledge_base(
name='airline-policy-kb',
description='包含航空公司行李、退款和改签政策的知识库',
roleArn='arn:aws:iam::123456789012:role/BedrockKBRole',
knowledgeBaseConfiguration={
'type': 'VECTOR',
'vectorKnowledgeBaseConfiguration': {
'embeddingModelArn': 'arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-embed-text-v2:0'
}
},
storageConfiguration={
'type': 'OPENSEARCH_SERVERLESS',
'opensearchServerlessConfiguration': {
'collectionArn': 'arn:aws:aoss:us-east-1:123456789012:collection/abc123xyz',
'vectorIndexName': 'policy-index',
'fieldMapping': {
'vectorField': 'policy_vector',
'textField': 'policy_text',
'metadataField': 'policy_metadata'
}
}
}
)
第二步:实现基于 MCP 协议的操作工具
Model Context Protocol(MCP)标准化了 Agent 读取航班数据和修改预订记录的方式。所有修改状态的工具(如 update_seat_assignment)均需要显式的二阶段确认。
用于航空业务的 TypeScript MCP 服务端实现
import \{ Server \} from "@modelcontextprotocol/sdk/server/index.js";
import \{ StdioServerTransport \} from "@modelcontextprotocol/sdk/server/stdio.js";
import \{ CallToolRequestSchema, ListToolsRequestSchema \} from "@modelcontextprotocol/sdk/types.js";
const server = new Server(
\{ name: "airline-ops-mcp