全栈语音AI代理部署指南

本文详细介绍如何使用某中心Nova Sonic构建全栈语音AI代理,包含云端部署架构、实时音频处理流程、认证机制及自定义工具集成方案,提供完整的解决方案部署指南。

AI语音解决方案正在通过实现客户与AI代理之间的自然对话来改变呼叫中心,缩短等待时间,大幅降低运营成本,同时不牺牲客户期望的类人交互体验。随着某中心Nova Sonic在某中心Bedrock的发布,现在可以构建通过语音自然交流的复杂对话AI代理,无需单独的语音识别和文本转语音组件。某中心Nova Sonic是某中心Bedrock中的语音到语音模型,支持实时、类人的语音对话。

虽然许多早期的某中心Nova Sonic实现侧重于本地开发,但本解决方案提供了完整的云端部署架构,可作为构建实际概念验证应用的基础。该资源可通过某中心云开发工具包(某中心CDK)部署,并为使用预配置基础设施组件构建更多某中心Nova用例提供基础,同时允许自定义架构以满足特定业务需求。

本文展示如何为名为AnyTelco的虚构公司创建AI驱动的呼叫中心代理。该代理名为Telly,可以处理客户关于套餐和服务的查询,同时使用通过模型上下文协议(MCP)框架实现的自定义工具访问实时客户数据。

解决方案概述

下图提供了可部署解决方案的概览:

解决方案由以下层组成:

前端层 - 系统前端层构建时考虑了可扩展性和性能:

  • 某中心CloudFront分发充当Web应用的内容分发网络
  • 某中心简单存储服务(某中心S3)托管静态资产
  • UI处理音频流和用户交互

通信层 - 通信层促进无缝的实时交互:

  • 网络负载均衡器管理WebSocket连接。WebSocket在用户浏览器和服务器之间实现双向交互式通信会话,这对实时音频流应用至关重要
  • 某中心Cognito提供用户认证和JSON Web令牌(JWT)验证。某中心Cognito为Web和移动应用提供用户认证、授权和用户管理,无需构建和维护自己的身份系统

处理层 - 处理层构成系统的计算骨干:

  • 某中心弹性容器服务(某中心ECS)运行容器化后端服务
  • 某中心Fargate提供无服务器计算后端。编排由某中心ECS引擎提供
  • Python后端处理音频流并管理某中心Nova Sonic交互

智能层 - 智能层使用AI和数据技术为核心功能提供动力:

  • 某中心Bedrock中的某中心Nova Sonic模型处理语音处理
  • 某中心DynamoDB存储客户信息
  • 某中心Bedrock知识库将基础模型(FMs)与组织的数据源连接,允许AI应用引用特定于业务的准确、最新信息

以下序列图突出了用户发起对话时的流程。用户只需登录一次,但认证步骤3和4在用户每次开始新会话时都会发生。步骤6-12中的对话循环在整个对话交互过程中重复。步骤a-c仅在某中心Nova Sonic代理决定使用工具时发生。在没有工具使用的场景中,流程直接从步骤9转到步骤10。

先决条件

开始之前,请验证您具备以下条件:

  • Python 3.12
  • Node.js v20
  • npm v10.8
  • 某中心账户
  • 设置好的某中心CDK(有关先决条件和安装说明,请参阅某中心CDK入门)
  • 在某中心Bedrock中启用了某中心Nova Sonic(更多信息,请参阅添加或删除对某中心Bedrock基础模型的访问)
  • Chrome或Safari浏览器环境(撰写本文时不支持Firefox)
  • 可用的麦克风和扬声器

部署解决方案

您可以在GitHub存储库中找到解决方案和完整的部署说明。该解决方案使用某中心CDK自动化基础设施部署。使用以下代码终端命令在您的某中心命令行界面(某中心CLI)环境中开始:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
git clone https://github.com/aws-samples/sample-sonic-cdk-agent.git
cd nova-s2s-call-center

# 配置环境变量
cp template.env .env

# 使用您的设置编辑.env

# 部署解决方案
./deploy.sh

