

# 集成
<a name="sonic-integrations"></a>

Amazon Nova 2 Sonic 可与多种框架和平台集成，用于构建对话式人工智能应用程序。这些集成为常见使用案例提供了预先构建的组件和简化的 API。

## Strands Agents
<a name="sonic-strands-agents"></a>

Strands Agents 是一个简单但功能强大的 SDK，采用模型驱动的方法来构建和运行人工智能代理。从简易对话助手到复杂自主工作流，从本地开发到生产部署，Strands Agents 均可随您的需求灵活扩展。

有关 Strands 框架的完整文档，请访问 [Srands 官方文档](https://strandsagents.com/latest/documentation/docs/user-guide/quickstart/)。

Strands BidiAgent 通过持久化流式连接，实现实时音频与文本交互。与传统的请求-响应模式不同，此代理可保持长时间运行的对话，支持中断、并行处理和连续音频响应。

**先决条件：**
+ 已安装 Python 3.8 或更高版本。
+ 配置有对 Amazon Bedrock 的访问权限的 AWS 凭证
+ 基本了解 Python async/await 语法

**代码示例：**

### 代码示例
<a name="w2aac25c15b5c15b1"></a>

**安装：**

 安装所需的软件包：

```
pip install strands-agents strands-agents-tools
```

运行本示例：

```
import asyncio
from strands.experimental.bidi.agent import BidiAgent
from strands.experimental.bidi.io.audio import BidiAudioIO
from strands.experimental.bidi.io.text import BidiTextIO
from strands.experimental.bidi.models.novasonic import BidiNovaSonicModel
from strands_tools import calculator

async def main():
    """Test the BidirectionalAgent API."""
    # Audio and Text input/output utility
    audio_io = BidiAudioIO(audio_config={})
    text_io = BidiTextIO()
    
    # Nova Sonic model
    model = BidiNovaSonicModel(region="us-east-1")
    
    async with BidiAgent(model=model, tools=[calculator]) as agent:
        print("New BidiAgent Experience")
        print("Try asking: 'What is 25 times 8?' or 'Calculate the square root of 144'")
        
        await agent.run(
            inputs=[audio_io.input()],
            outputs=[audio_io.output(), text_io.output()]
        )

if __name__ == "__main__":
    try:
        asyncio.run(main())
    except KeyboardInterrupt:
        print("\nConversation ended by user")
    except Exception as e:
        print(f"Error: {e}")
        import traceback
        traceback.print_exc()
```

### 1. 导入：所需模型
<a name="w2aac25c15b5c15b3"></a>

```
from strands.experimental.bidi.agent import BidiAgent 
from strands.experimental.bidi.io.audio import BidiAudioIO 
from strands.experimental.bidi.io.text import BidiTextIO 
from strands.experimental.bidi.models.novasonic import BidiNovaSonicModel 
from strands_tools import calculator
```
+ BidiAgent：编排双向对话的主代理类
+ BidiAudioIO：处理语音交互的音频输入和输出
+ BidiTextIO：为转录和响应提供文本输出
+ BidiNovaSonicModel：Nova 2 Sonic 模型包装器
+ Calculator：用于数学运算的预构建工具

### 2. 配置音频与文本 I/O
<a name="w2aac25c15b5c15b5"></a>

```
audio_io = BidiAudioIO(audio_config={}) 
text_io = BidiTextIO()
```

BidiAudioIO 管理麦克风输入和扬声器输出，而 BidiTextIO 则在控制台中显示文本转录和响应。

### 3. 初始化模型
<a name="w2aac25c15b5c15b7"></a>

```
model = BidiNovaSonicModel(region="us-east-1")
```

创建 Nova Sonic 模型实例。region 参数指定部署模型所在的 AWS 区域。

### 4. 创建并运行代理
<a name="w2aac25c15b5c15b9"></a>

```
async with BidiAgent(model=model, tools=[calculator]) as agent: 
    await agent.run( 
        inputs=[audio_io.input()],  
        outputs=[audio_io.output(), text_io.output()] 
    )
```

创建代理时需配置以下项：
+ Model：要使用的 Nova 2 Sonic 模型
+ Tools：代理可调用的工具列表（如计算器）
+ Inputs：麦克风音频输
+ Outputs：音频输出到扬声器，文本输出到控制台

## 框架集成
<a name="sonic-framework-integrations"></a>

Amazon Nova 2 Sonic 可与各种框架和平台集成，用于构建高阶语音应用程序。以下示例展示了与主流框架的集成方案。

### Amazon Bedrock AgentCore
<a name="sonic-agentcore"></a>

Amazon Bedrock AgentCore 为部署具有企业级安全性和可扩展性的 Nova 2 Sonic 应用程序，提供了托管运行时环境。AgentCore 负责底层基础设施、身份验证及 WebSocket 连接管理，简化了实时语音人工智能应用程序的部署流程。

![](http://docs.aws.amazon.com/zh_cn/nova/latest/nova2-userguide/images/Agentcore-Architecture-Overview_11.png)


**主要特征**：
+ 双向流式传输：原生支持 Nova Sonic 全双工流接口，支持实时事件处理与低时延通信。
+ WebSocket 基础设施：可直接用于生产环境的 WebSocket 服务器，具备自动扩缩容、连接管理与故障恢复能力。
+ 容器部署：支持通过水平扩缩容与独立版本控制，将 Nova Sonic 应用程序以容器形式部署到托管基础设施。
+ 企业级安全：通过 IAM 与 SigV4 实现精细化身份验证，支持 VPC 隔离及完备的审计日志记录。

该架构展示了客户端应用程序如何通过 SigV4 身份验证，经由 WebSocket 连接到 AgentCore 运行时。容器化环境包含 WebSocket 服务器、应用逻辑与 Nova Sonic 客户端，所有组件均通过双向流式 API 与 Nova Sonic 进行通信。

**优点：**
+ 简化运维：专注于应用逻辑，由 AgentCore 负责基础设施、扩缩容与可靠性保障。
+ 企业级安全：内置身份验证、授权与合规特性，适配生产环境部署。
+ 成本效益：按需付费，支持自动扩缩容与资源优化。
+ 开发人员工作效率：通过托管式 WebSocket 基础设施和容器部署缩短投产时间。

**使用案例**
+ 具有安全身份验证功能的客户服务语音助手
+ 需要 IAM 集成的企业语音应用程序
+ 具有隔离部署功能的多租户语音平台
+ 需要合规性和审计跟踪记录的支持语音的应用程序

有关使用 AgentCore 部署 Nova Sonic 的详细文档，请访问 [Amazon Bedrock AgentCore 文档](https://aws.amazon.com/bedrock/agentcore/)。

### LiveKit
<a name="sonic-livekit"></a>

LiveKit 是一款开源平台，用于构建实时音频和视频应用程序。与 Amazon Nova 2 Sonic 的集成使开发人员无需管理复杂的音频管道或信令协议，即可构建对话式语音接口。

 有关详细的实现示例与代码示例，请访问 [LiveKit AWS 集成文档](https://docs.livekit.io/agents/integrations/aws/)。

![](http://docs.aws.amazon.com/zh_cn/nova/latest/nova2-userguide/images/LiveKit-Architecture-Overview_9.png)


**工作原理：**
+ 客户端层：网络、移动或桌面应用程序使用 LiveKit 的客户端 SDK 进行连接，这些软件开发工具包处理音频采集、WebRTC 流式传输和播放。
+ LiveKit 服务器：充当实时通信中心，管理 WebRTC 连接，路由音频流，并通过低延迟优化处理会话状态。
+ LiveKit Agent：基于 Python 的代理，从服务端接收音频，经 Nova Sonic 插件处理后，以流式方式返回响应。包括语音活动检测与轮次管理等内置功能。
+ Amazon Nova 2 Sonic：通过双向流式 API 处理音频流，执行语音识别、自然语言理解以及使用合成语音生成对话回复。

### Pipecat
<a name="sonic-pipecat"></a>

Pipecat 是一个用于构建语音和多模态对话式人工智能应用程序的框架。该框架提供了基于管道的模块化架构，可编排多个组件，使用 Amazon Nova Sonic 和其他 AWS 服务创建智能语音应用程序。

有关详细的实现示例与代码示例，请访问 [PipeCat AWS 集成文档](https://docs.pipecat.ai/server/services/s2s/aws)。

**主要特征**：
+ 管道架构：基于 Python 的模块化框架，用于合成语音人工智能组件，包括 ASR、NLU、TTS 等。
+ Pipecat 流程：用于构建复杂对话逻辑和工具执行的状态管理框架。
+ WebRTC 支持：内置与 Daily 和其他 WebRTC 提供商的集成，用于实时音频流式传输。
+ AWS 集成：原生支持 Amazon Bedrock、Amazon Transcribe 与 Amazon Polly。

![](http://docs.aws.amazon.com/zh_cn/nova/latest/nova2-userguide/images/Pipecat-Architecture-Overview_10.png)


此架构包括：
+ WebRTC 传输：实现客户端设备与应用程序服务器间的实时音频流式传输。
+ 语音活动检测（VAD）：Silero VAD 支持可配置的语音检测与噪声抑制。
+ 语音识别：Amazon Transcribe 实现精准、实时的语音转文本。
+ 自然语言理解：部署在 Bedrock 上的 Amazon Nova Pro，推理经过低延迟优化。
+ 工具执行：采用 Pipecat Flows 实现 API 集成与后端服务调用。
+ 回复生成：采用 Amazon Nova Pro，生成连贯、贴合上下文的应答内容。
+ 文本转语音：搭载生成式语音的 Amazon Polly，输出自然逼真的语音。

### 在 AWS 上部署
<a name="sonic-deploy-aws"></a>

借助 AWS CDK（云开发工具包），以基础设施即代码方式将 Nova Sonic 应用程序部署到 AWS。该方案可实现可复用、可版本控制的部署，并内置行业最佳实践。

部署选项
+ Amazon ECS（弹性容器服务）：全托管式容器编排服务，集成应用程序负载均衡器，支持自动扩缩容与无服务器 Fargate 运行模式。
+ Amazon EKS（弹性 Kubernetes 服务）：托管式 Kubernetes，适用于复杂编排、高级网络、多区域部署及丰富的工具生态体系。
+ AWS CDK：AWS CDK 支持使用熟悉的编程语言定义云基础设施。

有关使用 AWS CDK 部署 Nova Sonic 的完整生产就绪型示例，请参阅 GitHub 上的[语音转语音 CDK 示例](https://github.com/aws-samples/generative-ai-cdk-constructs-samples/tree/main/samples/speech-to-speech)。此示例演示：

![](http://docs.aws.amazon.com/zh_cn/nova/latest/nova2-userguide/images/cdk-12.png)

+ 使用 TypeScript 完成 CDK 基础设施设置
+ 用于实时通信的 WebSocket 服务器实现
+ 使用 ECS 与 Fargate 部署容器
+ 用于提供 WebSocket 支持的应用程序负载均衡器配置
+ VPC 网络与安全组设置
+ CloudWatch 监控与日志记录
+ 生产部署最佳实践

### 多代理系统
<a name="sonic-multi-agent"></a>

多代理架构是一种广泛采用的模式，用于设计处理复杂任务的人工智能助手。在基于 Nova 2 Sonic 构建的语音助手中，该架构可协调多个专用代理；各代理独立运行，从而实现并行处理、模块化设计与可扩展方案。

Nova Sonic 在多代理系统中充当编排工具，主要执行两大核心功能：

对话流程管理：确保在进入对话下一环节前，完成所有必要信息的收集。

意图分类：分析用户咨询内容，并将其分转接到对应的专用子代理处理。

![](http://docs.aws.amazon.com/zh_cn/nova/latest/nova2-userguide/images/Banking-Assistant_13.png)


上图展示了使用多代理架构的银行语音助手。对话流程先以问候开场并采集用户姓名，再通过专用子代理处理银行或按揭贷款相关咨询。

对话流程示例：

1. 用户接入语音助手。

1. Nova 2 Sonic：“您好！请问您怎么称呼？”

1. 用户：“我叫 John”

1. Nova 2 Sonic：“您好，John。今天有什么可以帮您？”

1. 用户：“我想查询账户余额”

1. Nova 2 Sonic：[转接到身份验证代理]

1. 身份验证代理：“请提供您的账号”

1. 用户：“12345”

1. 身份验证代理：[正在验证身份]

1. Nova 2 Sonic：[转接到银行代理]

1. 银行代理：“账户当前余额为 5,431,10 美元”

虽然本示例展示了基于部署在 Amazon Bedrock AgentCore 上的 Strands Agents 框架实现的子代理，但该架构具备高度灵活性。您可以选择：
+ 首选代理框架
+ 任何 LLLM 提供商
+ 自定义托管选项
+ 不同的编排模式

**优点：**
+ 模块化：各代理专注于特定领域，便于系统维护与更新。
+ 可扩展性：需改动现有代理即可新增代理，支持系统按需扩展。
+ 并行处理：多代理可同步运行，缩短复杂查询的响应时长。
+ 专业化：各代理可针对专属任务优化，适配最优工具与知识库。
+ 故障隔离：单个代理故障不影响其他模块，提升系统整体可靠性。

有关更多详情与代码示例，请参阅[此博客](https://aws.amazon.com/blogs/machine-learning/building-a-multi-agent-voice-assistant-with-amazon-nova-sonic-and-amazon-bedrock-agentcore/)。

有关实操示例，请参阅 [Nova Sonic 讲习会多代理实验室](https://catalog.workshops.aws/amazon-nova-sonic-s2s/en-US/02-repeatable-pattern/05-multi-agent-agentcore)。

### 电话集成
<a name="sonic-telephony"></a>

Amazon Nova 2 Sonic 可与电话服务提供商对接，实现可通过通话访问的人工智能语音应用程序。本指南介绍其与 Twilio、Vonage 及其他基于 SIP 的系统的集成方案，用于搭建联络中心解决方案与语音代理。

**Twilio**：云通信平台，提供可编程语音与媒体流能力。

**Vonage**：全球通信 API 服务商，支持语音、WebSocket 音频流及 SIP 连接。

AWS 提供完整的示例实现方案，在联络中心环境中结合实时分析与电话集成功能展示 Nova Sonic 的应用程序。

存储库：[支持电话功能的 Sonic 联络中心示例](https://github.com/aws-samples/sample-sonic-contact-center-with-telephony)