GitHub Copilot frente a Amazon CodeWhisperer

Feb 13 2023
¡La batalla por el mejor asistente de codificación impulsado por IA ha comenzado oficialmente! GitHub Copilot y Amazon CodeWhisperer son asistentes de codificación impulsados ​​por IA que llevan el autocompletado a un nivel completamente nuevo. En el mejor de los casos, pueden escribir fragmentos completos de código funcional basándose en un pequeño texto descriptivo proporcionado por el desarrollador.

¡La batalla por el mejor asistente de codificación impulsado por IA ha comenzado oficialmente!

GitHub Copilot y Amazon CodeWhisperer son asistentes de codificación impulsados ​​por IA que llevan el autocompletado a un nivel completamente nuevo. En el mejor de los casos, pueden escribir fragmentos completos de código funcional basándose en un pequeño texto descriptivo proporcionado por el desarrollador. Esto puede hacerte más eficiente como desarrollador
y, en mi opinión, ¡hace que el desarrollo sea mucho más divertido!✨

Así que sin más preámbulos, ¡comencemos!

¿Qué es un asistente de codificación impulsado por IA?

GitHub Copilot y Amazon CodeWhisperer son servicios que se integran con su editor de código y lo ayudan a escribir código más rápido. Pero a diferencia de las herramientas comunes de autocompletar como, por ejemplo, "IntelliSense", Copilot y CodeWhisperer utilizan modelos de aprendizaje automático que fueron entrenados tanto en el código fuente como en el lenguaje natural, lo que les permite comprender tanto la programación como los lenguajes humanos. Esto les permite comprender los comentarios escritos en un lenguaje sencillo, generar código basado en la intención del desarrollador y hacer coincidir los patrones y el estilo del desarrollador. A medida que escribe, incluso brindan recomendaciones para completar el comentario inicial. Puede aceptar la recomendación principal, ver más recomendaciones o simplemente continuar escribiendo su propio código.

Dedique menos tiempo a crear patrones de código estándar y repetitivos, y más tiempo a lo que importa: crear un software excelente (GitHub Copilot)

¿Qué es el copiloto de GitHub?

GitHub Copilot fue desarrollado por GitHub y OpenAI. Está impulsado por el modelo Codex de OpenAI, que se entrenó en el código fuente disponible públicamente, incluidos los repositorios públicos en GitHub. Copilot se anunció oficialmente "fuera de vista previa técnica" en junio de 2022.

Comience a escribir un comentario descriptivo o un nombre de función y Copilot intentará autocompletar el resto

Copilot es muy fácil de usar y ofrece una integración optimizada con todos los principales editores de código. GitHub Copilot está optimizado para los siete principales lenguajes de programación (consulte el cuadro a continuación para obtener más detalles), pero también puede generar sugerencias en otros lenguajes y una amplia variedad de marcos.

Copilot ha sido gratuito durante la etapa de vista previa, pero GitHub anunció recientemente que pasarán a un modelo basado en suscripción. Todavía puede obtener una prueba gratuita de 60 días, y seguirá siendo gratuita para estudiantes verificados y mantenedores de proyectos populares de código abierto.

Las sugerencias de Copilot dependen del contexto. Observa cómo "aprende" que quieres usar constantes y cómo llena los objetos con los nombres y números correctos

¿Qué es Amazon CodeWhisperer?

Amazon CodeWhisper fue desarrollado por Amazon. Sus modelos ML están entrenados en varias fuentes de datos, incluido el código interno de Amazon y el código de fuente abierta.

CodeWhisperer completa sus comentarios. Luego usa los comentarios para sugerir código. Puede alternar entre diferentes implementaciones de código para elegir la que mejor se adapte.

CodeWhisperer todavía está en versión preliminar y admite menos idiomas y menos editores de código principales que GitHub Copilot. Sin embargo, un lenguaje amplio y soporte IDE no son su principal atractivo. En cambio, CodeWhisperer se enfoca en brindar soporte de primera clase para las API de AWS, lo que brinda recomendaciones de código para las API de AWS en los servicios más populares, incluidos Amazon Elastic Compute Cloud (EC2), AWS Lambda y Amazon Simple Storage Service (S3). ¿Calidad sobre cantidad?

Según esta publicación de blog de Amazon, un usuario debería poder escribir "cargar un archivo en S3", y CodeWhisperer determinará automáticamente qué servicios en la nube y bibliotecas públicas son los más adecuados para la tarea especificada, creará el código específico sobre la marcha, y recomendar los fragmentos de código generados directamente en el IDE.

