Como programar com LLMs
(crawshaw.io)- Texto que resume a experiência de programar com LLMs (modelos de linguagem de grande porte) ao longo do último ano
- Os LLMs aumentaram a produtividade, e é difícil voltar a programar sem usá-los
- O foco está principalmente no ambiente de programação em Go, com o desenvolvimento de uma ferramenta chamada sketch.dev
Contexto
- Tudo começou pela curiosidade em relação a uma nova tecnologia.
- Houve fascínio pela capacidade dos LLMs de gerar respostas complexas para perguntas ou escrever código de programação
- Isso despertou um interesse e uma sensação de potencial semelhantes aos do surgimento inicial da internet
- Foi identificado o ganho líquido obtido quando a ferramenta gera código “geralmente correto”, junto com o esforço para aplicar isso de forma prática
Principais casos de uso
-
Autocompletar (Autocomplete)
- Aumento de produtividade ao deixar tarefas de codificação frequentemente repetitivas para o autocompletar
- Em especial, os modelos FIM (Fill-In-the-Middle) são essenciais nas tarefas do dia a dia
-
Substituição de busca (Search)
- Responde a perguntas específicas de programação (ex.: configurar a opacidade de um botão em CSS) com mais precisão do que mecanismos de busca
- As respostas dos LLMs podem estar erradas, mas essa limitação é aceita no uso prático
-
Programação guiada por chat (Chat-driven Programming)
- A área mais difícil, mas também a mais valiosa.
- Assume tarefas iniciais como criar novos arquivos e pesquisar bibliotecas.
- O objetivo da programação conversacional é reduzir os incômodos atuais e tornar as capacidades dos LLMs mais amigáveis para o usuário
Essência da programação conversacional
-
Por que usar conversa?
- Útil para fornecer um primeiro rascunho quando a energia cai ao longo do dia
- Ver e revisar um rascunho inicial é mais eficiente do que escrever tudo do zero
-
Forma de trabalhar com LLMs
- Definir objetivos de tarefa claros e concisos
- Ler, validar e corrigir o código
- Usar erros do compilador para resolver problemas rapidamente
-
Escrever testes de forma eficaz
- Os LLMs são entusiasmados para escrever testes e podem montar um ambiente de testes mais completo
- Além de testes baseados em exemplos, também é possível expandir para fuzz test
Exemplo: amostrador de quartis
- Objetivo: escrever um algoritmo em Go para amostrar os quartis de um fluxo de dados
- Processo
- Escrever o primeiro rascunho com ajuda de um LLM
- Melhorar o código corrigindo erros de compilação
- Reescrever o código de teste para criar uma estrutura mais legível
Possibilidades para uma nova estrutura de código
-
Pacotes menores, mais testes
- Pacotes pequenos fornecem um contexto de código mais claro, sendo mais úteis tanto para LLMs quanto para humanos
- Aumentam a possibilidade de testes independentes e de compilação bem-sucedida
-
Ex.: wrapper de API
- Recomenda-se usar wrappers leves que implementem apenas o necessário, em vez de bibliotecas oficiais muito grandes
- Reduz custos de manutenção e aprendizado
Direção futura: sketch.dev
- Uma IDE Go para LLMs
- Oferece um ambiente de programação centrado em LLMs
- Dá suporte a feedback automatizado de testes, correção de erros do compilador, integração com módulos Go e mais
- Reforça a colaboração entre humanos e LLMs para oferecer um ambiente mais produtivo
1 comentários
Comentários do Hacker News
O autor já é um engenheiro de software de nível mundial, ex-funcionário do Google e cofundador/CTO da Tailscale. É impressionante que os LLMs o tornem mais produtivo.
Os LLMs reduzem a energia inicial necessária para começar uma tarefa.
Ao usar LLMs, deve-se usá-los apenas em áreas que você conhece bem.
Os LLMs têm potencial como ferramenta de desenvolvimento de software.
É semelhante ao uso de mecanismos de busca.
Não sente vontade de usar LLMs.
Para quem não é programador, os LLMs são de grande ajuda.
Os LLMs são úteis para escrever aplicações simples.
Para quem programa como hobby, os LLMs ajudam.
Os LLMs são usados principalmente para autocompletar e buscar.