Insights · Tecnologia
Por dentro da Lia: como construímos uma IA conversacional para saúde
Function calling, RAG, base de conhecimento médica curada e o que aprendemos atendendo pacientes de verdade com IA.
Conteúdo do artigo
No mês passado lançamos o Avizuaí e prometemos voltar com o "behind the scenes" da Lia, nossa IA conversacional. Este post é para quem se interessa pelos detalhes técnicos: como decidimos a arquitetura, o que aprendemos atendendo pacientes reais, e por que function calling se mostrou a aposta certa para o domínio da saúde.
Não é tutorial passo-a-passo — é o relato honesto das decisões que tomamos, o que funcionou de primeira e o que precisou ser reescrito. Se você está construindo IA para um domínio sensível como saúde, talvez ajude.
O problema: por que IA em saúde é difícil
Conversar com paciente parece tarefa simples para LLM. Mas o domínio tem armadilhas que aprendemos na marra:
- Não pode inventar informação — orientar errado preparo de exame é prejuízo real
- Precisa contextualizar — o paciente está falando de qual agendamento? Em qual unidade?
- Tem que escalar bem — sentir quando o caso pede humano e ceder o turno sem fricção
- Tom certo — nem robótico demais, nem amigo íntimo. Atendente profissional.
- Custo — secretaria municipal não pode pagar Claude Opus por cada mensagem trivial
A arquitetura: dois modos, uma Lia
Construímos a Lia em dois modos que rodam sobre a mesma persona, configuráveis por aplicação:
Modo 1: pipeline com state machine
O caminho clássico: classifica intent por keywords (custo zero), extrai entidades por regex, engine de decisão escolhe próxima ação, LLM gera a resposta com prompt especializado por tipo de ação.
- Vantagem — previsível, barato, fácil de debugar
- Desvantagem — precisa de muito código de cola para casos novos
- Quando usa — fluxos bem mapeados (consultar agendamento, FAQ comum)
Modo 2: agente com function calling
O LLM recebe um catálogo de tools, decide qual chamar, executa, recebe resultado, decide o próximo passo. Loop até a resposta final.
- Vantagem — flexível, lida com casos compostos
- Desvantagem — mais caro, menos previsível, pede limite de iterações
- Quando usa — conversas mais abertas onde o paciente pede coisas em sequência
Cada secretaria escolhe o modo no painel admin via flag auto-resposta-tool-use-habilitada. Comparamos os dois em produção: o modo agente entrega 15-20% mais resoluções automáticas, ao custo de aproximadamente 3x mais tokens. A escolha depende do volume e do orçamento da secretaria.
As tools que a Lia tem na mochila
São três tools principais, descobertas automaticamente pelo ToolRegistry como Spring beans. Adicionar uma nova tool é criar uma classe e fazer ela implementar a interface — o catálogo se atualiza sozinho.
// Esquema simplificado da tool de agendamentos
@Component
public class ConsultarAgendamentosTool implements Tool {
public String name() { return "consultar_agendamentos"; }
public ToolSchema schema() { /* params: cpf, pedido, telefone */ }
public ToolResult execute(ToolCall call) {
// Busca em RegistroImportado por CPF/pedido/telefone
return patientDataService.buscar(call.params());
}
}
- consultar_agendamentos — busca compromissos do paciente por CPF, pedido ou telefone
- buscar_faq — consulta a base de conhecimento via embeddings (pgvector) com fallback Jaccard
- escalar_para_humano — coloca a sessão na fila de operadores
RAG: a base de conhecimento médica
Conhecimento de saúde tem fonte: bula, protocolo clínico, instruções do fabricante do equipamento. A Lia não inventa — ela busca na base de conhecimento curada pela própria secretaria. O caminho:
Busca semântica com fallback
Primeira camada: embeddings com pgvector. Cada item da base é vetorizado por OpenAI text-embedding-3-small ou Ollama nomic-embed-text (a unidade escolhe). Cosine similarity puxa os top-K candidatos.
- Fallback Jaccard — se embeddings desabilitado ou indisponível, cai para busca por tokens em cache de memória
- Catálogo de exames — biblioteca global da Avizuaí com 152 exames curados (NHS, MedlinePlus, MS Brasil)
- Atribuição obrigatória — cada item vem com fonte (OGL v3, domínio público) para compliance
Métricas do primeiro mês em produção
Os 60% que a Lia resolve sozinha são o número que mudou o jogo. Antes, todas essas perguntas chegavam no celular pessoal de algum servidor — agora ficam registradas, com hash chain, no Avizuaí. E os 40% que ela escala chegam ao operador com resumo estruturado da conversa.
O que daria conselho a quem está começando
Comece pelo pipeline, não pelo agente
State machine é chata, mas previsível. Quando seu pipeline cobre 80% dos casos, aí compensa adicionar o modo agente para os 20% restantes. Começar direto com agente é receita para conversas erráticas no início.
RAG não é magia — curadoria é
Embedding bom + base ruim = respostas ruins. Investimos meses construindo o catálogo de exames com fontes oficiais antes de ligar a busca semântica. Sem a curadoria, a Lia chutaria com confiança.
Function calling pede design das tools
O LLM só usa bem a tool se você descrever bem o que ela faz, quais parâmetros aceita, e o que retorna. Treine o schema como se fosse documentação de API pública — porque, para o LLM, é exatamente isso.
Limite as iterações
Sem limite máximo, agentes entram em loop. MAX_ITERACOES = 5 é um número conservador que escolhemos — ainda nenhum caso prático precisou de mais. Se chega no limite sem resolver, escala automático para humano.
Custos não são desprezíveis
Cada mensagem do paciente consome 1-3 chamadas LLM no modo agente. Prompt caching da Anthropic reduziu ~70% do custo — vale habilitar desde o dia 1. Para classificação simples, usar regex no pipeline poupa muito.
O segredo está nos detalhes
A diferença entre uma IA "ok" e uma IA realmente útil em produção não está no modelo — está nos detalhes: contexto de conversa (últimas 6 mensagens), saudação dinâmica (bom dia/boa tarde), tratamento de áudio com Whisper, escalação proativa quando sentimento fica negativo, resumo de handoff para o operador. Nada disso é "IA". É engenharia de software com IA no meio.
Para onde vamos
Próximos passos na Lia:
- Tool de pré-agendamento — o paciente pode marcar consulta direto na conversa
- Detecção de urgência clínica — escalar imediatamente em sintomas críticos
- Voz — resposta em áudio para pacientes com baixa alfabetização
Construir IA conversacional para saúde pública é desafiador porque o erro custa caro, o tom certo é frágil e o orçamento é apertado. Mas é exatamente onde a tecnologia pode liberar a equipe humana para o que realmente importa: cuidar das pessoas que mais precisam.
Quer ver a Lia funcionando?
Solicite uma demonstração do Avizuaí e converse com a Lia em ambiente de teste. Vai entender em 5 minutos por que estamos animados com o que ela já entrega.
Quer conversar sobre IA em produção?
A Lia atende pacientes todos os dias. Conte o seu cenário — e o que você precisa que a IA resolva.
Falar com a Nebula