Durante el período de vista previa, los desarrolladores pueden usar CodeWhisperer sin costo registrándose aquí .

Comparación

Comparación entre GitHub Copilot y Amazon CodeWhisperer. EDITAR: Copilot está optimizado para estos idiomas, pero admite cada vez más.

¿Cuál es más popular?

Dada la corta vida útil de CodeWhisperer (lanzado el mes pasado), no pude encontrar ningún dato relacionado con la cantidad de usuarios. Sin embargo, probablemente sea seguro decir que GitHub Copilot, con su ventaja inicial de un año, actualmente es el jugador dominante. Según el propio GitHub , más de 1,2 millones de desarrolladores utilizaron la vista previa técnica de Copilot en los últimos 12 meses. Su propia investigación muestra que los usuarios aceptaron en promedio el 26 % de todas las finalizaciones mostradas por GitHub Copilot, y hasta el 40 % de los archivos de código de los desarrolladores fueron generados por GitHub Copilot.

¿ Qué pasa con la privacidad?

Para mejorar su rendimiento, tanto Copilot como CodeWhisperer recopilan datos de sus usuarios. ¿Está poniendo en riesgo la base de código o los datos de su organización al usar estas herramientas en el trabajo? Esta es una pregunta importante y un posible factor decisivo para la mayoría de las empresas.

Para proporcionar sugerencias de código, GitHub Copilot envía su código y comentarios al servicio de GitHub Copilot. Este servicio se basa en contenido de archivo similar al contexto, tanto en el archivo que está editando como en archivos vecinos o relacionados dentro de un proyecto. También puede recopilar las URL de los repositorios o las rutas de los archivos para identificar el contexto relevante. Partes de la recopilación de datos se pueden desactivar en la configuración de telemetría. Otras partes, como la información de uso, son necesarias para el uso de Copilot y no se pueden apagar. Esto puede incluir datos personales, como se menciona en la Declaración de privacidad de GitHub .

GitHub también afirma que a partir de sus pruebas internas, encontraron que era raro que las sugerencias de GitHub Copilot incluyeran datos personales textualmente del conjunto de entrenamiento ("raro"..? ). Sin embargo, algunas de estas sugerencias pueden parecer datos personales (direcciones de correo electrónico, números de teléfono, etc.), pero en realidad son información ficticia sintetizada a partir de patrones en datos de entrenamiento.

Amazon CodeWhisperer también recopila cierta información, como información contextual (incluido el contenido del archivo), comentarios, métricas de telemetría e información sobre el entorno del usuario. En sus Términos de servicio, Amazon establece que durante la fase de vista previa, pueden ofrecerle la opción de activar o desactivar el uso compartido de contenido.

¿Qué pasa con el riesgo y las vulnerabilidades?

Ambos asistentes están capacitados en código público que puede contener patrones de codificación inseguros, errores o referencias a API o modismos obsoletos. El estudio “¿Dormido al teclado? Evaluación de la seguridad de las contribuciones de código de GitHub Copilot ” descubrió que hasta el 40 % de sus escenarios de prueba que usaban Copilot contenían código vulnerable.

GitHub admite que Copilot a veces puede sugerir usos antiguos o obsoletos de bibliotecas y lenguajes, y que puede sintetizar código que contiene patrones no deseados. Para mitigar esto, sugieren usar su producto en combinación con herramientas como GitHub Actions, Dependabot y CodeQL para ayudar a mejorar la calidad del código.

Lo mismo ocurre con Amazon, aunque para su crédito, Amazon ha tomado grandes medidas para contrarrestar esto proporcionando escaneos de seguridad para detectar vulnerabilidades en proyectos de Java y Python.

Cuando elige Ejecutar análisis de seguridad, CodeWhisperer detecta esta vulnerabilidad y muestra el problema. (fuente: blog de aprendizaje automático de AWS)

Dicho esto, siempre debe usar sus asistentes de codificación impulsados ​​​​por IA junto con las pruebas adecuadas, las buenas prácticas de revisión de código y las herramientas de seguridad confiables, ¡además de su propio juicio!

¿Qué pasa con el (mal) uso del código público?

Ha aumentado la conciencia sobre el uso sustancial de código público en el conjunto de entrenamiento. Idealmente, un asistente debería generar código que nunca antes se haya visto. Si, en cambio, el asistente recita el código directamente del conjunto de entrenamiento, podría descalificarlo para que no se considere un uso justo y puede infringir los derechos de autor del propietario original.

