使用 Amazon Nova 2 Sonic 構建醫療預約語音助手
本文介紹如何利用 Amazon Nova 2 Sonic 和 Amazon Bedrock AgentCore 構建一個語音助手,用於處理醫療預約提醒對話。該助手能夠透過語音驗證患者身份、管理預約(確認、取消或改期)、收集就診前健康資訊,並在必要時轉接人工客服。它可大規模處理常規電話,有助於降低失約率。示例聚焦於智慧代理層面的語音對話與工具編排,並提供基於瀏覽器的測試介面。
如果您經營診所或醫院網路,您一定深知失約的成本。美國醫療行業的平均失約率在 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 堆疊將預置所有資源)並執行前端。有關詳細說明,請參閱原始文章。