Algunos desarrolladores de software han comenzado a permitir que la inteligencia artificial les ayude a escribir su código y están descubriendo que la Inteligencia Artificial es tan defectuosa como los humanos.

GitHub, la reciente filial de Microsoft que proporciona herramientas para alojar y colaborar en código fuente, lanzó una versión beta de un programa que usa Inteligencia Artificial para ayudar a los programadores.

Al comenzar a escribir un comando, una consulta a una base de datos o una solicitud a una API; el programa, denominado Copiloto, adivinará la intención y escribirá el resto.

Algunas pruebas con Copiloto de Github

Alex Naka, un científico de datos de una empresa de biotecnología que se inscribió para probar Copilot, dice que el programa puede ser muy útil y ha cambiado la forma en que trabaja.

“Me permite pasar menos tiempo saltando al navegador para buscar documentos API o ejemplos en Stack Overflow”, dice.
“Se siente un poco como si mi trabajo hubiera pasado de ser un generador de código a ser un discriminador”.

Pero Naka ha descubierto que los errores pueden introducirse en el código de diferentes formas.

“Ha habido ocasiones en las que he perdido algún tipo de error sutil cuando acepto una de las propuestas”
“A posteriori, puede ser muy difícil rastrear esos fallos, sobre todo porque parece cometer errores diferentes a los que yo cometería”.

El problema de los errores de una Inteligencia Artificial

Los riesgos de que la IA genere un código defectuoso pueden ser sorprendentemente altos.

Investigadores de NYU analizaron recientemente el código generado por Copiloto y encontraron que, para ciertas tareas donde la seguridad es crucial, el código contiene fallas de seguridad alrededor de hasta un 40 por ciento de las veces.

La cifra “es un poco más alta de lo que se podría haber esperado”, dice Brendan Dolan-Gavitt, profesor de la Universidad de Nueva York que participó en el análisis.

“Pero la forma en que se entrenó a Copiloto no fue en realidad para escribir un buen código, sino solamente para producir el tipo de texto que seguiría una indicación determinada”.

A pesar de tales fallas, Copiloto y herramientas similares impulsadas por IA pueden presagiar un cambio radical en la forma en que los desarrolladores de software escriben el código.

Los posibles problemas de seguridad

Al analizar el código disponible para un complemento Copiloto, Dolan-Gavitt descubrió que incluía una lista de frases restringidas.

Aparentemente, se introdujeron para evitar que el sistema emitiera mensajes ofensivos o copiara un código conocido escrito por otra persona.

Oege de Moor, vicepresidente de investigación de GitHub y uno de los desarrolladores de Copilot, dice que la seguridad ha sido una preocupación desde el principio.

De Moor inventó CodeQL, una herramienta utilizada por los investigadores de la NYU que identifica automáticamente errores en el código.

GitHub recomienda que los desarrolladores usen Copiloto junto con CodeQL para garantizar que su trabajo sea más seguro.

El programa Copiloto

El programa de GitHub se basa en un modelo de inteligencia artificial desarrollado por OpenAI, una destacada empresa de inteligencia artificial que realiza un trabajo de vanguardia en el aprendizaje automático.

Ese modelo, llamado Codex, consiste en una gran red neuronal artificial entrenada para predecir los siguientes caracteres tanto en texto como en código de computadora.

El algoritmo ingirió miles de millones de líneas de código almacenadas en GitHub, no todas perfectas, para aprender a escribir código.

Herramienta de creación de código de OpenAI

OpenAI ha construido su propia herramienta de codificación de IA sobre Codex que puede realizar algunos trucos de codificación sorprendentes.

Por ejemplo, puede convertir una instrucción escrita como “Crear una matriz de variables aleatorias entre 1 y 100 y luego devolver la mayor de ellas” en código de trabajo en varios lenguajes de programación.

Otra versión del mismo programa de OpenAI, llamada GPT-3, puede generar texto coherente sobre un tema determinado; pero también puede regurgitar el lenguaje ofensivo o sesgado aprendido de los rincones más oscuros de la web.

Dudas sobre el funcionamiento independiente de la IA

Copilot y Codex han llevado a algunos desarrolladores a preguntarse si la IA podría automatizar el trabajo sin ayuda humana.

De hecho, como muestra la experiencia de Naka, los desarrolladores necesitan una habilidad considerable para usar el programa; ya que a menudo deben examinar y modificar las sugerencias.

Hammond Pearce, un investigador postdoctoral en NYU involucrado en el análisis del código Copiloto, declaró que el programa a veces produce código problemático porque no comprende completamente lo que intenta hacer un fragmento de código.

Los malos hábitos y peligros de la IA

A algunos desarrolladores les preocupa que la IA ya esté adquiriendo malos hábitos.

“Hemos trabajado duro como industria para alejarnos de las soluciones de copiar y pegar y ahora Copilot ha creado una versión supervitaminada de eso”, dice Maxim Khailo, un desarrollador de software que ha experimentado con el uso de IA para generar código, pero no ha probado Copilot.

Khailo dice que es posible que los piratas informáticos se metan con un programa como Copilot.

“Si fuera un pirata informático, lo que haría sería crear proyectos de código vulnerable en GitHub, aumentar artificialmente su popularidad comprando estrellas de GitHub en el mercado negro y esperar que se convierta en parte del corpus para la próxima ronda de capacitación de la IA”.

Tanto GitHub como OpenAI dicen que, por el contrario, es probable que sus herramientas de codificación de IA sean menos propensas a errores.

OpenAI dice que examina los proyectos y el código tanto manualmente como con herramientas automatizadas.

De Moor, de GitHub, dice que su equipo está explorando otras formas de mejorar la producción de Copiloto.

Una de ellas es eliminar los malos ejemplos de los que aprende el modelo de IA subyacente.

Otra, podría ser utilizar el aprendizaje por refuerzo, una técnica de inteligencia artificial que ha producido algunos resultados impresionantes en juegos y otras áreas.

El aprendizaje por refuerzo es capaz de detectar automáticamente los malos resultados, incluidos ejemplos nunca antes vistos.


Artículos Relacionados