- Muitos desenvolvedores tentam usar LLMs para escrever código, encontram alucinações e perdem a confiança
- É comum que um LLM invente métodos ou bibliotecas que não existem
- Mas, no código, as alucinações são o tipo menos perigoso de alucinação
- O caso mais perigoso é quando o LLM produz um erro que não é detectado imediatamente pelo compilador ou interpretador
- Um método alucinado geralmente gera erro assim que é executado, então é fácil de identificar
- Em alguns casos, também é possível corrigir automaticamente ao reenviar a mensagem de erro ao LLM
- Ao contrário das alucinações em texto comum, no código é possível verificar os fatos por meio da execução
- LLMs com recursos automáticos de correção de erros
- Ferramentas como ChatGPT Code Interpreter e Claude Code executam o código escrito pelo LLM, detectam erros e fazem correções por conta própria
- Avaliar código gerado por LLM sem sequer executá-lo é ineficiente
- Alguns desenvolvedores tentam rejeitar a tecnologia inteira porque o LLM gerou métodos alucinados
- Mas, para usá-la de forma eficaz, aprendizado e experimentação são indispensáveis
- O autor pesquisa escrita de código com IA há mais de 2 anos e ainda continua aprendendo novas técnicas
- Teste manual do código é indispensável
- O fato de o código rodar normalmente não garante que ele funcione como esperado
- Nem revisão de código nem testes automatizados conseguem validar completamente a correção do código
- O processo de executar e verificar diretamente é essencial
- Como o código gerado por LLM costuma ser muito legível, há risco de baixar a guarda
- O mesmo vale para código escrito por pessoas: não se deve confiar antes de executá-lo pessoalmente
- Como reduzir alucinações
- Usar outro modelo: escolher um modelo com dados de treinamento mais ricos para determinada plataforma
- Ex.: Claude 3.7 Sonnet (com thinking mode ativado), OpenAI o3-mini-high, GPT-4o (com Python Code Interpreter)
- Aproveitar o contexto: mesmo que o LLM não conheça uma biblioteca específica, ele pode aprender padrões se receber exemplos de código
- Escolher tecnologias estáveis: bibliotecas mais antigas têm maior chance de serem melhor compreendidas pelo LLM
- A importância da revisão de código
- O texto rebate a ideia de que "se é preciso revisar todo o código escrito por um LLM, então é mais rápido escrever tudo manualmente"
- Isso também pode ser uma fala que revela pouca habilidade de revisão de código
- Revisar código gerado por LLM pode ser uma ótima oportunidade para melhorar suas habilidades
- Bônus: feedback do Claude 3.7 Sonnet
- O autor pediu ao "extended thinking mode" do Claude 3.7 Sonnet para revisar um rascunho do post
- Ele pediu para "avaliar se a lógica do texto era convincente, o que poderia ser melhorado e se faltava algo"
- O Claude ajudou a suavizar o tom do rascunho
- Link da conversa com o feedback do Claude
1 comentários
Opinião do Hacker News
O autor concordou com o texto anterior, mas não concorda com este
Mesmo que o código gerado por LLM funcione bem, se você não for o autor é difícil encontrar bugs ou falhas lógicas
O código gerado por LLM é limpo, mas faz você gastar mais tempo com QA e limpeza
The Primeagen e Casey Muratori revisam a saída dos geradores de código LLM mais recentes
Outra categoria de erro que Simon ignorou é a alucinação em que o modelo esquece funcionalidades
Métodos alucinados são um obstáculo pequeno, e quando as pessoas reclamam disso parte-se do pressuposto de que passaram o mínimo de tempo aprendendo a usar o sistema de forma eficaz
A alucinação em si não é o maior risco apresentado por LLMs
É menos perigoso apenas dentro do contexto limitado de erros de compilação
É preciso muito esforço para obter bons resultados com LLMs
Experiência escrevendo código para encontrar a clínica 'principal' de um paciente em um centro médico