Innusual Logo
Programando con Copilot

Blanca Lendoiro Valle

Programando con Copilot

La inteligencia artificial está transformando rápidamente diversos sectores, y el desarrollo de software no es una excepción. Entre las innovaciones más utilizadas se encuentra GitHub Copilot, un asistente de código creado por OpenAI y GitHub, que sugiere líneas de código o funciones completas en tiempo real, basándose en el contexto del código en el que se está trabajando.

Esta herramienta se puede integrar directamente con IDEs como Visual Studio Code, lo que permite a los desarrolladores recibir sugerencias mientras escriben, acelerando el proceso de desarrollo y ayudando a superar bloqueos o dificultades durante el mismo.

¿Cómo funciona realmente GitHub Copilot?

GitHub Copilot se puede utilizar en varios entornos, como editores de código, línea de comandos o a través de un chat. En todos los casos, esta herramienta implementa un flujo de procesamiento diseñado para generar las sugerencias más precisas y cumplir sus términos de uso.

El primer paso de este procesamiento consiste en recoger el contexto relevante del entorno del usuario, que puede variar según la forma de usar GitHub Copilot. Por ejemplo, cuando se utiliza integrado en un editor de código, el contexto puede incluir el contenido del archivo que se está editando, otros archivos relacionados del proyecto, otras pestañas del editor, así como el nombre y el tipo del archivo. Cuando se utiliza a través del chat, el contexto también incluye el historial de la conversación. Además, es posible restringir qué código puede utilizar como contexto y cuál no, a través de la configuración de la herramienta.

A continuación, se construye el prompt, que es la forma de indicarle al modelo qué datos debe procesar y en qué orden. Una serie de algoritmos extraen y priorizan la información recogida en el contexto para obtener las mejores respuestas posibles.

El prompt se envía de forma segura a un servicio proxy que realiza diferentes verificaciones, por ejemplo, asegurándose de que el prompt no contenga lenguaje inapropiado o de que no represente un riesgo de hackeo de la herramienta.

En este momento, los LLMs (Large Language Models) entran en juego. Una vez que el prompt ha pasado todas las comprobaciones necesarias, se transfiere a los LLMs, que son un conjunto de modelos de IA entrenados tanto con lenguaje natural como con código fuente. GitHub, como plataforma líder en almacenamiento de código utilizada por desarrolladores de todo el mundo, aloja una gran cantidad de repositorios de código abierto. Parte de estos repositorios se han utilizado para entrenar estos modelos.

La respuesta generada por el modelo es nuevamente procesada por un servicio proxy que verifica que no incluya errores de vulnerabilidad como SQL Injection, bugs evidentes o identificadores únicos. Finalmente, esta respuesta es la sugerencia que se envía al usuario.

Superando las barreras: datos, propiedad intelectual y licencias

¿El código generado se puede considerar original? ¿El código se copia de otro repositorio? ¿Mi código se utiliza para entrenar el modelo? Es habitual que surjan preocupaciones de este tipo relacionadas con el uso de esta herramienta.

En primer lugar, hay que señalar que el código generado por Copilot es de uso libre para el desarrollador. GitHub ha indicado que los desarrolladores tienen el mismo derecho a usar el código generado por Copilot que el código escrito manualmente. Aún así, es fundamental que se revisen y ajusten las sugerencias según las necesidades específicas del proyecto y las políticas internas de cada organización, para asegurar que el código final cumple con los estándares y requisitos del proyecto.

El código generado por GitHub Copilot es producido por el modelo y no copiado directamente de repositorios públicos. Sin embargo, puede haber coincidencias con el código de estos repositorios. Para evitarlo, los administradores pueden habilitar un filtro que bloquea todas las sugerencias de código que coincidan aproximadamente en 150 caracteres con el código público de GitHub. Según las pruebas, alrededor del 1% del código sugerido puede coincidir con el de otros repositorios públicos, y esto ocurre con mayor frecuencia cuando el asistente de código tiene un contexto muy limitado.

Una consulta frecuente entre los usuarios es si GitHub Copilot utiliza los datos de su código para entrenar su modelo. De acuerdo con los términos de uso específicos de GitHub Copilot, por norma general, no se almacena ningún prompt para entrenar los LLMs base del asistente. Esto significa que ni el código ni el contexto recopilado en el entorno del usuario se guardan. Tras generar las sugerencias, los prompts son descartados. Sin embargo, dependiendo de la licencia de cada desarrollador y de las configuraciones establecidas en GitHub Copilot, pueden existir excepciones, por lo que es necesario revisar cada caso concreto.

Finalmente, es importante señalar que GitHub Copilot se utiliza bajo licencia. Existen licencias tanto para usuarios individuales como para empresas, estas últimas con términos adicionales de seguridad y cumplimiento. Esto permite a los desarrolladores y a las organizaciones seleccionar la opción que mejor se adapte a sus necesidades específicas.

Y tú… ¿ya utilizas GitHub Copilot?

GitHub Copilot representa una evolución significativa en la manera de abordar el desarrollo de software, ofreciendo una combinación única de productividad, aprendizaje y calidad. Al adoptar esta herramienta, las organizaciones pueden acelerar sus ciclos de desarrollo, mejorar la calidad del código y fomentar un entorno de aprendizaje continuo para sus desarrolladores.

>>> Podría interesarte

    Accesibilidad EAA (European Accessibility ACT)

    Javier Rubio Honrado

    La accesibilidad digital mejora la experiencia de todos los usuarios, permitiendo un acceso más equitativo a los servicios. La Ley Europea de Accesibilidad (EAA) busca garantizar que los productos y servicios digitales sean inclusivos, estableciendo requisitos claros para su implementación.

    Optimiza el rendimiento y SEO de tu web

    Enzo Andrés García Ramírez

    Elige la mejor técnica de renderizado entre SPA vs SSR vs SSG para optimizar el rendimiento y SEO de tu aplicación web.

    Gestión del estado con Signals en Angular

    innusual

    Las Signals son uno de los cambios más significativos en Angular de los últimos años, con un nuevo enfoque de reactividad que afecta tanto al framework, como a las librerías que utilizamos con él.