Quando revisei Amazon CodeWhisperer, Google Bard e GitHub Copilot em junho de 2023, CodeWhisperer poderia gerar código em um IDE e fazer análises de segurança, mas faltava uma janela de bate-papo e explicações de código. A versão atual do CodeWhisperer agora se chama Amazon Q Developer e possui uma janela de bate-papo que pode explicar o código e vários outros recursos que podem ser relevantes para você, especialmente se você desenvolve muito usando AWS.
Atualmente, o Amazon Q Developer é executado em Visual Studio Code, Visual Studio, IDEs JetBrains, Amazon Console e linha de comando do macOS. Q Developer também oferece agentes assíncronos, traduções de linguagens de programação e transformações/atualizações de código Java. Além de gerar, completar e discutir código, o Q Developer pode escrever testes de unidade, otimizar código, verificar vulnerabilidades e sugerir soluções. Ele suporta conversas em inglês e código nas linguagens de programação Python, Java, JavaScript, TypeScript, C#, Go, Rust, PHP, Ruby, Kotlin, C, C++, shell script, SQL e Scala.
Você pode conversar com o Amazon Q Developer sobre os recursos da AWS e solicitar que ele revise seus recursos, analise sua fatura ou crie soluções. Ele conhece os padrões bem arquitetados, a documentação e a implementação de soluções da AWS.
De acordo com a Amazon, o Amazon Q Developer é “desenvolvido pela Amazon Bedrock” e treinado em “conteúdo AWS de alta qualidade”. Como o Bedrock oferece suporte a muitos modelos básicos, não fica claro na declaração da web qual deles foi usado para o Amazon Q Developer. Perguntei e recebi esta resposta de um porta-voz da AWS: “O Amazon Q usa vários modelos para executar suas tarefas e usa lógica para rotear tarefas para o modelo que melhor se adapta ao trabalho”.
O Amazon Q Developer possui um rastreador de referência que detecta se uma sugestão de código pode ser semelhante ao código disponível publicamente. O rastreador de referência pode rotulá-los com uma URL de repositório e informações de licença do projeto ou, opcionalmente, filtrá-los.
O Amazon Q Developer concorre diretamente com GitHub Copilot, JetBrains AI e Tabnine, e concorre indiretamente com vários modelos de linguagem grande (LLMs) e modelos de linguagem pequena (SLMs) que conhecem código, como Code Llama, StarCoder, Bard, OpenAI Codex e Mistral Codestral. O GitHub Copilot pode conversar em dezenas de linguagens naturais, ao contrário da do Amazon Q Developer, e oferece suporte a uma série de extensões de fornecedores de programação, nuvem e banco de dados, em oposição aos vínculos exclusivos da AWS do Amazon Q Developer.
Instalando o Amazon Q Developer
Dados os vários ambientes em que o Amazon Q Developer pode ser executado, não é surpresa que existam vários instaladores. A única parte complicada é a assinatura e a autenticação.
Instalando Q Developer no Visual Studio Code
Você pode instalar o Amazon Q Developer no Visual Studio Code Marketplace ou na barra lateral Extensões no Visual Studio Code. Você pode acessar essa barra lateral no ícone Extensões na extremidade esquerda, pressionando Shift-Command-X ou escolhendo Extensões: Instalar extensões na paleta de comandos. Digite “Amazon Q” para encontrá-lo. Depois de instalar a extensão, você precisará se autenticar na AWS conforme discutido abaixo.
Instalando Q Developer em IDEs JetBrains
Assim como o Visual Studio Code, a JetBrains possui um mercado para plug-ins IDE, onde o Amazon Q Developer está disponível. Você precisará reiniciar o IDE após baixar e instalar o plugin. Em seguida, você precisará se autenticar na AWS conforme discutido abaixo. Observe que o plug-in Amazon Q Developer desativa o preenchimento de código de linha completa do JetBrains in-line local.
Instalando o Q Developer no AWS Toolkit for Visual Studio
Para o Visual Studio, o Amazon Q Developer faz parte do AWS Toolkit, que você pode encontrar no Visual Studio Marketplace. Novamente, depois de instalar o kit de ferramentas, você precisará se autenticar na AWS conforme discutido abaixo.
Assinatura e autenticação do Amazon Q Developer
O processo de autenticação é confuso porque existem várias opções e várias etapas que alternam entre o IDE e o navegador da web. Costumava-se repetir esse processo com frequência, mas o gerente de produto me garantiu que a reautenticação agora só deve ser necessária a cada três meses.
Instalando Q Developer para linha de comando
Atualmente, o Amazon Q Developer para linha de comando é apenas para macOS, embora uma versão Linux esteja no roteiro e documentada como um destino remoto. A instalação do macOS é basicamente o download de um arquivo DMG, seguido da execução da imagem do disco, arrastando o arquivo Q para o diretório de aplicativos e executando o aplicativo Q para instalar a CLI q
programa e um ícone na barra de menu que pode exibir as configurações e o guia do usuário da web. Você também precisará se autenticar na AWS, que fará seu login.
Desenvolvedor Amazon Q no Console AWS
Se você estiver executando como usuário do IAM em vez de usuário root, será necessário adicionar permissões do IAM para usar o Amazon Q Developer. Depois de obter permissão, a AWS deverá exibir um ícone à direita da tela que abre a interface do Amazon Q Developer.
Avaliando o desenvolvedor Amazon Q
De acordo com a AWS, “o Amazon Q Developer Agent alcançou as pontuações mais altas de 13,4% no SWE-Bench Leaderboard e 20,5% no SWE-Bench Leaderboard (Lite), um conjunto de dados que avalia recursos de codificação. Os recursos de verificação de segurança do Amazon Q superam todas as ferramentas publicamente comparáveis na detecção nas linguagens de programação mais populares.”
Ambos os números citados estão refletidos no site SWE-Bench, mas há dois problemas. Nenhum dos números foi verificado ainda pelo SWE-Bench, e a classificação do Amazon Q Developer no Lite Leaderboard caiu para o terceiro lugar. Além disso, se houver um documento de apoio na web para a alegação de verificação de segurança da Amazon, ele escapou das minhas pesquisas.
SWE-Bench, da Cornell, é “uma estrutura de avaliação que consiste em 2.294 problemas de engenharia de software extraídos de problemas reais do GitHub e solicitações pull correspondentes em 12 repositórios Python populares”. As pontuações refletem as taxas de solução. O conjunto de dados Lite é um subconjunto de 300 problemas do GitHub.
Vamos explorar como o Amazon Q Developer se comporta nas diversas tarefas que oferece suporte em algumas das 15 linguagens de programação que oferece suporte. Esta não é uma referência formal, mas sim uma tentativa de ter uma ideia de como funciona. Lembre-se de que o Amazon Q Developer é sensível ao contexto e tenta usar a persona que considera mais adequada ao ambiente onde você pede ajuda.
Geração preditiva de código inline com Amazon Q Developer
Tentei uma pergunta de softball para geração preditiva de código e usei um dos exemplos de sugestões in-line da Amazon. O prompt do Python fornecido foi # Function to upload a file to an S3 bucket
. Pressionar Opção-C conforme as instruções me deu o código abaixo do prompt na captura de tela abaixo, após um caractere ilegal que tive que excluir. tive que digitar import
na parte superior para solicitar que o Amazon Q gere as importações para logging
, boto3
e ClientError
.
Também usei o Q Chat para me dizer como resolver as importações; sugeriu um pip
comando, mas no meu sistema isso corrigiu o ambiente Python errado (v 3.11). Tive que fazer uma pequena investigação na árvore de diretórios do Frameworks para me lembrar de usar pip3
para atingir meu ambiente atual do Python v 3.12. Tive vontade de cantar “Daisy, Daisy” para Dave e reclamar que minha mente estava indo mal.
Também experimentei dois outros exemplos de sugestões embutidas da Amazon. O exemplo para completar uma série de usuários falsos em Python funcionou principalmente; Eu tive que adicionar o fechamento )
eu mesmo. O exemplo para gerar testes unitários falhou quando pressionei a Opção-C: gerou caracteres ilegais em vez de chamadas de função. (Estou começando a suspeitar de um problema com a Opção C no VS Code no macOS. Pode ou não ter algo a ver com o Amazon Q Developer.)
Quando reiniciei o VS Code, tentei novamente, e desta vez pressionei Return na linha abaixo do comentário, funcionou bem, gerando o test_sum
função abaixo.
# Write a test case for the above function. def test_sum(): """ Unit test for the sum function. """ assert sum(1, 2) == 3 assert sum(-1, 2) == 1 assert sum(0, 0) == 0
A AWS mostra exemplos de conclusão do Amazon Q Developer em até meia dúzia de linguagens de programação em sua documentação. Os exemplos, como os de Python que discutimos, são muito simples, por exemplo, adicionar dois números, ou estão relacionados a operações comuns da AWS suportadas por APIs, como o upload de arquivos para um bucket S3.
Linguagem natural para geração de código com Amazon Q Developer
Como agora eu acreditava que o Amazon Q Developer pode gerar Python, especialmente para seus próprios exemplos de teste, tentei algo um pouco diferente. Conforme mostrado na captura de tela abaixo, criei um arquivo chamado quicksort.cpp e digitei um comentário inicial:
//function to sort a vector of generics in memory using the quicksort algorithm
O Amazon Q Developer continuou tentando preencher automaticamente este comentário e, em alguns casos, a implementação também, para diversos problemas. No entanto, foi fácil continuar digitando minha especificação enquanto o Amazon Q Developer apagava o que havia gerado e o Amazon Q Developer eventualmente gerava uma implementação quase correta.
Quicksort é um algoritmo bem conhecido. Ambas as bibliotecas C e C++ possuem implementações, mas não usam genéricos. Em vez disso, você precisa escrever funções de comparação específicas do tipo para passar para qsort
. Isso é histórico, pois as bibliotecas foram implementadas antes dos genéricos serem adicionados às linguagens.