GitHub Copilot x Amazon CodeWhisperer

Feb 13 2023
A batalha pelo melhor assistente de codificação com IA começou oficialmente! O GitHub Copilot e o Amazon CodeWhisperer são assistentes de codificação baseados em IA que levam o preenchimento automático a um nível totalmente novo. Na melhor das hipóteses, eles podem escrever blocos completos de código funcional com base em apenas um pequeno texto descritivo fornecido pelo desenvolvedor.

A batalha pelo melhor assistente de codificação com IA começou oficialmente!

O GitHub Copilot e o Amazon CodeWhisperer são assistentes de codificação baseados em IA que levam o preenchimento automático a um nível totalmente novo. Na melhor das hipóteses, eles podem escrever blocos completos de código funcional com base em apenas um pequeno texto descritivo fornecido pelo desenvolvedor. Isso pode torná-lo mais eficiente como desenvolvedor
e, na minha opinião, torna o desenvolvimento muito mais divertido!✨

Então, sem mais delongas, vamos começar!

O que é um assistente de codificação alimentado por IA?

O GitHub Copilot e o Amazon CodeWhisperer são serviços que se integram ao seu editor de código e ajudam você a escrever código mais rapidamente. Mas, ao contrário das ferramentas comuns de preenchimento automático, como, por exemplo, “IntelliSense”, o Copilot e o CodeWhisperer utilizam modelos de aprendizado de máquina que foram treinados em código-fonte e linguagem natural, permitindo que eles entendam a programação e as linguagens humanas. Isso permite que eles entendam comentários escritos em inglês simples, gerem código com base na intenção do desenvolvedor e correspondam aos padrões e estilo do desenvolvedor. Conforme você digita, eles até fornecem recomendações para completar o próprio comentário inicial. Você pode aceitar a recomendação principal, visualizar mais recomendações ou simplesmente continuar escrevendo seu próprio código.

Gaste menos tempo criando clichês e padrões de código repetitivos e mais tempo com o que importa: criar um ótimo software (GitHub Copilot)

O que é o GitHub Copilot?

O GitHub Copilot foi desenvolvido pelo GitHub e OpenAI. Ele é alimentado pelo modelo Codex da OpenAI, que foi treinado em código-fonte disponível publicamente, incluindo repositórios públicos no GitHub. O Copilot foi anunciado oficialmente “fora da visualização técnica” em junho de 2022.

Comece a digitar um comentário descritivo ou nome de função e o Copilot tentará preencher automaticamente o restante

O Copilot é muito fácil de usar e oferece integração simplificada com todos os principais editores de código. O GitHub Copilot é otimizado para as sete principais linguagens de programação (consulte a tabela abaixo para obter detalhes), mas também é capaz de gerar sugestões em outras linguagens e em uma ampla variedade de estruturas.

O Copilot foi gratuito durante o estágio de visualização, mas o GitHub anunciou recentemente que passará para um modelo baseado em assinatura. Você ainda pode obter uma avaliação gratuita de 60 dias e ela permanecerá gratuita para estudantes verificados e mantenedores de projetos populares de código aberto.

As sugestões do copiloto dependem do contexto. Observe como ele “aprende” que você quer usar constantes, e como ele preenche os objetos com os nomes e números corretos

O que é Amazon CodeWhisperer?

Amazon CodeWhisper foi desenvolvido pela Amazon. Seus modelos de ML são treinados em várias fontes de dados, incluindo código interno da Amazon e código-fonte aberto.

CodeWhisperer completa seus comentários. Em seguida, ele usa os comentários para sugerir código. Você pode alternar entre diferentes implementações de código para escolher aquela que melhor se adapta.

O CodeWhisperer ainda está em pré-visualização e suporta menos idiomas e menos dos principais editores de código do que o GitHub Copilot. No entanto, um amplo suporte de linguagem e IDE não é sua principal atração. Em vez disso, o CodeWhisperer se concentra em fornecer suporte de primeira classe para APIs da AWS, que fornece recomendações de código para APIs da AWS nos serviços mais populares, incluindo Amazon Elastic Compute Cloud (EC2), AWS Lambda e Amazon Simple Storage Service (S3). Qualidade acima de quantidade?

De acordo com esta postagem no blog da Amazon, um usuário deve ser capaz de escrever “fazer upload de um arquivo para S3.” e recomende os trechos de código gerados diretamente no IDE.

Durante o período de pré-visualização, os desenvolvedores podem usar o CodeWhisperer gratuitamente, inscrevendo-se aqui .

