Primeiras impressões do Amazon CodeWhisperer por um usuário do GitHub Copilot

O Amazon CodeWhisperer recentemente foi disponibilizado para uso geral e, como um desenvolvedor que utiliza o GitHub Copilot semanalmente e trabalha com AWS diariamente, eu estava ansioso para testá-lo. Neste artigo, compartilharei minhas impressões e as principais diferenças que notei ao experimentar o novo assistente da Amazon.

Para dar algum contexto, eu tenho usado o GitHub Copilot semanalmente em meus projetos de código aberto, como o KoPylot. Tenho escrito código há mais de 10 anos e devo dizer que ele é uma das melhores ferramentas de codificação que já usei.

Na minha visão, o Copilot atua como um assistente para um escultor, adicionando argila nos locais exatos onde o escultor deseja trabalhar. Embora possa haver momentos em que ele aplique um pouco mais ou menos argila do que o necessário, no geral, ele contribui significativamente para o processo.

Começando com CodeWhisperer

A AWS adotou uma abordagem diferente com o CodeWhisperer, permitindo que os usuários utilizem a ferramenta sem uma conta AWS. Este é um passo importante para aumentar a adoção. Isso ocorre porque criar uma conta AWS requer um cartão de crédito e, atualmente, o CodeWhisperer é gratuito para usuários individuais.

É importante notar que, embora seja gratuito agora, ele pode não ser para sempre. O GitHub Copilot seguiu uma abordagem semelhante antes de introduzir uma taxa mensal de US$ 10. Para empresas, o preço de ambas as ferramentas é o mesmo, US$ 19/usuário/mês.

Ao contrário do Copilot, o CodeWhisperer não possui sua própria extensão do VS Code. Ele faz parte de uma extensão genérica para serviços AWS chamada AWS Toolkit. Essa abordagem pode intimidar usuários que não estão familiarizados com a AWS, já que a extensão contém muitos recursos não relacionados ao CodeWhisperer.

Uma imagem da extensão AWS Toolkit mostrando todos os serviços que ela suporta Extensão AWS Toolkit mostrando todos os serviços que ela suporta.

Você pode encontrar aqui um tutorial em vídeo da AWS mostrando todas as etapas para instalar o CodeWhisperer. O tutorial também mostra como configurar o CodeWhisperer em diferentes IDEs.

Suporte de linguagem

De acordo com seu artigo de lançamento o CodeWhisperer suporta Python, Java, JavaScript, TypeScript, C#, Go, Rust, PHP, Ruby, Kotlin, C, C++, Shell scripting, SQL e Scala.

Em contraste, o Copilot foi treinado em todas as linguagens que aparecem em repositórios públicos, com linguagens menos representadas produzindo sugestões menos robustas (fonte).

Durante meus testes, senti as limitações do suporte de linguagem do CodeWhisperer. Especificamente, ao escrever documentação em um arquivo README.md e ao escrever código Terraform.

CodeWhisperer dizendo que ainda não pode gerar código Terraform CodeWhisperer dizendo que ainda não pode gerar código Terraform.

Entendo a cautela da AWS em relação ao suporte de linguagem do CodeWhisperer. O Bard do Google é um bom exemplo do que pode acontecer com uma grande empresa quando ela lança um produto de IA com grande falhas.

No entanto, espero que a AWS adicione suporte não apenas para Terraform e Markdown, mas também para HTML, CSS, YAML e JSON em um futuro próximo. A falta de suporte para essas linguagens pode ser um grande obstáculo para alguns desenvolvedores.

Recursos

Copilot X foi lançado recentemente, mas como ainda não tenho acesso a ele, não mencionarei seus novos recursos nesta seção.

O recurso que mais gostei no CodeWhisperer é a Análise de Segurança de Código, que o Copilot não oferece. A AWS fornece 50 análises por mês para usuários individuais. A análise de segurança verifica vulnerabilidades no código e fornece sugestões para a correção.

