使用Amazon Nova Sonic设计可扩展的语音代理:多代理、工具与会话分段
本文介绍了如何使用Amazon Nova Sonic、Amazon Bedrock AgentCore和Strands BidiAgent构建可扩展、可维护的语音代理。文章详细阐述了三种架构模式:通过AgentCore Gateway直接调用工具、使用子代理进行额外推理、以及通过会话分段实现超低延迟。每种模式都分析了权衡和最佳实践,以帮助组织实现快速、自然、可靠的语音体验。
设计可扩展语音代理的模式对于需要提供快速、自然且可靠语音体验的组织至关重要。许多团队面临高延迟、管理实时音频以及协调多个代理处理复杂工作流的挑战。
本文介绍如何使用Amazon Nova Sonic、Amazon Bedrock AgentCore和Strands BidiAgent构建可扩展且可维护的语音代理,以高效应对这些挑战,实现更灵敏、更智能的客户互动。
我们将探讨三种流行的语音代理架构模式,重点分析其权衡和最小化延迟的最佳实践。
构建块概览
在深入架构模式之前,先简要介绍本文示例解决方案中使用的三个关键组件:
- Amazon Nova Sonic:一种基础模型,可为生成式AI应用创建自然、类人的语音到语音对话。用户可通过语音实时与AI交互,具备理解语气、自然对话流程以及执行操作的能力。
- Amazon Bedrock AgentCore Runtime:一个无服务器托管环境,用于AI代理。您将代理打包为容器,部署到AgentCore Runtime,它负责处理扩展、会话隔离和计费。对于语音代理,它提供双向WebSocket流(带SigV4认证)、微虚拟机级别会话隔离以避免嘈杂邻居延迟峰值、用于共享工具托管的AgentCore Gateway(使用模型上下文协议MCP)、跨会话的持久内存以及针对语音特定指标的遥测。
- Strands Agents:一个用于构建AI代理的开源框架。其BidiAgent类是将Nova Sonic与应用程序集成的选项之一,它管理双向流生命周期、路由工具调用并处理会话管理。
三种集成模式:工具、代理即工具(子代理)与会话分段
现代语音系统不再构建单一全功能代理,而是越来越多地由工具驱动代理、充当工具的子代理以及隔离提示、内存和权限的会话分段策略组成。这些模式允许团队将大型助手分解为更小、更专业且可复用的组件,同时保持清晰的安全边界。
在运行以下示例之前,请安装Python和所需依赖项(包括strands-agents和boto3),并确保IAM设置具有所需服务的必要权限。完整示例请参阅GitHub仓库。
模式1:AgentCore Gateway——低延迟工具选择
工具调用是指语音代理将输入发送到外部函数或服务,处理并返回输出。它使代理能够快速安全地执行任务,如查询数据库或触发服务,无需额外的推理步骤。
使用AgentCore Gateway,您可以将现有业务逻辑公开为工具,Nova Sonic可在对话中直接调用这些离散函数。语音模型选择调用哪个工具,传递参数,获取结果并语音回复。模型与工具之间没有中间推理层。
AgentCore Gateway将MCP服务器托管为管理端点。MCP是协议,AgentCore Gateway是运行它们的AWS功能。语音代理通过网关ARN进行连接。
当用户说“我的账户余额是多少?”时,Nova Sonic:理解语音意图,从可用MCP工具中选择get_account_balance,使用正确参数调用工具,然后语音回复结果。
权衡:Nova Sonic做出所有决策。如果工具调用需要多步验证、条件逻辑或链式操作,推理负担完全落在语音模型的系统提示上。对于简单工具这没问题,但对于复杂工作流则可能脆弱。
模式2:子代理——通过解耦代理进行额外推理
在子代理或代理即工具模式中,现有业务逻辑运行在自主代理中,每个代理拥有各自的模型、系统提示、工具和推理能力。语音编排器将整个任务委派给这些子代理,而不是调用单个工具。
从语音代理连接到子代理有多种方式:本地代理即工具(子代理在进程内运行,封装为@tool函数,无网络跳转)和远程代理通过A2A协议(子代理作为独立A2A服务器部署在AgentCore Runtime或远程服务器上,通过网络调用)。A2A是代理间通信的开放协议,支持不同框架构建的代理共享上下文和推理。
权衡:每次子代理调用都会增加延迟:子代理自身的模型推理加上其工具调用。在语音对话中,这意味着在子代理推理期间会有更长的静默。建议使用较小、高效的模型(如Amazon Nova 2 Lite)作为子代理以减少延迟。Amazon Nova 2 Sonic支持异步工具调用,因此对话可以在工具后台运行时自然继续。
模式3:会话分段——超低延迟
第三种方法不直接对应MCP或子代理模式,但专为延迟是首要关注的语音场景而设计。它不是委托外部工具或子代理,而是将对话划分为逻辑阶段,每个阶段使用独立的Nova Sonic会话、系统提示和工具集。当对话从一个阶段转换到下一个阶段(例如从身份验证到账户查询)时,关闭当前会话并打开一个具有不同提示和工具的新会话,在同一个WebSocket连接内完成。每个子语音代理可以使用自己的MCP网关、工具甚至子代理——关键区别在于它使用集中的提示和最小的工具表面,从而减少推理开销和延迟。
例如,一个银行语音助手包含三个阶段:身份验证、账户管理和抵押贷款查询。与其加载一个包含所有工具的庞大系统提示,不如将每个阶段作为独立的Nova Sonic会话运行。
权衡:会话分段无法跨阶段共享内存;每个段需要从头开始处理。在简单对话中,会话创建和启动开销可能超过收益。建议在对话边界清晰且阶段明确隔离的场景中使用。