AI News HubLIVE
站内改写3 分钟阅读

使用 Amazon Nova 2 Sonic 构建医疗预约语音助手

本文介绍如何利用 Amazon Nova 2 Sonic 和 Amazon Bedrock AgentCore 构建一个语音助手,用于处理医疗预约提醒对话。该助手能够通过语音验证患者身份、管理预约(确认、取消或改期)、收集就诊前健康信息,并在必要时转接人工客服。它可大规模处理常规电话,有助于降低失约率。示例聚焦于智能代理层面的语音对话与工具编排,并提供基于浏览器的测试界面。

来源AWS Machine Learning Blog作者: Jimin Kim

如果您经营诊所或医院网络,您一定深知失约的成本。美国医疗行业的平均失约率在 5% 到 30% 之间,具体取决于专科。每个空位都代表收入损失、医生空闲时间和患者护理延迟。传统的解决方法——逐个打电话确认或改期——无法规模化。

在本文中,您将学习如何使用 Amazon Nova 2 Sonic 和 Amazon Bedrock AgentCore 构建一个语音助手,处理预约提醒对话。该助手通过语音验证患者身份,管理预约(确认、取消或改期),收集就诊前健康信息,并在需要时转接人工客服。它能够大规模处理常规电话,有助于降低失约率。本示例聚焦于智能代理层面的语音对话和工具编排,并提供一个基于浏览器的测试界面。如需连接到实际电话线路进行外呼,您可以集成 Amazon Connect 等电话服务。

本指南将带您完成整个构建过程。您将获得一个在 Amazon Bedrock 上运行的工作语音助手,利用 Amazon Nova 2 Sonic 的语音到语音能力进行自然预约对话,以及使用 Strands Agents SDK 构建的七项医疗专用工具,用于患者身份验证、日程安排和转接。无服务器部署基于 Amazon Bedrock AgentCore,搭配 Amazon Cognito 身份验证、Amazon DynamoDB 持久化存储和 Amazon Simple Notification Service (SNS) 通知。一个基于 React 的前端通过经过身份验证的 WebSocket 连接流式传输双向音频。

解决方案概述

为了有效自动化预约电话,您需要一个能够在单次交互中处理多个步骤的对话式 AI 系统:验证身份、呈现预约详情、处理变更和收集健康信息。

传统方法会串联多个独立服务:语音转文字模型转录患者话语,基于文本的大语言模型生成回复,再通过文字转语音模型朗读出来。每次切换都会引入延迟并丢失上下文。转录步骤会丢弃语调、犹豫和紧迫性等语音线索。大语言模型只听到患者说了什么,而不是怎么说的。在医疗领域,患者的焦虑或困惑应改变助手的回应方式,这种信息丢失至关重要。

本助手通过结合两项 AWS 服务采取了不同的方法。

Amazon Nova 2 Sonic

Amazon Nova 2 Sonic 是 Amazon Bedrock 上可用的语音到语音模型,支持实时对话式 AI 和双向流式传输。它不再串联独立的转录、推理和合成服务,而是原生处理语音,因此语气和语速等语音上下文不会在转录中丢失。更多信息请参见相关博客。

对于本助手,Nova 2 Sonic 提供了几项关键能力。原生的语音到语音处理保留了跨轮次的语音细微差别,使助手能够捕捉犹豫或关切而不丢失上下文。工具调用准确性确保多步医疗工作流程的正确执行。低延迟双向流式传输保持对话响应迅速。模型还设计用于处理家庭和临床环境中常见的背景噪音以及带口音的英语。最后,多语言支持允许助手在对话中无缝切换至患者偏好的语言。

Amazon Bedrock AgentCore

Amazon Bedrock AgentCore 提供了一个无服务器、框架无关的运行时,用于在企业安全级别大规模运行 AI 代理。您将代理逻辑部署为容器,AgentCore 处理基础设施、扩展和 IAM 认证的 WebSocket 端点。本实现使用 Strands Agents SDK 的 BidiAgent 类管理与 Nova 2 Sonic 的双向语音流。

架构

下图展示了组件如何连接。React 前端通过 SigV4 签名的 WebSocket 连接与 Amazon Bedrock AgentCore 通信。Strands BidiAgent 由 Nova 2 Sonic 驱动,处理实时语音对话并调用医疗工具,这些工具读写 DynamoDB 表并发布到 Amazon SNS。

前端在浏览器中捕获麦克风音频并通过 WebSocket 流式传输至代理。为保护连接安全,前端通过 Amazon Cognito 进行用户身份验证,并使用 SigV4 签署每个请求。Amazon Bedrock AgentCore Runtime 承载容器化的 Strands BidiAgent,管理基础设施和扩展。Nova 2 Sonic 接收音频输入,进行对话推理,必要时调用工具,并生成音频响应。三个 DynamoDB 表存储患者记录、预约详情和可用时间段。Amazon SNS 在患者要求与人工交谈时发布转接通知。

整合实现

Strands SDK 处理双向语音流的复杂性。整个代理设置只需几行代码。您将工具列表和系统提示传递给 BidiAgent,指向 Nova 2 Sonic,SDK 即可管理流式会话。它接收音频,在模型决定时调用工具,并发送音频响应。

医疗工具

语音代理使用七项工具推进每次通话。每项工具都实现为使用 Strands Agents SDK 的 @tool 装饰器装饰的 Python 函数。Nova 2 Sonic 根据患者所说决定何时调用哪项工具。例如,当患者要求改期时,Nova 2 Sonic 调用 find_available_slots 查询 DynamoDB,通过语音呈现选项,然后调用 book_appointment_slot 完成更改。

这种基于工具的设计意味着您可以交换或扩展单个工具而无需重写整个代理。要添加新功能,只需编写一个新的 @tool 函数并更新系统提示。

代理处理通话的过程

当代理连接到患者时,BidiAgent 通过四个阶段管理整个对话。对话流程在代理的系统提示中定义,您可以根据用例自定义。以下是改期流程的摘要,展示了提示如何驱动多工具编排。Nova 2 Sonic 遵循这些指令决定何时调用各项工具。您可以通过编辑提示添加新流程或修改现有流程。

身份验证 – Nova 2 Sonic 问候患者并询问全名和社会安全号码后四位。在验证前,代理复述听到的内容并要求患者确认,以捕获姓名或数字的语音识别错误。authenticate_patient 工具查询 DynamoDB 验证身份。如果三次尝试后验证失败,代理将转接人工以确保安全。

预约管理 – 验证后,Nova 2 Sonic 呈现即将到来的预约详情,包括医生姓名、日期和时间。患者选择确认、取消或改期。如果改期,代理收集偏好(上午或下午、首选日期),查询可用时间段,呈现至多三个选项,并预订新时间。

健康信息收集 – 对于已确认或改期的预约,代理收集就诊前健康信息。它询问现有医疗状况、过敏史、是否有人陪同以及就诊的具体问题。每个问题一次一问,以保持自然对话流程。

转接 – 在任何时候,如果患者要求与人工交谈,代理记录原因,生成六位参考编号,并发布 Amazon SNS 通知,以便工作人员在 24 小时内回电。

部署代理

完整源代码在 GitHub 仓库中。按照以下步骤在您的 AWS 账户中部署代理。确保您已具备前提条件,然后克隆仓库、部署基础设施(AWS CDK 堆栈将预置所有资源)并运行前端。有关详细说明,请参阅原始文章。