Argumento central: saia do LLM o mais rápido possível e não permaneça nele por muito tempo
- Não se deve delegar tomada de decisão ou lógica de negócio ao LLM → faltam precisão e estabilidade
- Na maioria dos casos, o LLM deve servir apenas como interface entre o usuário e a API da aplicação
- A lógica central deve ser executada em um sistema ou motor dedicado, e o LLM deve apenas converter a solicitação do usuário em chamadas de API e depois transformar o resultado de volta em linguagem natural
Por quê?
-
Exemplo de bot de xadrez: o usuário envia pelo WhatsApp "capture o cavalo com meu bispo" → o LLM até pode manter o estado do tabuleiro e jogar, mas isso traz muitos problemas em confiabilidade, desempenho e manutenção
-
Desempenho: a capacidade do LLM de jogar xadrez é impressionante, mas ainda assim ele é mais lento e menos preciso do que um motor de xadrez especializado (ex.: Stockfish)
-
Impossibilidade de depuração e ajuste: é difícil saber por que ele tomou determinada decisão, então é complicado fazê-lo funcionar da maneira pretendida
-
Outros problemas:
- A saída do LLM é difícil de testar
- O desempenho em matemática ou geração de números aleatórios é fraco
- Controle de versões e auditoria são difíceis
- Manter estado em linguagem natural é frágil
- Surgem problemas como cobrança de API e limite de taxa
- As fronteiras de segurança ficam difusas
A separação correta de papéis vista por diferentes exemplos
- Em um jogo, "quero atacar o jogador X com a espada vorpal" → o LLM deve apenas converter isso para a forma
attack(player=X, weapon="vorpal_sword")e repassar para a lógica do jogo - Agente de negociação → o LLM não toma decisões de negociação; ele apenas empacota a entrada do usuário, envia ao motor de negociação e transmite o resultado
- Geração de respostas aleatórias → não deve ser escolhida pelo LLM; isso precisa ser tratado por uma função aleatória externa
Em que o LLM é bom
- LLMs são especializados em transformação, interpretação e comunicação
- Exemplos:
- "bater no orc com a espada" → converter para
attack(target="orc", weapon="sword") { "error": "insufficient_funds" }→ explicar naturalmente como "você não tem ouro suficiente"- Classificar se a entrada do usuário é um comando de combate, verificação de inventário ou pedido de ajuda
- Entender bem conceitos humanos (ex.: blade = sword, smash = attack)
- "bater no orc com a espada" → converter para
- O ponto principal não é fazer julgamentos complexos nem gerenciar estado → ele serve apenas como ponte para conectar a intenção do usuário ao sistema
Perspectivas futuras e princípios que permanecem
- A tecnologia está evoluindo rapidamente, então o que é impossível hoje pode em breve se tornar viável
- Porém, problemas estruturais que o LLM não consegue resolver provavelmente continuarão existindo:
- Lógicas que não usam LLM são mais fáceis de entender e de manter, além de facilitarem o controle de versões
- O custo de execução também é mais baixo
- Mesmo no futuro, o LLM deve continuar focado no papel de interface, enquanto a lógica central deve ficar a cargo de sistemas dedicados
1 comentários
Comentários do Hacker News
Existem dois tipos de lógica
O tipo 1 se aplica a áreas como segurança, finanças e matemática
O tipo 2 tem alta probabilidade de ser substituído por IA
Partes diferentes do mesmo aplicativo podem se encaixar no tipo 1 ou no tipo 2
Em um hackathon recente, foi criado um jogo educacional
Um LLM não deve implementar lógica
É difícil entender as capacidades dos LLMs
Se a resposta de um LLM precisa ser rápida e barata, use prompts curtos e modelos pequenos
É difícil testar algo baseado apenas em LLM
Usar LLMs na lógica de negócio é arriscado
É possível usar imagens geradas por IA para resumir artigos