Análise de segurança do CodeWhisperer CodeWhisperer mostrando vulnerabilidades encontradas no código.

Outro recurso exclusivo no CodeWhisperer é a indicação de similaridade de código entre o seu e outros projetos. Se o trecho gerado for semelhante a um código de código aberto, ele mostrará a origem. Isso é bom porque os projetos de código aberto pelo menos receberão algum crédito, diferente do que acontece com o Copilot.

Fiquei feliz em ver que o CodeWhisperer também oferece a geração de código para notebooks Jupyter dentro do VS Code, o que é muito conveniente quando você está trabalhando com manipulação de dados. A integração com o JupyterLab não está disponível no momento, no entanto.

Integração do CodeWhisperer com o Jupyter Notebook CodeWhisperer gerando código para um notebook Jupyter.

Minha experiência como usuário

Como parte de meus experimentos, executei ambos os assistentes lado a lado e aqui está o que notei:

  • Trabalhando com código Python, ambas as ferramentas produziram resultados semelhantes, com o Copilot sendo um pouco melhor.
  • O CodeWhisperer demorou um pouco mais para gerar código, mas não o suficiente para ser um problema.
  • O Copilot fornece mais sugestões inline não solicitadas, enquanto o CodeWhisperer ocasionalmente precisa de Option + C para solicitar conclusões.

Apesar da velocidade de saída um pouco mais lenta do CodeWhisperer, não vejo isso como motivo para evitar a ferramenta. Como a velocidade de geração de código está diretamente relacionada ao poder de computação, a AWS não deve ter problemas para resolver essa questão.

Privacidade

Atualmente, o CodeWhisperer está hospedado apenas na região da Virgínia do Norte, o que pode causar problemas de GDPR para usuários que trabalham com dados sensíveis na Europa. Espero que a AWS hospede em breve o CodeWhisperer em regiões europeias para resolver essas preocupações.

Política de privacidade do CodeWhisperer

Vale ressaltar que você tem controle sobre se o CodeWhisperer pode usar seu código para melhorar seu serviço. Você pode alternar essa opção nas configurações do CodeWhisperer.

Configurações de privacidade do CodeWhisperer Configurações de privacidade do CodeWhisperer.

Reivindicações sobre aumento de produtividade

Ambas as ferramentas afirmam aumentar a velocidade de codificação em mais de 50%. Pessoalmente, acho que aceito as sugestões do Copilot cerca de 30-40% do tempo, o que está de acordo com a afirmação do GitHub.

Reivindicações de produtividade do CodeWhisperer CodeWhisperer fonte, GitHub Copilot Fonte

Sugestão de uso para o CodeWhisperer

Se você não tem um projeto para testar o CodeWhisperer e tem interesse em código aberto, aqui está uma sugestão de como você pode usar o CodeWhisperer para começar suas contribuições:

  1. Encontre um projeto de código aberto que você goste.
  2. Faça um fork e clone-o.
  3. Execute a ferramenta de análise de segurança do CodeWhisperer no projeto.
  4. Revise as vulnerabilidades encontradas.
  5. Crie um pull request para resolver e corrigir as vulnerabilidades.

Testei isso em alguns projetos de código aberto e encontrei muitas oportunidades de melhoria.

Conclusão

Se você desenvolve em uma das linguagens suportadas pelo Code Whisperer, definitivamente sugiro que você o experimente.

Copilot está no mercado desde outubro de 2021 e é visivelmente um produto mais maduro. Mas isso não significa que a AWS não possa alcançá-lo.

Por enquanto, pretendo continuar usando ambos os assistentes. Copilot para gerar código e CodeWhisperer para verificar o código em busca de vulnerabilidades. Também acompanharei os novos desenvolvimentos do CodeWhisperer, para que eu possa reavaliar suas capacidades de geração de código quando ele adicionar suporte para novas linguagens.

Até o próximo post! 👋

Caso queira entrar em contato, você pode me encontrar no Twitter ou no LinkedIn.