Comparação

Comparação entre GitHub Copilot e Amazon CodeWhisperer. EDIT: Copilot é otimizado para esses idiomas, mas suporta cada vez mais.

Qual é mais popular?

Dado o curto tempo de vida do CodeWhisperer (lançado no mês passado), não consegui encontrar nenhum dado relacionado ao número de usuários. No entanto, provavelmente é seguro dizer que o GitHub Copilot, com um ano de vantagem, atualmente é o jogador dominante. Segundo o próprio GitHub , mais de 1,2 milhão de desenvolvedores usaram a prévia técnica do Copilot nos últimos 12 meses. Sua própria pesquisa mostra que os usuários aceitaram em média 26% de todas as conclusões mostradas pelo GitHub Copilot, e até 40% dos arquivos de código dos desenvolvedores foram gerados pelo GitHub Copilot.

E a privacidade?

Para melhorar seu desempenho, tanto o Copilot quanto o CodeWhisperer coletam dados de seus usuários. Você está colocando em risco a base de código ou os dados da sua organização usando essas ferramentas no trabalho? Esta é uma questão importante e um potencial obstáculo para a maioria das empresas.

Para fornecer sugestões de código, o GitHub Copilot envia seu código e comentários para o serviço GitHub Copilot. Este serviço depende do conteúdo do arquivo semelhante ao contexto, tanto no arquivo que você está editando quanto nos arquivos vizinhos ou relacionados dentro de um projeto. Ele também pode coletar URLs de repositórios ou caminhos de arquivos para identificar o contexto relevante. Partes da coleta de dados podem ser desativadas nas configurações de telemetria. Outras partes, como informações de uso, são necessárias para o uso do Copilot e não podem ser desligadas. Isso pode incluir dados pessoais, conforme mencionado na Declaração de Privacidade do GitHub .

O GitHub também afirma que, a partir de seus testes internos, eles descobriram que era raro que as sugestões do GitHub Copilot incluíssem dados pessoais literalmente do conjunto de treinamento (“raro”..? ). No entanto, algumas dessas sugestões podem parecer apenas dados pessoais — endereços de e-mail, números de telefone etc. — mas, na verdade, são informações fictícias sintetizadas a partir de padrões nos dados de treinamento.

O Amazon CodeWhisperer também coleta determinadas informações, como informações contextuais (incluindo conteúdo do arquivo), feedback, métricas de telemetria e informações do ambiente do usuário. Em seus Termos de Serviço, a Amazon afirma que, durante a fase de visualização, eles podem oferecer a você a opção de ativar ou desativar o compartilhamento de conteúdo.

E os riscos e vulnerabilidades?

Ambos os assistentes são treinados em código público que pode conter padrões de codificação inseguros, bugs ou referências a APIs ou idiomas desatualizados. O estudo “Dormindo no Teclado? Avaliando a segurança das contribuições de código do GitHub Copilot ” descobriu que até 40% de seus cenários de teste usando o Copilot continham código vulnerável.

O GitHub admite que o Copilot às vezes pode sugerir usos antigos ou obsoletos de bibliotecas e linguagens e que pode sintetizar códigos que contêm padrões indesejáveis. Para mitigar isso, eles sugerem usar seu produto em combinação com ferramentas como GitHub Actions, Dependabot e CodeQL para ajudar a melhorar a qualidade do código.

O mesmo vale para a Amazon, embora, para seu crédito, a Amazon tenha tomado grandes medidas para neutralizar isso, fornecendo verificações de segurança para detectar vulnerabilidades em projetos Java e Python.

Quando você escolhe Executar verificação de segurança, o CodeWhisperer detecta essa vulnerabilidade e exibe o problema. (fonte: blog de aprendizado de máquina da AWS)

Dito isto, você deve sempre usar seus assistentes de codificação baseados em IA juntamente com testes adequados, boas práticas de revisão de código e ferramentas de segurança confiáveis, bem como seu próprio julgamento!

E o (mau) uso do código público?

Houve uma conscientização sobre o uso substancial de código público no conjunto de treinamento. Idealmente, um assistente deve gerar consistentemente um código que nunca foi visto antes. Se, em vez disso, o assistente recitar o código diretamente do conjunto de treinamento, ele poderá desqualificá-lo de ser considerado uso justo e poderá infringir os direitos autorais do proprietário original.

