Bienvenidos a nuestra nueva serie sobre GitHub Copilot, tu compañero de codificación impulsado por IA. En esta serie, exploraremos su origen, técnicas de implementación, consejos útiles y visión para el futuro.
Descubre la fascinante historia de GitHub Copilot, desde el modelo Codex de OpenAI hasta su lanzamiento como la primera herramienta de codificación generativa de IA a gran escala. Aprende a aprovechar al máximo esta herramienta optimizando tu flujo de trabajo y descubriendo las futuras mejoras en su comprensión contextual.
La misión de GitHub Copilot
GitHub Copilot es un programador en pareja basado en IA diseñado para mejorar tu experiencia de codificación, con la misión de mejorar la eficiencia y productividad de los desarrolladores al proporcionarles un compañero de programación impulsado por IA. Su objetivo es ayudar a los desarrolladores a escribir código de forma más rápida, reduciendo la carga de trabajo y acelerando el proceso de desarrollo.
La misión de GitHub Copilot es ayudar a los desarrolladores a escribir mejor código más rápido y con menos errores.
La herramienta utiliza técnicas avanzadas de aprendizaje automático para generar sugerencias y proporcionar información útil a los desarrolladores a medida que trabajan. Al hacerlo, ayuda a los desarrolladores a ahorrar tiempo y aumentar la productividad, al tiempo que reduce la probabilidad de errores y otros problemas que pueden surgir durante el proceso de codificación.
Y Como empezó?
La historia de GitHub Copilot es una historia heroica de innovación y colaboración. Nació del deseo de crear una herramienta revolucionaria para ayudar a los desarrolladores a escribir código más rápido y con menos esfuerzo. GitHub Copilot se ha convertido en un aliado poderoso en el mundo de la codificación eficiente.
Cuando OpenAI lanzó GPT-3 en junio de 2020, GitHub reconoció el potencial de aprovechar ese modelo específicamente para la codificación. Así fue como brindaron información a OpenAI en la construcción de Codex, un descendiente de GPT-3 y LLM que impulsaría GitHub Copilot. Este compañero programador se lanzó en vista previa técnica en junio de 2021 y oficialmente en junio de 2022, convirtiéndose en la primera herramienta de codificación generativa de IA a gran escala en el mundo.
Cómo GitHub Copilot comprende tu código
GitHub Copilot funciona de manera óptima cuando divides tu código en funciones pequeñas, utilizas nombres significativos para los parámetros de las funciones y escribes buenas docstrings y comentarios a medida que avanzas. También parece rendir mejor cuando te ayuda a navegar por bibliotecas o frameworks desconocidos.
Todo se reduce a los "prompts", que son compilaciones de código de IDE y contexto relevante que se alimentan al modelo. Los prompts son generados por algoritmos en segundo plano en cualquier momento de tu programación. Es por eso que GitHub Copilot generará sugerencias de código tanto si estás escribiendo actualmente como si acabas de terminar un comentario, o si te encuentras en medio de un código complicado.
Y Cómo se crea un prompt?
Primero, una serie de algoritmos seleccionan fragmentos de código relevantes o comentarios de tu archivo actual y de otras fuentes (de los cuales profundizaremos más adelante). Estos fragmentos y comentarios se priorizan, filtran y se ensamblan en el prompt final.
La evolución de GitHub Copilot:
Con el pasar del tiempo, GitHub Copilot ha ido madurando constantemente para ofrecer una comprensión contextual mejorada. La primera versión solo podía considerar el archivo en el que estabas trabajando como relevante a nivel contextual. Sin embargo, sabíamos que el contexto iba más lejos de esto. Así que un año después, ahora la versión actual se encuentra experimentando con algoritmos capaces de considerar el conjunto entero de código para generar sugerencias personalizadas. Utilizando "Prompt engineering", "Neighboring tabs" y el "Fill in the middle" GitHub Copilot ofrece sugerencias más específicas y precisas para ayudar a los desarrolladores a mejorar su comprensión contextual.
La "ingeniería de prompts" es el delicado arte de generar un prompt para que el modelo realice la predicción más útil para el usuario. El prompt le indica a los modelos de lenguaje generativos, incluido GitHub Copilot, qué datos y en qué orden procesar para contextualizar tu código. La mayor parte de este trabajo se realiza en lo que se llama una biblioteca de prompts, donde nuestros expertos internos en aprendizaje automático trabajan con algoritmos para extraer y priorizar una variedad de fuentes de información sobre el contexto del desarrollador, creando el prompt que será procesado por el modelo de GitHub Copilot.
"Neighboring tabs" es la técnica que permite a GitHub Copilot procesar todos los archivos abiertos en el IDE del desarrollador en lugar de solo el archivo en el que están trabajando. Al abrir todos los archivos relevantes para su proyecto, los desarrolladores invocan automáticamente a GitHub Copilot para analizar todos los datos y encontrar fragmentos de código coincidentes entre los archivos abiertos y el código alrededor de su cursor, y agregar esas coincidencias al prompt.
Al desarrollar "neighboring tabs", el equipo de GitHub Next y los investigadores internos de aprendizaje automático realizaron pruebas A/B para determinar los mejores parámetros para identificar coincidencias entre el código en tu IDE y el código en las pestañas abiertas. Descubrieron que establecer un umbral muy bajo para incluir una coincidencia realmente resultó en las mejores sugerencias de codificación.
Al incluir cada pequeño detalle de contexto, "neighboring tabs" ayudó a aumentar relativamente la aceptación de las sugerencias de GitHub Copilot por parte de los usuarios en un 5%.
El paradigma "Fill-In-the-Middle" (FIM) amplió aún más la apertura contextual. Antes de FIM, solo se incluiría en el prompt el código antes de tu cursor, ignorando el código después de tu cursor. (En GitHub, nos referimos al código antes del cursor como "prefijo" y al código después del cursor como "sufijo"). Con FIM, podemos indicarle al modelo qué parte del prompt es el prefijo y qué parte es el sufijo.
Incluso si estás creando algo desde cero y tienes un esqueleto de un archivo, sabemos que la codificación no es lineal o secuencial. Entonces, mientras te mueves por tu archivo, FIM ayuda a GitHub Copilot a ofrecer mejores sugerencias de codificación para la parte de tu archivo donde se encuentra tu cursor o el código que debe ir entre el prefijo y el sufijo.
Según las pruebas A/B, FIM ofreció un aumento relativo del 10% en el rendimiento, lo que significa que los desarrolladores aceptaron un 10% más de las completaciones que se les mostraron. Y gracias al uso óptimo del almacenamiento en caché, las pestañas adyacentes y FIM funcionan en segundo plano sin agregar ninguna latencia adicional.
Con un nuevo paradigma de Fill-in-the-Middle y la técnica de pestañas adyacentes, GitHub ha mejorado la forma en que Copilot contextualiza tu código. Continuamos desarrollando y probando algoritmos avanzados para hacer nuestra herramienta de IA aún más sofisticada. Nuestro objetivo es lograr una programación en pareja fluida y efectiva a través de una mejor comprensión contextual.
Descubre más
No te pierdas nuestra próxima entrega en la que profundizaremos en el emocionante tema de la instalación de GitHub Copilot. Te guiaremos paso a paso a través del proceso de instalación, asegurándonos de que puedas comenzar a utilizar esta increíble herramienta en poco tiempo. Descubre los requisitos necesarios, las plataformas compatibles y los sencillos pasos para tener GitHub Copilot funcionando en tu entorno de desarrollo. ¡No te lo pierdas y aprovecha al máximo la potencia de GitHub Copilot en tu flujo de trabajo de codificación!
¿Ya usaste GitHub Copilot? ¡Cuéntanos cómo te fue en los comentarios, y mil gracias por tu tiempo!
Sigue explorando
Si deseas obtener más información sobre GitHub Copilot, te invitamos a explorar los siguientes recursos:
- GitHub Copilot X es nuestro futuro previsto del desarrollo de software impulsado por IA. Lee mas.
- Lee nuestra investigación sobre cómo GitHub Copilot está impactando la productividad de los desarrolladores.