Copilot… ¡hay que ver hasta dónde hemos llegado!
Aún tenemos reciente en la memoria el momento del año pasado en que OpenAI lanzó GPT-3. Todos nos sorprendimos por la capacidad que este sistema demostró a la hora de generar código fuente a partir de un lenguaje natural hasta que pronto el descubrimiento dio paso a la exageración y, posteriormente, a la preocupación colectiva.
La realidad es que GPT-3, sin dejar de suponer una hazaña notable, estaba muy lejos de ser un buen programador. Por supuesto, el hecho de que fuera capaz de interpretar textos naturales en inglés y transformarlos en código es, cuando menos, sorprendente, aunque la precisión y eficacia de este código no fuese, en modo alguno, útil.
Sin embargo, esta mediocre muestra de potencial fue suficiente para que OpenAI y Microsoft vieran un producto comercial con un gran potencial en las capacidades de codificación de GPT-3. No tardarían mucho en comenzar a desarrollar otro sistema, otro modelo, al que esta vez vamos a llamar programador IA. Esta «evolución de GPT-3» se llama OpenAI Codex y es la IA detrás del último avance en el campo: GitHub Copilot.
Y eso nos lleva al presente, en el que OpenAI, GitHub y su empresa matriz Microsoft, han presentado al mundo GitHub Copilot, una herramienta de inteligencia artificial que, utilizando el sistema OpenAI Codex, hace las veces de pinche de cocina digital, ayudando a los desarrolladores humanos a escribir código.
No cabe duda de que es el primero de una nueva generación de programadores de IA y el hito más importante en el sector desde el nacimiento de GPT-3. Copilot abre la puerta a cambios radicales en la industria del software, pero lo cierto es que aún se desconoce si estos cambios serán positivos o negativos para los programadores humanos, en términos de creación o destrucción de puestos de trabajo.
GitHub Copilot, tu compañero digital
¿Qué es Copilot?
Copilot es una herramienta de inteligencia artificial, que actualmente se encuentra en fase de pruebas o de revisión técnica, que intenta hacer recomendaciones a los programadores mientras trabajan escribiendo código. Microsoft ya lo implenta como una extensión en Visual Studio Code, aunque, por ahora, solo algunos desarrolladores pueden acceder a probarlo. Si quieres, puedes apuntarte a la lista de espera aquí.
Por supuesto, Copilot no es en absoluto pionero en su intención; Tabnine y Kite son herramientas populares que cubren funcionalidades similares. Sin embargo, Copilot se desmarca porque utiliza Codex en su interior, el “descendiente” de GPT-3 es evidente que proporciona una comprensión más profunda del contexto que los otros asistentes.
Codex, por supuesto, es muy similar a GPT-3, si bien es cierto que ha sido entrenado con grandes cantidades de ejemplos de código disponibles públicamente, como por ejemplo los existentes en los repositorios del propio GitHub.
Codex es un modelo de lenguaje de programación. Sus habilidades en este área superan con creces a las de GPT-3 ya que, al contrario que GPT-3, está especializado única y exclusivamente en codificación. Este tipo de Inteligencias Artificiales parecen mejorar sus resultados exponencialmente cuanto más se especializan y se centran en un campo concreto.
Pero ni Codex ni Copilot son perfectos. Copilot funciona bien, según los relatos y testimonios de quienes han tenido ocasión de probarla pero, por supuesto, está muy lejos de ser perfecto. Tanto es así que el código finalmente debe ser revisado y comprobado por alguien; un humano.
Los desarrolladores de GitHub han hecho grandes esfuerzos en implementar mecanismos de seguridad para brindar la mejor experiencia posible al usuario, pero el sistema, según sus propias declaraciones, «a veces puede producir resultados no deseados, incluidos resultados sesgados, discriminatorios, abusivos u ofensivos».
En ocasiones, es posible que el código de Copilot ni siquiera funcione ya que el sistema no comprueba los errores que dicho código genera. Como conclusión, podemos decir que es una prometedora versión inicial de una nueva categoría de herramientas; que tiene defectos pero su potencial le augura un gran futuro.
¿Qué hace Copilot?
En la página de GitHub, hay ejemplos del asombroso desempeño de Copilot. Realiza funciones de todo tipo en relación al código fuente, puede simplemente completar líneas de código o escribir funciones completas, transformar comentarios descriptivos, expresados en lenguaje común, en código, autocompletar código repetitivo o incluso desarrollar sistemas de pruebas.
Existe una gran limitación en el sistema de Copilot y es que, por ahora, no puede alimentarse de código existente en otros archivos, por lo que solamente tiene en cuenta para sus operaciones el código del archivo actual en uso..
Python, JavaScript, TypeScript, Ruby y Go son los lenguajes que mejor domina Copilot aunque «comprende docenas de lenguajes». Es cierto que al tratarse de una versión aún en desarrollo del sistema arroja, como ya hemos dicho, muchos más errores de los deseables y eso hace que sea muy útil para explorar lenguajes desconocidos pero poco práctico a la hora de escribir código en un lenguaje que el usuario maneje con soltura.
En este último caso, sin lugar a dudas, resulta mucho más sencillo y rápido escribir el código sin su ayuda que tener que revisar el código que nuestro programador IA ha escrito.
Copilot, al estar basado en el modelo de GPT-3, se adapta y aprende conforme se va utilizando. De este modo, cuanto más se usa más «conoce» al usuario y su estilo, y va arrojando sugerencias más afines cada vez aunque, por supuesto, siempre podemos rechazar sus ideas y pedirle otras opciones.
Copilot y sus repercusiones
El potencial de los modelos de lenguajes
Los modelos de lenguaje pre-entrenados como Copilot son el gran pastel que ahora mismo está intentando repartirse los distintos proyectos de IA en este momento (GPT-2, GPT-3, Switch, LaMDA, MUM, Wu Dao 2.0) y cada uno de los participantes intenta obtener el mayor trozo posible. La razón es simple: estos modelos funcionan muy bien. De ellos, GPT-3 es el más popular y no le faltan motivos.
Cuando OpenAI lanzó la API GPT-3, permitió que todo el mundo pudiera comprobar, con entusiasmo y transparencia, el potencial del sistema, alimentando así la transmisión boca a boca (o blog a blog) de las grandes virtudes del método.
Python, JavaScript, TypeScript, Ruby y Go son los lenguajes que mejor domina aunque «comprende docenas de lenguajes». Es cierto que Copilot se encuentra aún en desarrollo y el sistema arroja, como ya hemos dicho, muchos más errores de los deseables. Eso hace que sea muy útil para explorar lenguajes desconocidos pero poco práctico a la hora de escribir código en un lenguaje que el usuario maneje con soltura.
En este último caso, sin lugar a dudas, resulta mucho más sencillo y rápido escribir el código sin su ayuda que tener que revisar el código que Copilot, nuestro programador IA, ha escrito.
Copilot, al estar basado en el modelo de GPT-3, se adapta y aprende conforme se va utilizando. De este modo, cuanto más se usa más «conoce» al usuario y su estilo, y va arrojando sugerencias más afines cada vez aunque, por supuesto, siempre podemos rechazar sus ideas y pedirle otras opciones.
Copilot y sus repercusiones
El potencial de los modelos de lenguajes
Sea como sea, debido a que GPT-3 es solamente un modelo de lenguaje de propósito general, es más que correcto pensar que su desempeño y prestaciones mejorará, sobre todo si lo centramos en tareas específicas y lo entrenamos debidamente para ellas. Como proyecto base, podríamos decir que es un experto en todos los oficios, mientras que serán sus versiones especializadas las que demostrarán una maestría sin igual.
En este sentido, OpenAI ya entrenó un sistema que denominó DALL · E para manejar pares de texto e imagen, lo que permitió generar imágenes a partir de textos, entre otras cosas, sobresaliendo en creatividad visual. GPT-J es un sistema similar a GPT-3, aunque mucho más reducido, que podría generar un mejor código porque se entrenó intensivamente con los datos de GitHub y StackExchange. PALMS, un método específicamente diseñado para reducir los sesgos en GPT-3, reforzó aún más esta hipótesis.
El hecho es que los desarrolladores mejoran significativamente los resultados de este tipo de sistemas cuando se centran y lo ajustan a conjuntos de datos seleccionados más pequeños, y Copilot lo demuestra.
Es ahora cuando Copilot, y su trasfondo de Codex, ha demostrado definitivamente esta idea: los modelos lingüísticos pueden especializarse para convertirse en auténticos maestros de su oficio. Codex es un maestro de programación, pero ¿a qué otras áreas podrían mirar con modelos de lenguaje especializados super potentes?
¿Podría un sistema como Copilot llegar a dominar otros lenguajes “más formales” como la lógica, las matemáticas o incluso la física? ¿Podría un modelo de lenguaje escribir ficción al nivel de Hemingway, Shakespeare o nuestro amado Cervantes? ¿Podría llegar a componer los mejores éxitos del verano?
Mientras Georgie Dann tiembla, lo único que está claro es que no hay nada claro. Aún es pronto para saber qué es posible hacer con esta tecnología y, por supuesto, no somos capaces ni siquiera de comprender el límite de su potencial.
El futuro de la programación tras Copilot
Cuando se lanzó GPT-3, mucha gente creyó estar ante una lanzadera hacia el fin de la programación; un planeta sin programadores. Ahora, Copilot ha elevado la preocupación a niveles sin precedentes, a pesar de estar diseñado, como su propio nombre indica, como un socio cooperativo. GitHub dice que «tú eres el piloto», pero ¿podemos estar seguros de que esto no cambiará en el futuro?
Sus desarrolladores confían en que Copilot «permita a los ingenieros ya existentes ser más productivos, reduciendo las tareas manuales y repetitivas, ayudándolos así a concentrarse en trabajos interesantes». Sin embargo, ¿cuánto tiempo pasará hasta que ese «trabajo interesante» también pueda ser realizado por una IA de forma más rápida, económica y precisa?
Está en la naturaleza humana resolver problemas y, en este sentido, los problemas a los que nos enfrentamos día a día pueden cambiar, sin embargo, siempre habrá problemas esperando ser resueltos por humanos, aunque es cierto que quizás no sean las mismas personas las que estén preparadas para resolver los nuevos problemas que se irán presentando.
El futuro es ciertamente impredecible y ante nosotros ahora mismo tenemos dos escenarios: o somos capaces de conseguir una relación simbiótica con Copilot, así como otras Inteligencias Artificiales, encontrando así un lugar para todos, o la IA, simplemente, se hará cargo de muchos de los actuales trabajos.
Incluso si nunca alcanza la perfección, Copilot (o cualquiera de sus sucesores) podría eliminar la necesidad de programadores, dejando solo unos pocos ingenieros especializados en «probar, revisar y examinar» el código de la AI.
En cualquier caso, el primer escenario parece mucho más probable a medio plazo y, para intentar vislumbrar el futuro podemos buscar un paralelismo interesante en nuestro departamento de diseño gráfico.
Los diseñadores o artistas no han visto cómo sus puestos de trabajo se han reducido por la llegada de las nuevas tecnologías, incluso cuando ellas incorporan IA. Herramientas como Ilustrator o Photoshop no han supuesto la muerte del sector del diseño gráfico, ni tampoco de la fotografía. Eso sí, los diseñadores publicistas de hoy en día no tienen nada que ver con los de hace 50 años.