Para atenuar isso, o Copilot possui um filtro integrado que tenta detectar e suprimir instâncias em que uma sugestão do GitHub Copilot contém código que corresponde ao código público no GitHub. Este filtro é opcional e pode ser desativado. De acordo com o próprio GitHub, o Copilot produzirá trechos de código verbatim com mais de ~ 150 caracteres em cerca de 1% do tempo. Eles culpam os casos em que o GitHub Copilot não consegue obter contexto suficiente do código que você está escrevendo ou quando há uma solução comum, talvez até universal, para o problema.

Semelhante ao Copilot, o CodeWhisperer também vem com um rastreador de referência que pode detectar quando as saídas geradas podem ser semelhantes a dados de treinamento específicos. Em relação à coleta de código escrito pelo usuário, a Amazon afirma que não usará nenhum código escrito pelo desenvolvedor para treinar ainda mais seus modelos durante a fase de visualização. No entanto, o CodeWhisperer armazena dados de atividade do usuário relacionados às respostas dos desenvolvedores às recomendações de código, como aceitar ou rejeitar uma recomendação. O serviço usa esse feedback para tornar seus modelos de ML mais precisos para que o CodeWhisperer possa melhorar as recomendações futuras.

O vencedor é..?

O GitHub Copilot é o vencedor quando se trata de suporte a idiomas e IDE. Ele também existe há mais tempo e está oficialmente fora da visualização, dando aos desenvolvedores mais tempo para corrigir bugs e suavizar os solavancos na estrada. Usá-lo requer um pequeno investimento financeiro, mas você obtém um produto totalmente funcional e pronto para uso.

No entanto, se você estiver trabalhando no ambiente AWS, o Amazon CodeWhisperer provavelmente é para você. Eu realmente admiro o esforço da Amazon em ser o primeiro provedor de serviços em nuvem a oferecer um assistente de codificação inteligente que é amplamente voltado para seu próprio produto e espero que mais provedores sigam o exemplo (estou olhando para você, Azure!). Além disso, sua detecção de vulnerabilidade integrada também pode ser um bom motivo para considerá-la. Por fim, o fato de ser atualmente gratuito é um forte incentivo para pelo menos experimentá-lo enquanto está em pré-visualização. Isso, no entanto, exigirá que você se inscreva e aguarde pacientemente sua vez. ⏳

Por fim, vamos parar por um momento para avaliar o quão longe a tecnologia chegou e as ferramentas incríveis que agora podemos utilizar como desenvolvedores! Tanto o GitHub Copilot quanto o Amazon CodeWhisperer são tecnologias incríveis que prevejo que serão uma ferramenta obrigatória para todos os desenvolvedores sérios em um futuro não tão distante. E como outros atores como Google e Salesforce estão começando a mergulhar na água, certamente parece que logo entraremos em uma nova era quando se trata de desenvolver código.

Espero que você tenha achado este artigo útil. Obrigado por ler!

Nota do editor:

O GitHub Copilot tem sido extremamente valioso em meu trabalho como cientista de dados. Fazer análise de dados geralmente exige que eu teste hipóteses rapidamente. Como geralmente não sei com antecedência qual será o resultado, muitas vezes acabo escrevendo muitos códigos quase idênticos que executarei apenas uma vez, para confirmar ou rejeitar minha hipótese. O GitHub Copilot tem sido uma ótima ferramenta para acelerar esse processo e também se integra bem com todos os IDE favoritos dos cientistas de dados, ou seja, o Jupyter Notebook (no VS Code) !

REFERÊNCIAS

  • GitHub, seu programador de pares de IA (2022), github.com
  • Amazon, companheiro de codificação baseado em ML — Amazon CodeWhisperer — Amazon Web Services (2022), aws.amazon.com
  • Amazon, AWS anuncia Amazon CodeWhisperer (prévia) (2022), aws.amazon.com
  • A. Desai e A. Deo, Apresentando o Amazon CodeWhisperer, o companheiro de codificação com tecnologia de ML (2022), AWS Machine Learning Blog
  • S. Bhattacharyya, Batalha de assistentes de codificação de IA: GitHub Copilot vs Amazon CodeWhisperer (2022), analyticsindiamag.com
  • B. Dickson, GitHub Copilot agora é público - aqui está o que você precisa saber (2022), venturebeat.com
  • F. Lardinois, a Amazon lança o CodeWhisperer, uma ferramenta de programação de par de IA semelhante ao GitHub Copilot (2022), techcrunch.com
  • D. Gershgorn, a ferramenta de codificação automática do GitHub baseia-se em bases legais não testadas (2021), theverge.com