Para mitigar esto, Copilot tiene un filtro integrado que intenta detectar y suprimir las instancias en las que una sugerencia de GitHub Copilot contiene código que coincide con el código público en GitHub. Este filtro es opcional y se puede desactivar. Según los propios GitHub, Copilot generará fragmentos de código textuales de más de ~ 150 caracteres aproximadamente el 1% de las veces. Culpan de esto a los casos en los que GitHub Copilot no puede obtener suficiente contexto del código que está escribiendo, o cuando existe una solución común, quizás incluso universal, al problema.

Similar a Copilot, CodeWhisperer también viene con un rastreador de referencia que puede detectar cuándo los resultados generados pueden ser similares a datos de entrenamiento particulares. Con respecto a la recopilación de código escrito por el usuario, Amazon afirma que no utilizará ningún código escrito por el desarrollador para entrenar más a sus modelos durante la fase de vista previa. Sin embargo, CodeWhisperer almacena datos de actividad del usuario relacionados con las respuestas de los desarrolladores a las recomendaciones de código, como aceptar o rechazar una recomendación. El servicio usa estos comentarios para hacer que sus modelos ML sean más precisos para que CodeWhisperer pueda mejorar las recomendaciones futuras.

El ganador es..?

GitHub Copilot es el ganador cuando se trata de soporte de lenguaje e IDE. También ha existido por más tiempo y está oficialmente fuera de vista previa, lo que le da a sus desarrolladores más tiempo para corregir errores y suavizar los baches en el camino. Usarlo requiere una pequeña inversión financiera, pero obtienes un producto completamente funcional que está listo para funcionar.

Sin embargo, si está trabajando en el entorno de AWS, Amazon CodeWhisperer probablemente sea para usted. Realmente admiro el esfuerzo de Amazon por ser el primer proveedor de servicios en la nube en ofrecer un asistente de codificación inteligente que en gran medida está dirigido a su propio producto, y espero que más proveedores hagan lo mismo (¡te estoy mirando a ti, Azure!). Además, su detección de vulnerabilidades integrada también podría ser una buena razón para considerarlo. Por último, el hecho de que actualmente sea gratuito es un fuerte incentivo para al menos probarlo mientras está en versión preliminar. Sin embargo, esto requerirá que te registres y esperes pacientemente tu turno. ⏳

Finalmente, tomemos un momento para apreciar lo lejos que ha llegado la tecnología y las increíbles herramientas que ahora podemos utilizar como desarrolladores. Tanto GitHub Copilot como Amazon CodeWhisperer son tecnologías asombrosas que predigo serán una herramienta imprescindible para todos los desarrolladores serios en un futuro no muy lejano. Y a medida que otros actores como Google y Salesforce comienzan a sumergirse en el agua, ciertamente parece que pronto entraremos en una nueva era en lo que respecta al desarrollo de código.

Espero que hayas encontrado útil este artículo. ¡Gracias por leer!

Nota del editor:

GitHub Copilot ha sido extremadamente valioso en mi trabajo como científico de datos. Hacer análisis de datos a menudo requiere que pruebe hipótesis rápidamente. Dado que generalmente no sé de antemano cuál será el resultado, a menudo termino escribiendo muchos códigos casi idénticos que solo ejecutaré una vez, ya sea para confirmar o rechazar mi hipótesis. GitHub Copilot ha sido una gran herramienta para acelerar este proceso, y también se integra bien con todos los IDE favoritos de los científicos de datos, a saber, Jupyter Notebook (en VS Code) .

REFERENCIAS

  • GitHub, su programador de pares de IA (2022), github.com
  • Amazon, compañero de codificación basado en ML — Amazon CodeWhisperer — Amazon Web Services (2022), aws.amazon.com
  • Amazon, AWS anuncia Amazon CodeWhisperer (versión preliminar) (2022), aws.amazon.com
  • A. Desai y A. Deo, Presentación de Amazon CodeWhisperer, el compañero de codificación basado en ML (2022), Blog de aprendizaje automático de AWS
  • S. Bhattacharyya, Batalla de asistentes de codificación de IA: GitHub Copilot vs Amazon CodeWhisperer (2022), analyticsindiamag.com
  • B. Dickson, GitHub Copilot ahora es público: esto es lo que necesita saber (2022), venturebeat.com
  • F. Lardinois, Amazon lanza CodeWhisperer, una herramienta de programación de pares de IA similar a GitHub Copilot (2022), techcrunch.com
  • D. Gershgorn, la herramienta de codificación automática de GitHub se basa en un terreno legal no probado (2021), theverge.com