部署创建两个某中心CloudFormation堆栈:

  • 用于虚拟私有云(VPC)和网络组件的网络堆栈
  • 用于应用资源的堆栈

第二个堆栈的输出为您提供CloudFront分发链接,该链接将带您到登录页面。

您可以使用以下某中心CLI命令创建某中心Cognito管理员用户:

1
2
3
4
5
6
aws cognito-idp admin-create-user \
  --user-pool-id YOUR_USER_POOL_ID \
  --username USERNAME \
  --user-attributes Name=email,Value=USER_EMAIL \
  --temporary-password TEMPORARY_PASSWORD \
  --region YOUR_AWS_REGION

前述命令使用以下参数:

  • YOUR_USER_POOL_ID:您的某中心Cognito用户池ID
  • USERNAME:所需的用户名
  • USER_EMAIL:用户的电子邮件地址
  • TEMPORARY_PASSWORD:用户的临时密码
  • YOUR_AWS_REGION:您的某中心区域(例如,us-east-1)

使用来自CloudFront分发链接的临时密码登录,系统将要求您设置新密码。 您可以选择"开始会话"与您的助手开始对话。为您的用例尝试不同的提示和工具。

自定义应用

此解决方案的一个关键特性是其灵活性——您可以根据特定用例定制AI代理的能力。示例实现通过自定义工具和知识集成展示了这种可扩展性:

客户信息查找 - 使用电话号码作为键从DynamoDB检索客户档案数据 知识库搜索 - 查询某中心Bedrock知识库以获取公司信息、套餐详情和定价

这些特性展示了如何通过外部数据源和领域特定知识增强某中心Nova Sonic的功能。该架构设计用于在几个关键领域进行无缝自定义。

修改系统提示 解决方案包括一个UI,您可以在其中通过修改其系统提示来调整AI代理的行为。这使得能够快速迭代代理的个性、知识库和对话风格,而无需重新部署整个应用。

添加新工具 您还可以通过使用MCP框架实现其他工具来扩展AI代理的能力。该过程涉及:

  • 实现工具逻辑,通常作为新的Python模块
  • 使用@mcp_server.tool自定义装饰器向MCP服务器注册工具,并在/backend/tools/mcp_tool_registry.py中定义工具规范,包括其名称、描述和输入模式

例如,以下代码说明了如何添加知识库查找工具:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
@mcp_server.tool(
    name="lookup",
    description="针对知识库运行查询以检索信息。"
)
async def lookup_tool(
    query: Annotated[str, Field(description="要搜索的查询")]
) -> dict:
    """在知识库中查找信息"""
    results = knowledge_base_lookup.main(query)
    return results

装饰器处理向MCP服务器的注册,函数体包含您的工具的实现逻辑。

扩展知识库 解决方案使用某中心Bedrock知识库为AI代理提供公司特定信息。您可以使用以下内容更新此知识库:

  • 常见问题及其答案
  • 产品目录和规格
  • 公司政策和程序

清理

您可以使用以下命令删除堆栈:

1
2
3
4
# 移动到cdk文件夹,假设您在项目根文件夹中
cd cdk
# 顺序移除两个堆栈
npx cdk destroy --all

结论

AI代理正在改变组织处理客户服务的方式,解决方案能够同时处理多个对话、提供全天候的一致服务、即时扩展同时保持质量并降低运营成本。本解决方案通过为某中心Nova Sonic在某中心上的应用提供可部署基础,使这些好处变得可访问。该解决方案展示了AI代理如何有效处理客户查询、访问实时数据并提供个性化服务——同时保持客户期望的自然对话流程。

通过将某中心Nova Sonic模型与强大的云架构、安全认证和灵活的工具集成相结合,组织可以快速从概念转向概念验证。此解决方案不仅帮助构建语音AI应用,还帮助公司在各个行业推动更好的客户满意度和生产力。

要了解更多,请参阅以下资源:

  • 介绍某中心Nova Sonic:生成式AI应用的类人语音对话
  • 使用某中心Nova Sonic语音到语音模型
  • 某中心Nova Sonic研讨会
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计