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 堆棧將預置所有資源)並運行前端。有關詳細説明,請參閲原始文章。