¿Quieres aprender a usar la herramienta de IA que ha revolucionado el mundo de la programación? ¡En este tutorial aprenderás a dominarla!
Índice
- ¿Qué es Github Copilot?
- ¿Cómo funciona Github Copilot?
- Basta de teoría, ¡manos a la obra!
- Instalación en Visual Studio Code
- Instalación en JetBrains
- No es oro todo lo que reluce
¿Qué es Github Copilot?
Según la documentación oficial, es un compañero de programación basado en IA que ofrece sugerencias inteligentes de autocompletado de código mientras programas. GitHub Copilot se beneficia de OpenAI Codex para sugerir código y funciones completas en tiempo real, directamente desde tu editor.
Es una inteligencia artificial entrenada con billones de líneas de código, GitHub Copilot convierte las indicaciones del lenguaje natural en sugerencias de código en docenas de lenguajes de programación.
Comparte recomendaciones basadas en el contexto (incluidas las pestañas abiertas en tu IDE) y las convenciones de estilo del proyecto. Recorre rápidamente las líneas de código, completa las sugerencias de funciones y decide cuáles aceptar, rechazar o editar.
¿Cómo funciona Github Copilot?
Como he mencionado antes, se basa en OpenAI Codex. Ya que Github Copilot es en realidad un servicio que ofrece Github, pero la verdadera magia ocurre gracias a esta tecnología desarrollada por OpenAI.
Codex es un descendiente de GPT-3 (Generative Pre-Trained Transformer), un modelo generativo de lenguaje que es capaz de entender y producir lenguaje natural de alta calidad, con la habilidad de continuar un diálogo o texto que se le proporcione. GPT-3 se basa en modelos de inteligencia artificial conocidos como Transformer. Esta tecnología sentó las bases para el nacimiento de OpenAI Codex.
Esta nueva herramienta de OpenAI ha sido entrenada tanto con lenguaje natural como con billones de lineas de código abierto disponible en repositorios públicos de Github. Una de las grandes innovaciones que aporta es la capacidad de obtener información contextual del código. Esto se debe gracias a que la principal habilidad de GPT-3 es generar lenguaje natural en respuesta a una indicación de lenguaje natural. OpenAI Codex aprovecha esta habilidad para entender las indicaciones de las personas que programan para producir código. Según su página oficial «OpenAI Codex permite a los ordenadores entender mejor la intención de las personas, lo que puede permitir a todos hacer más cosas con los ordenadores.»
También se hace mención a la recopilación de datos: «También puede recopilar las URL de los repositorios o las rutas de los archivos para identificar el contexto relevante. OpenAI Codex utiliza los comentarios y el código junto con el contexto para sintetizar y sugerir líneas individuales y funciones completas.»
Basta de teoría, ¡manos a la obra!
Lo primero que debemos hacer es crearnos una cuenta de Github en caso de que no la tengamos ya. Una vez hecho esto accedemos a la página principal de Github Copilot en el siguiente enlace: https://github.com/features/copilot/
Primeros pasos
En esta página nos obligarán a empezar un periodo de prueba ya que la herramienta es de pago, excepto para estudiantes. No obstante nos ofrecen 60 días de prueba gratuita en la que tendremos acceso a las sugerencias de código en muchos lenguajes y acceso a plugins para los IDEs más usados. En este tutorial vamos a ver cómo integrarlo en Visual Studio Code y Jetbrains (Intellij IDEA)
Al introducir nuestros datos de pago solo se nos cobrará una vez finalizado este periodo de prueba. Una vez nos hemos registrado y aceptado las condiciones, nos saldrá la siguiente pantalla:
Instalación en Visual Studio Code
En caso de no tener este IDE instalado, se puede hacer en este enlace o usando el comando brew install --cask visual-studio-code
de Homebrew para macOS y Linux.
Acceder al Marketplace de Visual Studio en el siguiente enlace: https://marketplace.visualstudio.com/items?itemName=GitHub.copilot
-
-
- Aparecerá una ventana emergente indicando que se va a abrir Visual Studio Code y pulsamos “Abrir en Visual Studio Code”
- Hacemos click en instalar como se muestra en la imagen:
- Una vez instalado nos pedirá que iniciemos sesión en Github para comprobar la suscripción requerida o si el periodo de prueba no ha expirado:
- Nos redirigirá a la página oficial de Github para que proporcionemos los permisos necesarios para acceder a los recursos que Github Copilot necesita.
-
Sugerencias de código para funciones de JavaScript
- Creamos un nuevo fichero de JavaScript (
*.js
) - Escribimos la cabecera de la función y la herramienta nos sugerirá el resto de parámetros y todo el código necesario para ejecutarla. Para ver más sugerencias pulsar:
- Option (⌥) or Alt +] en macOS
- Alt + ] en Windows y Linux
- Para aceptar la sugerencia pulsar tabulador (Tab)
Ejemplos de sugerencias propuestas por Github Copilot simplemente con escribir function calculateDa
, a partir de aquí la herramienta es capaz de generar varias alternativas inferidas a partir de la cabecera de la función:
Generación de código a partir de comentarios JavaScript
- Igual que en el caso anterior, comenzamos por crear un archivo
*.js
- Escribir un comentario en lenguaje natural con las acciones que queremos que Github Copilot haga por nosotros.
- Listo! Ahí tendremos marcado en gris el código generado.
Es importante remarcar que esta herramienta no es Google, por lo tanto no podremos usarla como tal. Hay que indicar acciones, no búsquedas. Así “cómo centrar un div” nos daría el siguiente resultado tras solo escribir function
:
Para obtener una sugerencia correcta habría que escribir //Centrar todos los div
nos hará una primera sugerencia que aceptamos con Tab
y nos proporciona el resto del código:
Ejemplo de auto-explicación del código en Python
Igual que antes, queremos sugerencias de código para ordenar una lista de n elementos pero sin usar el método sort, sería demasiado sencillo y no tendría mucho sentido. Por lo tanto escribimos en un comentario la acción que queremos realizar, en este caso: #ordenar los n primeros elementos de una lista sin usar el metodo sort
Como ya hemos visto antes, con solo escribir la cabecera de la función se nos presenta una sugerencia de código, hasta aquí nada nuevo. Lo interesante viene cuando le pedimos a Copilot que nos explique cómo funciona el código generado. Para ello y cumpliendo su función de “AI pair programmer” como define la documentación oficial a Copilot, al ser un compañero lo lógico sería que se lo preguntáramos tal cual lo haríamos con nuestro compañero de carne y hueso. Pues eso haremos, le pediremos una #explicación del código anterior
Como se puede ver, van apareciendo las explicaciones paso a paso, las vamos aceptando con Tab
como hasta ahora hasta que acaba la explicación:
Instalación en JetBrains
Según la documentación oficial, Copilot es compatible con la gran mayoría de IDEs de la familia de JetBrains. Este tutorial se centrará en Intellij IDEA para macOS, siendo muy similar para el resto.
- Ir a la parte superior izquierda y pulsar en Intellij IDEA > Preferences… o ⌘ + ,
- En la parte izquierda de la ventan emergente, ir a Plugins y buscar Github Copilot en la pestaña de Marketplace. Como se ve en la imagen:
- Una vez instalado, nos pedirá que reiniciemos el IDE para poder aplicar los cambios.
- Al volver a iniciarlo, nos aparecerá un pop-up en la parte inferior derecha indicando que, al igual que en VS Code, nos autentiquemos con nuestras credenciales de Github con las que tengamos un periodo de prueba o un suscripción activa.
- Si todo ha ido bien, nos aparecerá el mensaje de la imagen indicando que Copilot ya está disponible para usarlo en el IDE:
Llegados a este punto, el uso de la herramienta es idéntico al de VS Code, por tanto los ejemplos son igual de válidos. Basta con crear un nuevo archivo con la extensión del lenguaje que se desee y escribir mediante un comentario las acciones a realizar. Desde Javascript hasta Python pasando por configurar imágenes de Docker. Los resultados obtenidos al replicar este tutorial pueden no coincidir exactamente con los expuestos en el mismo.
No es oro todo lo que reluce
Siempre que se hacen avances e innovaciones en cualquier campo surgen luces y sombras alrededor de ellos. Ya he hablado acerca de las increíbles luces que aporta Github Copilot, ahora comentaré un poco acerca de las sombras de este servicio.
Recientemente se ha conocido una demanda colectiva contra Github Copilot alegada por la convicción de que puede arruinar la comunidad open-source. Ya que el núcleo de Copilot, Codex, se nutre de repositorios públicos bajo licencias MIT, GPL y Apache.
Desde el sitio web Github Copilot Litigation, explican a 3 de noviembre de 2022: «Hoy hemos presentado una demanda colectiva en el tribunal federal de EE.UU. en San Francisco, CA, en nombre de una clase propuesta de posiblemente millones de usuarios de GitHub».
Ellos sostienen que «los demandados (Github, OpenAI y Microsoft, por ser dueña de Github) han violado los derechos legales de un gran número de creadores que publicaron código u otros trabajos bajo ciertas licencias de código abierto en GitHub»