Los ingenieros de GitHub han estado trabajando arduamente para mejorar la forma en que GitHub Copilot, su herramienta de inteligencia artificial (IA), entiende y contextualiza el código. A través del desarrollo y prueba de algoritmos avanzados de recuperación, están esforzándose en hacer que esta herramienta de IA sea aún más avanzada.
La idea es que trabajar con GitHub Copilot se sienta como una reunión de mentes entre los desarrolladores y el programador en pareja, y para lograrlo, los expertos en aprendizaje automático (ML) de GitHub han estado investigando, desarrollando y probando nuevas capacidades. Muchas de estas están centradas en mejorar la comprensión contextual del programador en pareja de IA.
Para entender mejor cómo funciona este proceso, se ha consultado a los investigadores e ingenieros de GitHub sobre el trabajo que están realizando para ayudar a GitHub Copilot a mejorar su comprensión contextual.
De OpenAI’s Codex model a GitHub Copilot
Cuando OpenAI lanzó GPT-3 en junio de 2020, GitHub sabía que los desarrolladores se beneficiarían de un producto que utilizara el modelo específicamente para la codificación. Así, colaboraron con OpenAI en la creación de Codex, un descendiente de GPT-3 y el LLM que alimentaría a GitHub Copilot. El programador en pareja se lanzó como una vista previa técnica en junio de 2021 y se hizo generalmente disponible en junio de 2022 como la primera herramienta de codificación generativa de IA a gran escala del mundo.
Para asegurar que el modelo tenga la mejor información para hacer las mejores predicciones con rapidez, los investigadores de ML de GitHub han realizado un gran trabajo llamado ingeniería de indicaciones. A través de este proceso, el modelo proporciona respuestas contextualmente relevantes con baja latencia.
¿Por qué importa el contexto?
Los desarrolladores utilizan detalles de las solicitudes de extracción, una carpeta en un proyecto, problemas abiertos y más para contextualizar su código. En el caso de una herramienta de codificación generativa de IA, es necesario enseñar a esa herramienta qué información utilizar para hacer lo mismo.
Los modelos LLM basados en transformadores son buenos para conectar los puntos y pensar en grande. Estos modelos son conjuntos de algoritmos entrenados en grandes cantidades de código y lenguaje humano. Hoy en día, los LLM más avanzados son transformadores, lo que los hace adeptos a establecer conexiones entre el texto de la entrada del usuario y la salida que el modelo ya ha generado.
Sin embargo, necesitan ser instruidos sobre qué información es relevante para su código. Actualmente, los transformadores que son lo suficientemente rápidos para alimentar GitHub Copilot pueden procesar alrededor de 6,000 caracteres a la vez. Si bien eso ha sido suficiente para avanzar y acelerar tareas como la finalización de código y la resumen de cambios de código, la cantidad limitada de caracteres significa que no todo el código de un desarrollador puede ser utilizado como contexto.
Cómo GitHub Copilot entiende tu código
Todo se reduce a las indicaciones, que son compilaciones de código de IDE y contexto relevante que se alimenta al modelo. Las indicaciones son generadas por algoritmos en segundo plano, en cualquier punto de tu codificación. Es por eso que GitHub Copilot generará sugerencias de codificación tanto si estás escribiendo actualmente como si acabas de terminar un comentario, o estás en medio de algún código complicado.
La comprensión contextual de GitHub Copilot ha madurado continuamente con el tiempo. La primera versión solo podía considerar el archivo en el que estabas trabajando en tu IDE como contextualmente relevante. Pero se sabía que el contexto iba más allá de eso. Ahora, apenas un año después, se está experimentando con algoritmos que considerarán toda tu base de código para generar sugerencias personalizadas.
Mejorar la comprensión semántica
Hoy en día, se está experimentando con bases de datos vectoriales que podrían crear una experiencia de codificación personalizada para desarrolladores que trabajan en repositorios privados o con código propietario. Las herramientas de codificación generativa de IA utilizan algo llamado incrustaciones para recuperar información de una base de datos vectorial.
Un vector de alta dimensión son representaciones matemáticas de objetos, y porque estos vectores pueden modelar objetos en una serie de dimensiones, pueden capturar las complejidades de ese objeto. Cuando se utilizan adecuadamente para representar piezas de código, pueden representar tanto la semántica como incluso la intención del código, no solo la sintaxis.
Al igual que con todas las características, la experimentación con algoritmos de recuperación está diseñada teniendo en cuenta a los clientes empresariales, específicamente aquellos que buscan una experiencia de codificación personalizada con repositorios privados y que optarían explícitamente por utilizar la función.
El año pasado, se realizó una investigación cuantitativa sobre GitHub Copilot y se descubrió que los desarrolladores codifican hasta un 55% más rápido al utilizar el programador en pareja. Esto significa que los desarrolladores se sienten más productivos, completan tareas repetitivas más rápidamente y pueden concentrarse más en el trabajo satisfactorio. Pero el trabajo no se detiene ahí.
Los equipos de productos y de I+D de GitHub, incluyendo GitHub Next, han estado colaborando con Microsoft Azure AI-Platform para seguir aportando mejoras a la comprensión contextual de GitHub Copilot. Gran parte del trabajo que ayuda a GitHub Copilot a contextualizar tu código ocurre detrás de escena. Mientras escribes y editas tu código, GitHub Copilot está respondiendo a tu escritura y ediciones en tiempo real generando indicaciones, es decir, priorizando y enviando información relevante al modelo basándose en tus acciones en tu IDE, para seguir dándote las mejores sugerencias de codificación.
Basado en el artículo en el blog de copilot.