Cuando revisé Amazon CodeWhisperer, Google Bard y GitHub Copilot en junio de 2023, CodeWhisperer podía generar código en un IDE y realizar revisiones de seguridad, pero carecía de una ventana de chat y explicaciones del código. La versión actual de CodeWhisperer ahora se llama Amazon Q Developer y tiene una ventana de chat que puede explicar el código y varias otras características que pueden ser relevantes para usted, especialmente si desarrolla mucho con AWS.Amazon Q Developer actualmente se ejecuta en Visual Studio Code, Visual Studio, JetBrains IDE, la consola de Amazon y la línea de comandos de macOS. Q Developer también ofrece agentes asincrónicos, traducciones de lenguajes de programación y transformaciones/actualizaciones de código Java. Además de generar, completar y discutir código, Q Developer puede escribir pruebas unitarias, optimizar código, buscar vulnerabilidades y sugerir soluciones. Admite conversaciones en inglés y código en los lenguajes de programación Python, Java, JavaScript, TypeScript, C#, Go, Rust, PHP, Ruby, Kotlin, C, C++, scripts de shell, SQL y Scala. Puede chatear con Amazon Q Desarrollador sobre las capacidades de AWS y pídale que revise sus recursos, analice su factura o diseñe soluciones. Conoce los patrones, la documentación y la implementación de soluciones bien diseñados de AWS. Según Amazon, Amazon Q Developer está «impulsado por Amazon Bedrock» y capacitado en «contenido de AWS de alta calidad». Dado que Bedrock admite muchos modelos básicos, en la declaración web no queda claro cuál se utilizó para Amazon Q Developer. Pregunté y obtuve esta respuesta de un portavoz de AWS: «Amazon Q utiliza múltiples modelos para ejecutar sus tareas y usa la lógica para enrutar las tareas al modelo que mejor se adapta al trabajo». Amazon Q Developer tiene un rastreador de referencia que detecta si una sugerencia de código podría ser similar al código disponible públicamente. El rastreador de referencia puede etiquetarlos con una URL del repositorio e información de licencia del proyecto, u opcionalmente filtrarlos. Amazon Q Developer compite directamente con GitHub Copilot, JetBrains AI y Tabnine, e indirectamente con una serie de grandes modelos de lenguaje (LLM) y Modelos de lenguaje pequeño (SLM) que conocen el código, como Code Llama, StarCoder, Bard, OpenAI Codex y Mistral Codestral. GitHub Copilot puede conversar en docenas de lenguajes naturales, a diferencia del de Amazon Q Developer, y admite varias extensiones de proveedores de programación, nube y bases de datos, a diferencia de los vínculos exclusivos de AWS de Amazon Q Developer. Instalación de Amazon Q DeveloperDados los múltiples entornos en los que se puede ejecutar Amazon Q Developer, no sorprende que haya varios instaladores. El único truco es la firma y la autenticación. Instalación de Q Developer en Visual Studio Code Puede instalar Amazon Q Developer desde Visual Studio Code Marketplace o desde la barra lateral de Extensiones en Visual Studio Code. Puede acceder a esa barra lateral desde el ícono de Extensiones en el extremo izquierdo, presionando Shift-Command-X o eligiendo Extensiones: Instalar extensiones en la paleta de comandos. Escriba «Amazon Q» para encontrarlo. Una vez que haya instalado la extensión, deberá autenticarse en AWS como se explica a continuación. IDG Amazon Q Developer en Visual Studio Code incluye una ventana de chat (a la izquierda), así como generación de código. La ventana de chat muestra las capacidades de Amazon Q Developer. Instalación de Q Developer en JetBrains IDE Al igual que Visual Studio Code, JetBrains tiene un mercado para complementos IDE, donde Amazon Q Developer está disponible. Deberá reiniciar el IDE después de descargar e instalar el complemento. Luego deberá autenticarse en AWS como se explica a continuación. Tenga en cuenta que el complemento Amazon Q Developer deshabilita la finalización de código de línea completa de JetBrains local en línea. IDG Amazon Q Developer en IntelliJ IDEA y otros IDE de JetBrains tiene una ventana de chat a la derecha, así como finalización de código. La ventana de chat muestra las capacidades de Amazon Q Developer. Instalación de Q Developer en AWS Toolkit para Visual Studio Para Visual Studio, Amazon Q Developer es parte del AWS Toolkit, que puede encontrar en Visual Studio Marketplace. Nuevamente, una vez que haya instalado el kit de herramientas, deberá autenticarse en AWS como se explica a continuación. Firma y autenticación de Amazon Q Developer El proceso de autenticación es confuso porque hay varias opciones y varios pasos que rebotan entre su IDE y su navegador web. Solía ​​​​tener que repetir este proceso con frecuencia, pero el gerente de producto me asegura que la reautenticación ahora solo debería ser necesaria cada tres meses. Instalación de Q Developer para la línea de comandos Amazon Q Developer para la línea de comandos actualmente es solo para macOS, aunque Linux La versión está en la hoja de ruta y documentada como un objetivo remoto. La instalación de macOS es básicamente una descarga de un archivo DMG, seguida de ejecutar la imagen del disco, arrastrar el archivo Q al directorio de aplicaciones y ejecutar esa aplicación Q para instalar el programa CLI q y un ícono de barra de menú que puede mostrar configuraciones y la guía del usuario web. También deberá autenticarse en AWS, que iniciará sesión. IDG En macOS, el programa de línea de comandos q admite múltiples programas de shell y múltiples programas de terminal. Aquí estoy usando iTerm2 y el shell z. El comando q traducir construye comandos de shell para usted y el comando q chat abre un asistente de IA. Amazon Q Developer en la consola de AWS Si está ejecutando como usuario de IAM en lugar de usuario raíz, deberá agregar permisos de IAM para utilizar Amazon Q Developer. Una vez que tenga permiso, AWS debería mostrar un ícono a la derecha de la pantalla que muestra la interfaz de desarrollador de Amazon Q. IDG La ventana de desarrollador de Amazon Q a la derecha, que se ejecuta en la consola de AWS, puede conversar con usted sobre el uso de AWS y puede generar arquitecturas y código para aplicaciones de AWS. Evaluación de Amazon Q Developer Según AWS, “Amazon Q Developer Agent logró las puntuaciones más altas del 13,4 % en SWE-Bench Leaderboard y del 20,5 % en SWE-Bench Leaderboard (Lite), un conjunto de datos que compara las capacidades de codificación. Las capacidades de escaneo de seguridad de Amazon Q superan a todas las herramientas de evaluación comparativa pública en cuanto a detección en los lenguajes de programación más populares”. Ambas cifras citadas se reflejan en el sitio SWE-Bench, pero hay dos problemas. SWE-Bench aún no ha verificado ningún número, y la clasificación de Amazon Q Developer en la tabla de clasificación Lite ha caído al puesto 3. Además, si hay un documento de respaldo en la web para el reclamo de escaneo de seguridad de Amazon, ha evadido mis búsquedas. SWE-Bench, de Cornell, es “un marco de evaluación que consta de 2294 problemas de ingeniería de software extraídos de problemas reales de GitHub y las solicitudes de extracción correspondientes. en 12 repositorios populares de Python”. Las puntuaciones reflejan las tasas de solución. El conjunto de datos Lite es un subconjunto de 300 problemas de GitHub. Exploremos cómo se comporta Amazon Q Developer en las diversas tareas que admite en algunos de los 15 lenguajes de programación que admite. Este no es un punto de referencia formal, sino más bien un intento de tener una idea de qué tan bien funciona. Tenga en cuenta que Amazon Q Developer es sensible al contexto e intenta utilizar la persona que cree que mejor se adapta al entorno en el que le pide ayuda. Generación de código predictivo en línea con Amazon Q Developer Probé una pregunta de softball para la generación de código predictivo y utilicé una de Ejemplos de sugerencias en línea de Amazon. El mensaje de Python proporcionado fue # Función para cargar un archivo en un depósito de S3. Al presionar Opción-C como se me indicó, obtuve el código debajo del mensaje en la captura de pantalla a continuación, después de un carácter ilegal que tuve que eliminar. Tuve que escribir import en la parte superior para solicitar a Amazon Q que generara las importaciones para el registro, boto3 y ClientError. También utilicé Q Chat para decirme cómo resolver las importaciones; sugirió un comando pip, pero en mi sistema eso solucionó el entorno Python incorrecto (v 3.11). Tuve que investigar un poco en el árbol de directorios de Frameworks para recordarme que debía usar pip3 para apuntar a mi entorno Python v 3.12 actual. Tenía ganas de cantarle “Daisy, Daisy” a Dave y quejarme de que mi mente se estaba volviendo loca. IDG Generación de código en línea y chat con Amazon Q Developer. Todo el código debajo del comentario # TODO fue generado por Amazon Q Developer, aunque requirió varios pasos. También probé los otros dos ejemplos de sugerencias en línea integrados de Amazon. El ejemplo para completar una serie de usuarios falsos en Python funcionó en su mayoría; Tuve que agregar el cierre ]yo mismo. El ejemplo para generar pruebas unitarias falló cuando presioné Opción-C: generó caracteres ilegales en lugar de llamadas a funciones. (Estoy empezando a sospechar un problema con la Opción-C en VS Code en macOS. Puede que tenga o no algo que ver con Amazon Q Developer). Cuando reinicié VS Code, lo intenté de nuevo y esta vez presioné Retorno en el línea debajo del comentario, funcionó bien, generando la función test_sum a continuación. # Escriba un caso de prueba para la función anterior. def test_sum(): «»» Prueba unitaria para la función de suma. «»» afirmar suma(1, 2) == 3 afirmar suma(-1, 2) == 1 afirmar suma(0, 0) == 0AWS muestra ejemplos de finalización con Amazon Q Developer en hasta media docena de lenguajes de programación en su documentación. Los ejemplos, como los de Python que hemos analizado, son muy simples, por ejemplo, sumar dos números, o se relacionan con operaciones comunes de AWS respaldadas por API, como cargar archivos en un depósito de S3. Lenguaje natural para la generación de código con Amazon Q DeveloperDesde Ahora creía que Amazon Q Developer puede generar Python, especialmente para sus propios ejemplos de prueba, probé algo un poco diferente. Como se muestra en la captura de pantalla a continuación, creé un archivo llamado quicksort.cpp, luego escribí un comentario://función inicial para ordenar un vector de genéricos en la memoria usando el algoritmo de clasificación rápida. Amazon Q Developer siguió intentando autocompletar este comentario y, en algunos casos, la implementación también, para diferentes problemas. Sin embargo, fue fácil seguir escribiendo mi especificación mientras Amazon Q Developer borraba lo que había generado y Amazon Q Developer finalmente generó una implementación casi correcta. Quicksort es un algoritmo bien conocido. Tanto la biblioteca C como la C++ tienen implementaciones, pero no usan genéricos. En su lugar, debe escribir funciones de comparación específicas del tipo para pasarlas a qsort. Esto es histórico, ya que las bibliotecas se implementaron antes de que se agregaran los genéricos a los idiomas.