Construindo Agents com ML Tools Especializadas
Por que LLMs não devem fazer predições de Machine Learning
Vamos direto ao ponto, você já viu algo parecido? Ou até mesmo já fez isso?
Prompt: "Analise estes dados médicos e me diga se o paciente tem risco de doença cardíaca:
Age: 55
Sex: Male
Chest Pain Type: Typical Angina
Blood Pressure: 140 mmHg
Cholesterol: 220 mg/dl
Max Heart Rate: 150 bpm
Exercise Angina: No
Baseado nesses fatores, qual é o risco cardiovascular deste paciente?"
Você tem dados estruturados, um LLM "inteligente" afinal ele foi treinado com trilhões de tokens, e então vem a ideia de "por que não deixar o modelo fazer a predição diretamente?" Afinal, esses modelos demonstram conhecimento médico impressionante e conseguem relacionar fatores de risco com resultados clínicos.
Essa abordagem é bem problemática quando aplicada em cenários que exigem precisão. O problema não está na capacidade dos LLMs de fazer conexões sobre um conteúdo de medicina, o problema está na natureza de como esses modelos "aprendem" vs. como modelos de ML especializados são treinados.
Palpites vs. aprendizado supervisionado
Quando você alimenta dados médicos em um prompt e pede uma predição, o LLM vai fazer um palpite educado baseado em padrões que viu durante o treinamento. Não importa quão sofisticado seja esse palpite, ele não substitui um modelo que foi especificamente treinado em milhares de casos reais com resultados conhecidos.
LLM fazendo “predição” via prompt:
Agora um modelo ML especializado:
A diferença é crucial. Nesse exemplo, o LLM opera com conhecimento médico generalizado absorvido durante o treinamento, enquanto o modelo especializado aprendeu relações estatísticas precisas a partir de dados reais rotulados.
Inconsistência, o inimigo da confiabilidade
Que tal um teste? Pegue os mesmos dados médicos e faça a mesma pergunta ao ChatGPT/Claude em momentos diferentes. Os resultados variam, quando não deveriam.
# Execução 1
"Com base nos fatores apresentados, classifico como RISCO MODERADO.
A idade de 55 anos combinada com angina típica sugere..."
# Execução 2
"Os dados indicam RISCO ELEVADO. A presença de dor torácica típica
em paciente masculino acima de 50 anos é preocupante..."
# Execução 3 (temperatura diferente)
"Análise sugere BAIXO A MODERADO risco. Embora existam fatores
de atenção, a ausência de angina induzida por exercício..."
Um modelo de ML treinado retornará exatamente a mesma probabilidade (0.673) para os mesmos inputs, sempre. Essa previsibilidade é fundamental em aplicações críticas como na área médica, finanças, ou qualquer domínio onde decisões dependem da análise.
Agents com ML tools
Assim como no último post, a solução não é descartar LLMs, mas sim utilizá-los corretamente na arquitetura. LLMs são ótimos em interpretação de linguagem natural e orquestração de workflows. Modelos ML especializados são excepcionais em predições baseadas em dados. A arquitetura ideal seria combinar ambos através de uma separação clara de responsabilidades. Vamos a um exemplo prático de um agente para análise de doenças cardíacas:
A ideia central é transformar o problema de "LLM fazendo predição" em "LLM orquestrando predição via ML tool". Esta mudança de paradigma elimina a inconsistência e preserva a capacidade dos LLMs. O LLM atua como um intérprete inteligente que converte descrições humanas em parâmetros estruturados, aciona modelos especializados, e traduz resultados numéricos de volta para linguagem compreensível.
Neste exemplo, a arquitetura escolhida foi o pattern de prompt chaining recomendado pela Anthropic, onde cada etapa tem uma responsabilidade específica e bem definida. O primeiro LLM call extrai dados estruturados, a ML tool faz a predição, e o terceiro LLM call interpreta o resultado. Cada etapa pode ser otimizada, testada e debugada de maneira independente.
Primeira etapa: extração estruturada
O primeiro desafio é converter descrições médicas em linguagem natural para parâmetros que o modelo ML pode processar. Neste exemplo, esta é precisamente a competência principal do LLM entender nuances linguísticas e mapear conceitos para estruturas de dados.
Mais uma vez, o uso de structured output via Pydantic garante que os dados extraídos sempre atendam ao schema esperado pelo modelo ML. Se o LLM não conseguir extrair um campo obrigatório, o sistema falha de forma previsível ao invés de enviar dados errados para o modelo. Esta validação automática é fundamental para o funcionamento do sistema.
Segunda etapa: predição especializada
A chamada ao modelo ML é onde acontece a verdadeira predição baseada em dados. Aqui não há interpretação ou palpites, apenas matemática aplicada sobre padrões aprendidos de toneladas de casos reais.
E claro que esta simplicidade é intencional. A complexidade está encapsulada no modelo treinado que roda por trás da API. O agent não precisa entender regressão logística, feature engineering, ou normalização de dados, apenas precisa saber como formatar os dados para input via requisição e interpretar a resposta. Esta separação permite que data scientists otimizem o modelo independentemente do sistema de orquestração.
Terceira etapa: interpretação contextualizada
O resultado numérico do modelo ML precisa ser traduzido para linguagem médica apropriada. Aqui temos novamente uma tarefa ideal para LLMs, que podem contextualizar números abstratos em recomendações clínicas específicas.
Esta etapa permite que o LLM faça o que faz melhor, síntese de informações complexas em linguagem natural compreensível. O modelo não está inventando a predição (que já foi feita pelo ML model), mas sim explicando o que aquela predição significa no contexto específico do paciente.
Orquestração completa
O agent completo coordena estas três etapas em um workflow que combina interpretação de linguagem natural, predição baseada em dados, e comunicação contextualizada.
Essa arquitetura garante que cada componente opere em sua área de competência máxima. E o resultado é um sistema mais confiável do que qualquer abordagem monolítica.
Output final:
ANÁLISE DE RISCO CARDÍACO:
O paciente apresenta um risco cardiovascular considerado MEDIUM, com uma probabilidade de 67% de desenvolver uma doença cardíaca.
PRINCIPAIS FATORES DE RISCO:
1. Idade (50 anos)
2. Sexo masculino
3. Pressão arterial elevada (140 mmHg)
4. Colesterol total elevado (220 mg/dl)
5. Depressão ST de 1.0 durante esforço
EXPLICAÇÃO CLÍNICA:
A combinação dos fatores de risco, como a idade, sexo masculino e resultados do teste de esforço (depressão ST de 1.0), sugere que o paciente pode ter isquemia miocárdica. A pressão arterial e o colesterol elevados são também indicadores críticos que aumentam o risco cardiovascular geral.
RECOMENDAÇÕES:
1. Recomendar uma avaliação cardiológica mais detalhada, incluindo um ecocardiograma e, possivelmente, uma angiografia coronária, se indicado.
2. Iniciar ou optimizar tratamento farmacológico para controle da pressão arterial e colesterol, conforme necessário.
3. Avaliar medidas de estilo de vida, incluindo dieta, exercício físico e cessação do tabagismo, se aplicável.
4. Considerar monitoramento mais frequente dos fatores de risco e reavaliação da próstata após ajustes terapêuticos.
LIMITAÇÕES:
Esta análise é baseada em um modelo de machine learning que utiliza dados históricos e correlações, podendo não capturar nuances individuais ou fatores contextuais não considerados. Portanto, não deve ser utilizada como substituto à avaliação clínica pessoal.
PRÓXIMOS PASSOS:
Agendar uma consulta com um cardiologista para avaliação mais aprofundada e discussão sobre a necessidade de realização de exames complementares e ajustes no tratamento.
Bem, a arquitetura de agents com ML tools especializadas oferece precisão bem superior ao fazer predições baseadas em modelos treinados em dados reais, em contraste com palpites educados de LLMs. A consistência é garantida porque os mesmos inputs sempre produzem a mesma probabilidade, eliminando a variabilidade inerente aos modelos de linguagem. A confiabilidade surge do fato de as predições serem baseadas em padrões aprendidos de dados históricos rotulados, não em conhecimento geral absorvido durante o treinamento.
O papel dos LLMs na era dos modelos especializados
LLMs não devem ser descartados, mas posicionados corretamente como orquestradores na arquitetura. Eles interpretam linguagem natural complexa com nuances que modelos tradicionais não vão conseguir capturar, extraem informações estruturadas de descrições variadas, e orquestram chamadas para modelos especializados de forma coerente. Além disso, contextualizam resultados numéricos e gerenciam workflows multi-etapas com decisões condicionais.
Modelos ML especializados fazem o trabalho pesado da predição baseada em dados, enquanto LLMs fazem a interface inteligente entre humanos e esses modelos.
Conclusão
A tentação de usar LLMs como substitutos universais para modelos de ML especializados é compreensível, mas totalmente equivocada. Em áreas de domínio crítica como medicina, finanças, ou engenharia, a precisão e consistência dos modelos especializados são insubstituíveis.
No fim, a arquitetura correta vai combinar o melhor dos dois mundos, LLMs como interfaces e orquestradores, e modelos de machine learning como motores de predição especializados. Essa não é apenas uma escolha de conveniência técnica, mas uma decisão crítica em cenários onde precisão e confiabilidade importam.
P.S. O modelo de predição de risco cardíaco usado neste exemplo foi baseado no dataset UCI Heart Disease. Para quem quiser entender melhor o processo completo de treinamento de modelos de ML com scikit-learn usando este mesmo dataset, tenho um vídeo antigo com um tour prático: Tour Prático de Machine Learning com Scikit-Learn Sobre o exemplo desse post você pode conferir todo o código aqui.