IA para tudo é o canhão que mata mosquito: quando usar, quando não usar e quando combinar
Nem todo problema precisa de IA. Muitos têm soluções determinísticas mais rápidas, baratas e confiáveis. Um framework prático para decidir entre IA, não-IA e abordagem híbrida.
Indice
Semana passada vi um post no LinkedIn que me fez parar de rolar o feed.
Um desenvolvedor estava orgulhosamente mostrando seu “validador de e-mail inteligente com IA”. O sistema enviava o e-mail digitado pelo usuário para um LLM, que respondia se o formato era válido ou não. O post tinha 200+ likes e comentários do tipo “genial!” e “o futuro é agora”.
Eu fiquei olhando para a tela. Uma expressão regular de uma linha faz exatamente isso. Em 0.001 segundo. Por zero centavos. Com 100% de determinismo.
Aquilo era um canhão para matar um mosquito.
E esse é o problema que vejo se repetindo todos os dias na indústria: estamos tão empolgados com o que a IA pode fazer que esquecemos de perguntar se ela deveria fazer. Não porque IA seja ruim. Ela é extraordinária para os problemas certos. Mas porque existe uma diferença fundamental entre problemas que precisam de IA e problemas que já têm soluções melhores, mais rápidas e mais baratas.
A habilidade mais valiosa de um engenheiro na era da IA não é saber usar o ChatGPT. É saber quando não usar. E saber quando combinar as duas abordagens numa solução híbrida que pega o melhor dos dois mundos.
Neste post, vou te dar um framework prático para nunca mais errar essa decisão. Vamos falar de determinismo, custos, exemplos reais e uma matriz de decisão que você pode aplicar amanhã no seu trabalho.
Determinístico vs não-determinístico: o conceito que muda tudo
Se você entender esse único conceito, já vai tomar decisões melhores que 90% dos engenheiros que trabalham com IA hoje. Não é exagero.
O que é determinístico
Um sistema determinístico é aquele em que a mesma entrada sempre produz a mesma saída. Sem exceção. Sem “depende”. Sem “quase sempre”.
Exemplos que você conhece:
2 + 2sempre dá4- Uma regex de validação de e-mail sempre retorna
trueoufalsepara a mesma string - O algoritmo de dígito verificador de CPF sempre valida ou rejeita o mesmo número
sort([3, 1, 2])sempre retorna[1, 2, 3]- Um cálculo de imposto com as mesmas alíquotas e base sempre dá o mesmo valor
Essas operações são previsíveis, testáveis (um unit test resolve), rápidas (microsegundos), baratas (custo computacional próximo de zero) e auditáveis (você pode rastrear cada passo).
O que é não-determinístico
Um sistema não-determinístico é aquele em que a mesma entrada pode gerar saídas diferentes, e todas podem ser igualmente válidas.
LLMs são inerentemente não-determinísticos. Mesmo com temperature=0, há variações sutis entre chamadas (por causa de floating point, batching, e otimizações internas). Na prática, se você pedir para um LLM resumir o mesmo texto 10 vezes, vai receber 10 resumos diferentes. Todos podem estar corretos. Nenhum é “o” resumo.
Exemplos de tarefas genuinamente não-determinísticas:
- Resumir um documento de 50 páginas
- Traduzir texto preservando tom e contexto cultural
- Classificar a intenção de um cliente em linguagem natural (“quero cancelar” vs “como faço pra cancelar” vs “cancela essa porcaria”)
- Gerar copy de marketing
- Responder perguntas abertas sobre um codebase
Essas tarefas exigem compreensão de linguagem natural, julgamento contextual e capacidade de lidar com ambiguidade. Não existe uma fórmula determinística que resolva isso.
A sacada que pouca gente tem
A pergunta que a maioria dos engenheiros faz é: “a IA consegue resolver isso?”
A resposta é quase sempre sim. LLMs são generalistas poderosos. Eles conseguem validar um e-mail. Conseguem formatar uma data. Conseguem converter CSV para JSON.
Mas a pergunta certa é outra: “esse problema exige não-determinismo?”
Se a resposta for não, se a mesma entrada deve sempre gerar a mesma saída, você está pagando tokens por algo que uma função faz de graça.
| Característica | Determinístico | Não-determinístico (LLM) |
|---|---|---|
| Mesma entrada = mesma saída | Sempre | Quase nunca |
| Custo por execução | Frações de centavo | Centavos a dólares |
| Latência | < 10ms | 500ms a 30s |
| Testabilidade | Unit test = resolvido | Evals, benchmarks, incerteza |
| Auditabilidade | Trace completo | ”Depende do prompt” |
| Lida com ambiguidade | Não | Sim |
| Lida com novidade | Não | Sim |
O problema do hype: IA em tudo
Exemplos reais de exagero
Eu coleciono esses exemplos. Não por maldade, mas porque cada um deles é uma oportunidade de aprendizado. Veja se você reconhece algum:
Validar formato de e-mail com LLM:
# O que fazem:
response = llm.chat("Is this a valid email? user@example.com")
# ~500 tokens, ~$0.0015, ~800ms
# O que deveriam fazer:
import re
is_valid = bool(re.match(r'^[\w.-]+@[\w.-]+\.\w+$', email))
# 0 tokens, $0.00, <1ms
Formatar data de ISO para dd/mm/yyyy:
# O que fazem:
response = llm.chat("Convert 2026-03-30 to dd/mm/yyyy format")
# ~200 tokens, ~$0.0006, ~600ms
# O que deveriam fazer:
from datetime import datetime
formatted = datetime.strptime("2026-03-30", "%Y-%m-%d").strftime("%d/%m/%Y")
# 0 tokens, $0.00, <1ms
Classificar status HTTP como sucesso ou erro:
# O que fazem:
response = llm.chat(f"Is HTTP status {status} a success or error?")
# O que deveriam fazer:
is_error = status >= 400
Converter CSV para JSON:
# O que fazem:
response = llm.chat(f"Convert this CSV to JSON:\n{csv_data}")
# O que deveriam fazer:
import pandas as pd
result = pd.read_csv("data.csv").to_json(orient="records")
Cada um desses exemplos tem algo em comum: o problema é 100% determinístico. Não existe ambiguidade. Não existe julgamento. Não existe variação aceitável na saída. É input -> output, sempre igual.
Por que isso acontece
Quatro razões principais:
Resume-driven development. “Usa IA” fica bonito no LinkedIn e no currículo. O incentivo é usar IA mesmo quando não faz sentido.
Pressão de investidores e gestores. “A gente precisa de uma história de IA.” Startups colocam IA em tudo para justificar valuations. Empresas grandes criam “iniciativas de IA” para mostrar inovação.
Desconhecimento de alternativas. Uma geração inteira de desenvolvedores aprendeu a programar com IA. Muitos nunca precisaram descobrir que dateutil parseia datas, que Zod valida schemas, que fasttext detecta idiomas. Quando sua única ferramenta é um LLM, todo problema parece um prompt.
O problema do martelo e do prego. Quando você acabou de aprender a usar uma ferramenta poderosa, a tentação de usá-la para tudo é enorme. LLMs são o martelo mais sofisticado que já existiu, mas nem todo problema é um prego.
O custo do exagero
Eu já escrevi em detalhe sobre o custo invisível dos tokens desperdiçados. Mas vale reforçar com um cálculo rápido.
Digamos que sua aplicação valida e-mails de usuários via LLM. São 10.000 validações por dia. Cada chamada consome ~500 tokens de entrada + saída. Com Claude Sonnet a $3/milhão de tokens de entrada e $15/milhão de saída:
- Custo mensal com LLM: ~$450
- Custo mensal com regex: $0.00
- Latência com LLM: 500ms a 2s por validação
- Latência com regex: < 1ms por validação
São $5.400 por ano jogados fora. Em uma operação determinística. Que uma regex resolve melhor.
E o custo não é só financeiro. Cada chamada de LLM em produção adiciona uma dependência não-determinística ao seu sistema. Significa que seus testes ficam mais frágeis, seus SLAs de latência ficam mais difíceis de cumprir, e seu sistema fica mais complexo de debugar.
Artigos, ferramentas e soluções que já existem
Antes de abrir o ChatGPT para resolver um problema, pesquise 10 minutos. A quantidade de problemas “de IA” que já têm soluções determinísticas prontas, testadas e gratuitas é impressionante.
| Problema | ”Solução IA” | Alternativa determinística |
|---|---|---|
| Detecção de idioma | Classificação via LLM | langdetect, fasttext (99.4% de acurácia) |
| Análise de sentimento básica | Prompt para LLM | VADER, TextBlob, modelos leves do HuggingFace |
| Reconhecimento de entidades (NER) | Extração via LLM | spaCy NER, Stanford NER |
| Formatação de código | ”AI code beautifier” | Prettier, Black, gofmt, rustfmt |
| Validação de dados | Verificação via LLM | JSON Schema, Zod, Pydantic |
| Similaridade de texto | Comparação via LLM | TF-IDF + similaridade coseno, Levenshtein |
| Parsing de datas | Extração via LLM | dateutil, chrono-node |
| Extração de URLs | Prompt para LLM | Expressões regulares |
| Busca full-text | ”Busca semântica com IA” | PostgreSQL FTS, Elasticsearch, Meilisearch |
O paper Toolformer (Schick et al., 2023) demonstrou algo fascinante: o próprio modelo de linguagem aprende a delegar tarefas para ferramentas determinísticas quando estas são mais eficientes. O LLM aprende que calcular 593 * 847 é melhor feito por uma calculadora do que por ele mesmo. Se até o modelo reconhece isso, por que nós não reconhecemos?
Use IA para construir, não para executar
Essa é a distinção mais importante do post.
Usar IA para ajudar a encontrar e implementar a solução determinística é excelente. Perguntar ao Claude “qual é a melhor regex para validar telefones brasileiros?” é um uso brilhante de IA. Ele te ajuda a escrever código mais rápido, descobre bibliotecas que você não conhecia, sugere abordagens melhores.
Mas o artefato de produção, o código que roda em produção atendendo milhares de requisições, deve ser a regex, a função, a biblioteca. Não a chamada de API.
Use IA como ferramenta de desenvolvimento. Não como ferramenta de execução para problemas determinísticos.
A abordagem híbrida: o melhor dos dois mundos
Nem tudo é preto ou branco. Muitos problemas reais têm uma parte determinística e uma parte que exige julgamento. É aí que entra a abordagem híbrida, e é onde mora a engenharia de verdade.
Quando o híbrido faz sentido
O padrão mais comum é o que eu chamo de funil: a IA pega o caos (input não-estruturado, linguagem natural, ambiguidade) e estreita em categorias estruturadas. Depois, código determinístico pega essas categorias e executa com precisão e velocidade.
IA transforma o nebuloso em concreto. Código determinístico executa o concreto com zero margem de erro.
Arquiteturas híbridas reais
1. Suporte ao cliente
O cliente escreve: “tô tentando cancelar esse negócio faz duas semanas e ninguém resolve”. Isso é linguagem natural, cheia de contexto emocional e ambiguidade.
- IA: classifica a intenção (cancelamento), detecta o sentimento (frustrado), identifica urgência (alta)
- Determinístico: roteia para a fila de retenção, aplica as regras de SLA, dispara o workflow de cancelamento, registra no CRM
A IA faz o que só ela pode fazer (entender linguagem natural). O código faz o que faz melhor (executar regras de negócio sem erro).
2. Processamento de notas fiscais
Uma nota fiscal em PDF é um documento semi-estruturado. Campos em posições variáveis, formatos inconsistentes entre fornecedores.
- IA: extrai campos do PDF (OCR + LLM): CNPJ, valor total, itens, datas
- Determinístico: valida o dígito verificador do CNPJ, confere cálculos de imposto (ISS, ICMS), verifica formato das datas, insere no ERP
Se você fizesse tudo com IA, pagaria tokens para verificar um dígito verificador, uma operação aritmética. Com a abordagem híbrida, a IA só faz a extração (a parte genuinamente difícil), e o código determinístico faz a validação (a parte trivial mas crítica).
3. Moderação de conteúdo
- Determinístico primeiro: blocklist de palavras proibidas, regex para padrões conhecidos de spam, verificação de links maliciosos contra base de dados
- IA só para o que sobra: texto que passou nos filtros determinísticos mas é ambíguo: sarcasmo, contexto cultural, conteúdo borderline
Resultado: a IA é chamada apenas para 20-30% dos casos. Os outros 70-80% são resolvidos por regras determinísticas em milissegundos. A economia de tokens é brutal.
4. Code review
- Determinístico: ESLint, Prettier, mypy, tsc para formatação, tipos e padrões de código
- IA: revisão de lógica de negócio, qualidade de nomes, decisões arquiteturais, bugs sutis
Não faz sentido gastar tokens para que um LLM te diga que você esqueceu um ponto-e-vírgula. O ESLint faz isso em milissegundos. Mas faz total sentido usar IA para perguntar “essa abstração faz sentido aqui?”. Isso exige julgamento.
A vantagem de custo do híbrido
Vamos pegar o exemplo de processamento de notas fiscais. 10.000 notas por mês:
| Abordagem | Custo/nota | Custo mensal | Latência média |
|---|---|---|---|
| 100% IA (extração + validação + inserção) | $0.05 | $500 | 8s |
| Híbrida (IA extrai, código valida/insere) | $0.015 | $150 | 3s |
| Economia | 70% | $350/mês | 62% |
A abordagem híbrida é mais barata, mais rápida e mais confiável. A parte determinística (validação, cálculos) nunca erra. A IA é usada apenas onde é insubstituível.
Framework de decisão: IA, não-IA ou híbrido
Agora vamos ao que interessa. Um framework prático que você pode aplicar amanhã, em qualquer reunião de planejamento, para decidir a abordagem certa.
As cinco perguntas
Para qualquer tarefa, faça estas cinco perguntas:
1. A mesma entrada exige sempre a mesma saída? Se sim, forte sinal para determinístico. Se a saída pode variar e todas as variações são aceitáveis, forte sinal para IA.
2. Existe uma solução open-source comprovada? Se sim, use. Não reinvente a roda com tokens. Use IA para te ajudar a implementar mais rápido, mas o artefato final é a biblioteca.
3. A tarefa requer compreensão de linguagem natural ou ambiguidade? Se sim, IA ou híbrido. Se não, quase certamente determinístico.
4. Vai rodar em escala em produção (>1.000 chamadas/dia)? Se sim, custo e latência importam muito. Favoreça determinístico para tudo que puder ser determinístico.
5. Uma resposta errada é perigosa ou apenas inconveniente? Se perigosa (financeiro, médico, jurídico, segurança), o caminho crítico deve ser determinístico. IA pode auxiliar, mas a decisão final precisa ser auditável e reproduzível.
A matriz de decisão
| Pergunta | Se Sim | Se Não |
|---|---|---|
| Mesma entrada = mesma saída? | +2 para determinístico | +2 para IA |
| Solução open-source existe? | +2 para determinístico | +1 para IA |
| Requer linguagem natural? | +2 para IA | +1 para determinístico |
| Roda em escala? | +1 para determinístico | Neutro |
| Erro é perigoso? | +1 para determinístico | Neutro |
Interpretação:
- Score determinístico >= 4: vá de determinístico
- Score IA >= 4: vá de IA
- Scores mistos: abordagem híbrida. Identifique quais partes são determinísticas e quais precisam de IA
O fluxograma na prática
Quando estou avaliando um problema no dia a dia, meu processo mental é mais simples:
- Uma regex, algoritmo ou biblioteca resolve? Se sim: pronto, sem IA. Próximo problema.
- Precisa entender linguagem humana ou lidar com ambiguidade? Se não: provavelmente determinístico. Procure a biblioteca certa.
- Tem as duas coisas? Híbrido: IA para a parte fuzzy, determinístico para o resto.
- É puramente criativo ou generativo? IA completa.
Esse fluxograma cabe num post-it. Cole na sua mesa. Compartilhe com seu time. Eu garanto que vai economizar dinheiro e evitar over-engineering.
Exemplos do dia a dia: cada abordagem em ação
Para consolidar tudo, aqui vai uma tabela de referência rápida com exemplos reais organizados por abordagem:
Não-IA (determinístico)
| Tarefa | Solução |
|---|---|
| Validação de input (e-mail, CPF, telefone, URL) | Regex, algoritmos de check digit |
| Conversão de formato (CSV -> JSON, datas) | Bibliotecas nativas da linguagem |
| Cálculos matemáticos (impostos, juros, câmbio) | Fórmulas implementadas em código |
| Formatação e linting de código | Prettier, ESLint, Black, gofmt |
| Roteamento de URLs e status HTTP | Switch/case, lookup tables |
| Tarefas agendadas e cron jobs | crontab, Celery, BullMQ |
| Busca por texto exato ou full-text | PostgreSQL FTS, Elasticsearch |
IA completa
| Tarefa | Por quê IA |
|---|---|
| Resumir documentos longos | Requer compreensão e síntese |
| Gerar copy de marketing | Requer criatividade e tom |
| Traduzir com contexto cultural | Vai além de substituição palavra-por-palavra |
| Responder perguntas abertas sobre código | Requer raciocínio sobre contexto |
| Brainstorming e ideação | Requer pensamento divergente |
Híbrido
| Tarefa | IA faz | Determinístico faz |
|---|---|---|
| Suporte ao cliente | Classifica intenção e sentimento | Roteia, aplica regras, executa workflows |
| Processamento de documentos | Extrai campos de PDFs | Valida dados, calcula, insere no sistema |
| Moderação de conteúdo | Julga casos ambíguos | Filtra por blocklist, regex, links maliciosos |
| Code review | Analisa lógica e arquitetura | Linting, tipos, formatação |
| Busca inteligente | Reranking semântico | Busca full-text, filtros estruturados |
| Enriquecimento de dados | Normaliza inputs bagunçados | Valida, deduplica, armazena |
Conclusão: a melhor IA é a que você não precisa chamar
Lembra do validador de e-mail com IA do começo do post?
Aquele desenvolvedor não é incompetente. Ele provavelmente é bom no que faz. O problema é que ninguém ensinou a ele a pergunta certa: “esse problema exige não-determinismo?”
Se a resposta for sim, use IA. Ela é a melhor ferramenta que a humanidade já criou para lidar com ambiguidade, linguagem natural e julgamento contextual.
Se a resposta for não, use código determinístico. É mais rápido, mais barato, mais confiável e mais fácil de testar.
Se a resposta for “em parte”, combine os dois. Deixe cada um fazer o que faz melhor.
A ironia é que este post segue exatamente essa filosofia. A pesquisa, a estrutura e a redação tiveram assistência de IA, uma tarefa criativa e não-determinística. Mas os exemplos de código, as tabelas de custo e o framework de decisão são determinísticos: fatos, números e lógica que não mudam entre execuções.
Eu já escrevi sobre como os fundamentos são a base de tudo na era da IA. Saber quando usar e quando não usar IA é um fundamento. Talvez o mais importante de todos.
Porque no final das contas, a habilidade mais sênior que um engenheiro pode ter hoje não é dominar prompts ou fine-tuning. É olhar para um problema e reconhecer: “isso aqui não precisa de IA. Uma regex resolve.”
Guarde o canhão para os problemas que realmente precisam dele. Para os mosquitos, um mata-moscas funciona perfeitamente.