O problema das consultas não realizadas
Quem trabalha com gestão de clínicas ou redes hospitalares conhece bem o impacto das faltas não avisadas. A taxa média de ausências no sistema de saúde americano varia entre 5% e 30%, dependendo da especialidade. Cada horário vazio representa receita perdida, tempo ocioso do profissional de saúde e atraso no atendimento ao paciente.
A solução tradicional — ligar para cada paciente individualmente para confirmar ou reagendar — simplesmente não escala. É aí que entra a proposta da AWS: um agente de voz baseado em Inteligência Artificial (IA) capaz de conduzir essas conversas de forma autônoma e natural.
A AWS publicou um tutorial detalhado mostrando como construir esse tipo de solução usando o Amazon Nova 2 Sonic em conjunto com o Amazon Bedrock AgentCore. O resultado é um agente que autentica pacientes por voz, gerencia agendamentos (confirmar, cancelar ou reagendar), coleta informações de saúde pré-consulta e escala para atendimento humano quando necessário.
Vale destacar que o tutorial foca no lado conversacional e de orquestração de ferramentas. Para conectar o agente a linhas telefônicas reais para discagem ativa, seria necessário integrar um serviço de telefonia como o Amazon Connect.
Por que o Amazon Nova 2 Sonic muda a abordagem
A abordagem convencional para agentes de voz encadeia três serviços separados: um modelo de transcrição converte a fala em texto, um Modelo de Linguagem de Grande Escala (LLM) gera a resposta, e um modelo de síntese de voz lê o texto em voz alta. Cada transferência entre etapas introduz latência e perde contexto — especialmente os sinais vocais como tom, hesitação e urgência.
No contexto da saúde, isso importa. A ansiedade ou confusão de um paciente deveria influenciar como o agente responde. Com a abordagem encadeada tradicional, o LLM só sabe o que o paciente disse, não como disse.
O Amazon Nova 2 Sonic resolve isso com processamento de voz nativo em um único modelo, disponível no Amazon Bedrock. Em vez de transcrever e depois raciocinar, o modelo processa a fala diretamente, preservando o contexto vocal ao longo de toda a conversa. Para mais detalhes sobre como o Nova 2 Sonic processa fala e se adapta ao contexto acústico, a AWS publicou o post Introducing Amazon Nova Sonic.
As principais capacidades do modelo relevantes para esse caso de uso são:
- Processamento nativo de voz para voz, sem perda de nuances entre turnos de conversa
- Precisão na chamada de ferramentas para manter fluxos de trabalho complexos em saúde no trilho certo
- Streaming bidirecional de baixa latência para conversas responsivas
- Resistência a ruídos de fundo comuns em ambientes domésticos e clínicos, incluindo sotaques em inglês
- Suporte multilíngue com troca de idioma no meio da conversa, sem necessidade de reconfiguração — consulte a documentação do Amazon Nova 2 Sonic para os idiomas suportados
Arquitetura da solução
A solução completa combina os seguintes componentes:
- Um frontend React que captura o áudio do microfone no navegador e transmite via WebSocket
- Autenticação de usuários via Amazon Cognito, que emite credenciais temporárias AWS e assina cada requisição com o protocolo SigV4
- Amazon Bedrock AgentCore Runtime hospedando o agente em container, gerenciando infraestrutura e escalabilidade
- O Amazon Nova 2 Sonic recebendo o áudio, raciocínando sobre a conversa, invocando ferramentas quando necessário e gerando respostas em áudio
- Três tabelas no Amazon DynamoDB armazenando registros de pacientes, detalhes de agendamentos e horários disponíveis
- O Serviço de Notificação Simples da Amazon (Amazon SNS) publicando notificações de escalonamento quando um paciente solicita falar com um humano
O Strands Agents SDK gerencia a complexidade do streaming bidirecional de voz. Toda a configuração do agente cabe em poucas linhas de código:
from strands.experimental.bidi import BidiAgent
from strands.experimental.bidi.models import BidiNovaSonicModel
model = BidiNovaSonicModel(
region="us-east-1",
model_id="amazon.nova-2-sonic-v1:0",
provider_config={
"audio": {
"input_sample_rate": 16000,
"output_sample_rate": 16000,
"voice": "tiffany",
}
},
tools=tools, # The seven healthcare tools listed below
)
agent = BidiAgent(
model=model,
tools=tools,
system_prompt=system_prompt,
)
# In the WebSocket handler, connect inputs and outputs
await agent.run(
inputs=[receive_audio],
outputs=[send_audio],
)
As sete ferramentas de saúde
O agente de voz utiliza sete ferramentas para conduzir cada ligação. Cada ferramenta é implementada como uma função Python decorada com o @tool do Strands Agents SDK. O Nova 2 Sonic decide quando invocar cada ferramenta com base no que o paciente diz. Por exemplo, quando um paciente pede para reagendar, o modelo chama find_available_slots para consultar o DynamoDB, apresenta as opções por voz e então chama book_appointment_slot para finalizar a mudança.
- authenticate_patient: Verifica a identidade usando nome, sobrenome e os quatro últimos dígitos do CPF/SSN. Consulta a tabela de Pacientes no DynamoDB via um Índice Secundário Global (GSI). Aplica limite de três tentativas por combinação de nome.
- confirm_appointment: Confirma um agendamento existente, atualizando o status de “Agendado” ou “Reagendado” para “Confirmado” no DynamoDB, com verificações para evitar confirmações duplicadas.
- cancel_appointment: Cancela um agendamento com motivo opcional, atualizando o status para “Cancelado” com nota com registro de data/hora.
- find_available_slots: Consulta horários disponíveis para reagendamento, retornando até três opções para manter a conversa por voz concisa.
- book_appointment_slot: Reserva um horário selecionado usando gravações condicionais no DynamoDB para evitar dupla reserva sob requisições concorrentes.
- record_health_update: Captura informações de saúde pré-consulta, coletando condições médicas, alergias, acompanhante e preocupações específicas — uma pergunta por vez.
- escalate_to_agent: Sinaliza a ligação para retorno humano, gerando um número de referência de seis dígitos e publicando uma mensagem no Amazon SNS com as informações do paciente.
Esse design baseado em ferramentas permite trocar ou estender capacidades individualmente sem reescrever o restante do agente. Para adicionar uma nova funcionalidade (por exemplo, coletar informações de convênio), basta escrever uma nova função @tool e atualizar o system prompt do agente.
Como o agente conduz uma ligação
Quando o agente se conecta a um paciente, o BidiAgent gerencia a conversa completa em quatro fases:
Autenticação
O Nova 2 Sonic cumprimenta o paciente e solicita nome completo e os quatro últimos dígitos do número de identificação. Antes de verificar, o agente repete o que entendeu e pede confirmação — o que ajuda a capturar erros de reconhecimento de fala em nomes ou dígitos. Se a verificação falhar após três tentativas, o agente escala para um humano por segurança.
Gerenciamento do agendamento
Após a verificação, o Nova 2 Sonic apresenta os detalhes do próximo agendamento, incluindo nome do profissional, data e horário. O paciente escolhe confirmar, cancelar ou reagendar. Se optar por reagendar, o agente coleta preferências (manhã ou tarde, datas preferidas), consulta os horários disponíveis, apresenta até três opções e reserva o novo horário.
Coleta de informações de saúde
Para agendamentos confirmados ou reagendados, o agente coleta informações pré-consulta: condições médicas existentes, alergias, se haverá acompanhante e preocupações específicas para a consulta. Cada pergunta é feita individualmente para um fluxo de conversa natural.
Escalonamento
Em qualquer momento, se o paciente pedir para falar com um humano, o agente registra o motivo, gera um número de referência de seis dígitos e publica uma notificação via Amazon SNS para que a equipe retorne a ligação em até 24 horas.
Implantando o agente
O código-fonte completo está disponível no repositório GitHub. Os pré-requisitos para o deploy são:
- Uma conta AWS com acesso ao Amazon Bedrock e ao modelo Nova 2 Sonic na região desejada
- Kit de Desenvolvimento em Nuvem da AWS (AWS CDK) v2 instalado e inicializado na conta
- Python 3.12 ou superior
- Node.js 20 ou superior
- Docker
Passo 1: Clonar o repositório
git clone https://github.com/aws-samples/sample-Nova-Sonic-AgentCore-Healthcare-Call-Center.git
cd sample-Nova-Sonic-AgentCore-Healthcare-Call-Center
Passo 2: Implantar a infraestrutura
O stack do AWS CDK provisiona todos os recursos necessários: pools de usuário e identidade do Cognito, tabelas DynamoDB, um tópico Amazon SNS e o AgentCore Runtime com o agente em container.
cd infrastructure
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cdk deploy --require-approval never
Ao final do deploy, anote os outputs do AWS CloudFormation: o ID do User Pool do Cognito, o Client ID, o Identity Pool ID e o ARN do AgentCore Runtime — esses valores são necessários para configurar o frontend.
Passo 3: Criar um usuário de teste
aws cognito-idp admin-create-user \
--user-pool-id <UserPoolId> \
--username testuser \
--temporary-password TempPass123!
aws cognito-idp admin-set-user-password \
--user-pool-id <UserPoolId> \
--username testuser \
--password <YourSecurePassword> \
--permanent
Passo 4: Configurar e executar o frontend
cd ../frontend
npm install
cp .env.example .env
# Edit .env with your CDK output values
npm run dev
Abra http://localhost:5173 no navegador, faça login com o usuário de teste, escolha um paciente no menu e clique em “Start Call” para iniciar uma conversa por voz.
Passo 5: Inserir dados de demonstração
O stack do CDK já insere registros de pacientes de exemplo automaticamente durante o deploy. Se precisar reinserir ou personalizar os dados, execute:
python3 scripts/seed_data.py
Para testes, os pacientes pré-configurados são:
- John Smith — últimos 4 dígitos: 1234
- Jane Doe — últimos 4 dígitos: 5678
- Michael Johnson — últimos 4 dígitos: 9012
Exemplo de conversa
O tutorial traz uma transcrição de uma interação completa de reagendamento, onde o agente autentica o paciente, encontra um novo horário, reserva e coleta informações de saúde pré-consulta. Veja o demo completo no YouTube.
Agente: “Olá, aqui é Nova da Acme Healthcare. Estou ligando sobre sua próxima consulta. Para verificação, poderia me informar seu nome completo e os quatro últimos dígitos do seu CPF?”
Paciente: “John Smith, 1234.”
Agente: “Deixa eu confirmar: ouvi John Smith, um, dois, três, quatro. Está correto?”
Paciente: “Sim, está certo.”
Agente: “Obrigado pela verificação. Estou ligando sobre sua Consulta Anual com o Dr. Johnson agendada para 14 de junho às 16h30. Gostaria de confirmar esta consulta?”
Paciente: “Na verdade, preciso reagendar.”
Agente: “Fico feliz em ajudar. Você prefere manhã ou tarde?”
Paciente: “Manhã é melhor.”
Agente: “Encontrei estes horários matutinos com o Dr. Johnson: terça-feira, 1º de julho às 9h, ou quinta-feira, 3 de julho às 10h30. Qual funciona para você?”
Paciente: “Terça às 9h.”
Agente: “Reagendei sua consulta. Antes de finalizar, gostaria de coletar algumas informações para ajudar o Dr. Johnson a se preparar. Você tem alguma condição médica existente que devemos saber?”
Paciente: “Tenho pressão alta.”
Agente: “Obrigado. Você tem alguma alergia?”
Paciente: “Sou alérgico à penicilina.”
Agente: “Anotado. Alguma preocupação específica para esta consulta?”
Paciente: “Tenho sentido dores no joelho.”
Agente: “Documentei tudo para o Dr. Johnson. Sua consulta está confirmada para terça-feira, 1º de julho às 9h. Tenha um ótimo dia!”
Suporte multilíngue e considerações importantes
O Nova 2 Sonic detecta e muda para o idioma preferido do paciente no meio da conversa, sem necessidade de qualquer reconfiguração. Demos em espanhol e hindi estão disponíveis no repositório GitHub.
É importante destacar que este projeto é uma implementação de referência para fins de demonstração. O Amazon Nova Sonic não foi projetado para fornecer opiniões ou conselhos, incluindo médicos, jurídicos ou financeiros, e não deve ser usado como substituto para julgamento clínico. Implantações em produção que lidam com Informações de Saúde Protegidas (PHI) exigem revisão de conformidade com HIPAA, um Acordo de Parceiro de Negócios (BAA) executado com a AWS e revisões de segurança e clínicas adequadas ao caso de uso.
Limpeza dos recursos
Para evitar cobranças contínuas, delete os recursos ao terminar os testes:
cd infrastructure
cdk destroy --force
O comando cdk destroy pode não remover todos os grupos de log do Amazon CloudWatch. Verifique o console do CloudWatch por grupos de log remanescentes criados durante este deploy e delete-os manualmente.
Conclusão
A AWS demonstrou como é possível construir um agente de voz robusto para lembretes de consultas médicas combinando o Amazon Nova 2 Sonic com o Amazon Bedrock AgentCore. A arquitetura é serverless, usa ferramentas modulares e pode ser adaptada para outros setores que lidam com alto volume de ligações — como varejo ou hotelaria — simplesmente substituindo as ferramentas de saúde pela lógica do domínio desejado.
Para quem quiser explorar a solução, o próximo passo é clonar o repositório e implantar o agente na própria conta AWS seguindo os passos descritos acima. O README do projeto cobre personalização, prontidão para produção e considerações de conformidade.
Fonte
Build a healthcare appointment agent with Amazon Nova 2 Sonic (https://aws.amazon.com/blogs/machine-learning/build-a-healthcare-appointment-agent-with-amazon-nova-2-sonic/)
Leave a Reply