La IA tiene como objetivo predecir y corregir errores de codificación de los desarrolladores antes de que ocurra un desastre.

La IA tiene como objetivo predecir y corregir errores de código de los desarrolladores antes de que se produzca un desastre.

La IA generativa se está combinando con sistemas DevOps que pueden identificar las causas de fallas en la aplicación y predecir las fallas.

La IA generativa se está combinando con sistemas DevOps que pueden identificar las causas de fallas en la aplicación y predecir las fallas.

Aún es demasiado pronto para confiar en el GitHub Copilot de Microsoft para corregir automáticamente su código de programación. Microsoft mismo ha dicho que el programa, vendido como un complemento de $10 por mes para GitHub, “no escribe código perfecto” y “puede contener patrones de codificación inseguros, errores o referencias a API o formas de lenguaje obsoletas.”

Característica Especial

La intersección de la IA generativa y la ingeniería

El aumento de la IA generativa puede aprovechar un tremendo potencial en el ámbito de la ingeniería. Sin embargo, también puede presentar desafíos a medida que las empresas y los ingenieros descubren el impacto de la IA en sus roles, estrategias comerciales, datos, soluciones y desarrollo de productos. ¿Cómo se ve el futuro para incorporar la IA generativa en el ámbito del software? ENBLE lo decodifica desde todos los ángulos.

Leer ahora

No obstante, el sueño de la automatización sugiere que algún día, la inteligencia artificial predecirá una falla en un programa que puede afectar la funcionalidad o hacer que los sistemas se caigan, y no solo advertirá a un desarrollador antes de que el código se ponga en producción, sino que también le dirá cómo modificar el código para evitar el problema. Incluso es posible que la IA pueda llegar a corregir automáticamente el código de la aplicación para el programador, lo que le ahorraría un esfuerzo significativo. 

Los cimientos de este futuro se pueden ver en las herramientas actuales de DevOps y observabilidad. El fabricante de herramientas de DevOps Dynatrace ha estado construyendo durante varios años lo que llama “IA causal” y “IA predictiva” para identificar por qué los programas fallan y predecir cómo fallarán.

También: La IA cambiará el desarrollo de software de manera masiva

La siguiente etapa es envolver la IA generativa alrededor de esas herramientas de observabilidad para brindar sugerencias a los programadores sobre cómo su código va a tener problemas y cómo aliviarlos. 

“La solicitud típica de un CIO es, por favor, arregle mi sistema antes de que falle realmente”, dice Bernd Greifeneder, director de tecnología de Dynatrace.

“La solicitud típica de un CIO es, por favor, arregle mi sistema antes de que falle realmente”, dijo Bernd Greifeneder, director de tecnología y co-fundador de Dynatrace, en una entrevista con ENBLE. Dynatrace es un proveedor de software comercial en el mercado de DevOps y Observabilidad que vende herramientas para la gestión del ciclo de vida de las aplicaciones. 

Consideremos un problema común de los sistemas: quedarse sin espacio en disco en Amazon’s AWS. 

“Es totalmente irónico”, señaló Greifeneder. “Incluso en estos días de tecnología súper avanzada, es un problema que los discos en la nube de Amazon se quedan sin espacio, y tenemos que activar llamadas a la API para redimensionarlos. No queremos redimensionarlos [los discos] de antemano porque es costoso, así que queremos optimizar lo que usamos, pero los patrones de uso pueden cambiar dependiendo de cuántos clientes tengamos en nuestros clústeres, etc.”

Lo que se necesita es crear código que entre en acción cuando parece probable que haya un error de falta de espacio en disco según el rendimiento pasado. 

Para abordar el problema, la empresa primero identifica una “causa raíz” de una falla del disco con la combinación de la IA causal y predictiva. Estas dos herramientas no se basan en modelos de lenguaje grandes y otras formas de IA generativa. En cambio, confían en formas antiguas y más establecidas de inteligencia artificial que se pueden contar para producir resultados rigurosos y consistentes. 

En el caso de la IA causal, el programa utiliza varios algoritmos, incluyendo regresión cuantílica, estimación de densidad y lo que se conoce como un modelo de navegación aleatoria. A diferencia de las redes neuronales que se entrenan con un conjunto estático de datos para detectar correlaciones entre los puntos de datos, los programas causales se utilizan para recorrer un gráfico que representa los elementos del sistema informático de una empresa y sus relaciones. 

“Los modelos estadísticos típicos o los modelos de aprendizaje tipo red neuronal no funcionan para los sistemas informáticos dinámicos en un ámbito más amplio”, dijo Greifeneder, porque las variables cambian demasiado. “Nuestros clientes pueden tener decenas de miles o cientos de miles de pods, y muchos de ellos están interconectados, y cambian mientras se enruta el tráfico, y las cosas escalar, y hay diferentes versiones, etc.”

Para construir lo que Greifeneder llama un “modelo en memoria en tiempo real” de todo el sistema informático de un cliente, los programas de IA causal construyen un “modelo multidimensional que tiene la dependencia causal y dirigida, algo así como un gráfico multidimensional” de todas las entidades, desde qué servicio en la nube se utiliza hasta qué versión de Kubernetes se está utilizando y qué aplicación se está ejecutando. Ese modelo, llamado Smartscape, se consulta siempre que haya un problema en el sistema que genere alarmas, “inferiendo la causa raíz basada en el recorrido de ese modelo Smartscape”.

También: Las empresas necesitan claridad en precios a medida que los servicios de IA generativa llegan al mercado

Ese modelo causal no anticipará las variaciones en el negocio, sin embargo. “Conoce la causa raíz” de las cosas, “pero lo que no sabe es cuál es tu patrón de negocio”, dijo Greifeneder, lo que significa cosas tales como “los lunes por la mañana a las 8:00 am, tienes un gran pico de uso por cualquier motivo”.

Para tales aberraciones, “debe haber alguna forma de aprendizaje basado en la historia”, dijo Greifeneder.

Para lograr ese aprendizaje histórico, un componente de IA predictiva utiliza otro conjunto de herramientas bien desarrolladas, como un promedio móvil integrado autorregresivo, que es un algoritmo especialmente apto para reunir patrones que ocurren en datos a lo largo del tiempo. 

La IA causal y predictiva de Dynatrace utiliza una variedad de enfoques algorítmicos probados en el tiempo para analizar las señales de lo que está sucediendo en una aplicación de producción.

Es fundamental destacar que la IA predictiva no solo se enfoca en sistemas en el backend, como el servidor. También recibe señales de los puntos finales de una red, como por ejemplo cómo el usuario final experimenta retraso o interrupción del servicio.

“Mirar solo los sistemas del lado del servidor no es suficiente”, dijo Greifeneder. “El monitoreo real del usuario, por ejemplo, o el monitoreo del servicio API, son aspectos importantes para entender las dependencias”.

Si bien un director de informática se preocupa principalmente por los sistemas, los problemas de los usuarios pueden surgir incluso cuando los servidores funcionan correctamente, por lo que tanto el backend como la experiencia de usuario deben medirse y compararse.

También: Lo que los analistas dicen sobre el futuro de la IA generativa

“A veces nos encontramos con personas del área de tecnología que solo se preocupan por sus servidores: ‘Oh, mi servidor está funcionando’, pero en realidad, los usuarios están frustrados”, dijo. “Lo contrario también existe: solo porque una de esas CPUs se vuelva loca, no significa que el usuario final se vea afectado”.

Volviendo al ejemplo del espacio en disco, la IA causal y predictiva pueden anticipar un problema futuro en el disco. “Podemos extrapolar a partir de los días y semanas anteriores de uso en el clúster para ver, ‘Oh, corremos el riesgo de quedarnos sin espacio en disco en una semana a partir de ahora'”, dijo Greifeneder.

Esa es la motivación para tomar medidas proactivas, como “activar ahora una acción en el flujo de trabajo a través del motor de automatización de Dynatrace para llamar a una API en AWS para redimensionar el disco y de esa manera evitar automáticamente una interrupción que tuvimos en el pasado debido a esto”.

Aquí es donde se integra la IA generativa en el proceso. El programa paraguas de Dynatrace, Davis AI, este año agregó un componente llamado Davis CoPilot que se basa en los sistemas causales y predictivos.

También: 4 formas de aumentar la usabilidad de la IA

Un usuario puede escribirle al CoPilot: “crear una automatización que realmente prevenga estas [interrupciones de disco de manera proactiva]”. El CoPilot puede enviar una consulta a la IA causal y predictiva para preguntar a qué discos se refiere en esa solicitud. En respuesta, el programa Davis utiliza Smartscape y la información predictiva para crear una solicitud con todos los detalles contextuales necesarios para comprender el sistema de TI en su estado actual.

Entonces, esa solicitud se envía al CoPilot, que una vez que recibe los detalles, “te devolverá la plantilla del flujo de trabajo para automatizar” el cambio de tamaño del disco, explicó Greifeneder. “Te dará, como usuario, la capacidad de revisar y decir, OK, esto es aproximadamente correcto, gracias, me ayudaste a llegar al 90%,” lo que puede ahorrar tiempo al ingeniero de sistemas en lugar de construir un flujo de trabajo desde cero.

El siguiente paso es que el programa de IA Davis lleve todas estas observaciones al programador en el momento en que están codificando la aplicación por primera vez. El santo grial del desarrollo de aplicaciones es prevenir la codificación que causa fallas antes de que esa aplicación se ponga en producción en lugar de tener que arreglar las cosas más tarde.

Un enfoque es lo que Dynatrace llama un guardian. Un individuo de DevOps puede pedirle al CoPilot en lenguaje natural que cree un guardian para supervisar un objetivo de rendimiento de aplicación en particular antes de que la aplicación se ponga en producción. La empresa lo llama “definir un objetivo de calidad en el código”. Los elementos causales y predictivos se utilizan luego para verificar si el código cumplirá con los objetivos que se han definido.

También: Cómo engañé a ChatGPT para que me dijera mentiras

Por supuesto, si la IA Davis detecta un código potencialmente problemático, el problema entonces es cómo solucionarlo. Es posible que el Davis CoPilot asesore al programador sobre posibles correcciones de código, aunque esta área aún está en desarrollo.

“Estamos pensando en proporcionar, con este Davis CoPilot, recomendaciones sobre cómo identificamos esta vulnerabilidad en producción basado en su pila tecnológica, y Davis CoPilot le ofrece estas recomendaciones que debería revisar para corregir en su código,” dijo Greifeneder a ENBLE.

Aún es temprano en el uso de IA generativa para ese tipo de recomendaciones de corrección de código, dijo Greifeneder. Si bien la IA causal-predictiva está diseñada para ser confiable, los algoritmos generativos aún sufren el fenómeno de las “alucinaciones”, lo que significa que el programa afirma con confianza información inexacta.

“Lo que es confiable es lo que proviene de la IA causal porque ese es el estado del sistema preciso”, dijo. “Entonces, sabemos exactamente qué hay; lo que no es confiable es la recomendación potencial sobre cómo cambiar el código porque esto proviene de los modelos públicos de GPT-4”.

También: A todos les encanta el desarrollo de baja/no codificación, pero no todos están listos para ello

Por lo tanto, las sugerencias de código para la remediación pueden partir de una premisa válida, pero se enfrentan al mismo problema que el Copiloto de GitHub: no tener una noción realmente rigurosa de qué código es apropiado. Es necesario integrar modelos de lenguaje amplios de manera más estrecha con las herramientas que Dynatrace y otros proporcionan, para darle cierta base a las sugerencias de la IA generativa.

Estudios formales de GPT-4 y sus similares reportan resultados muy mixtos en la búsqueda y corrección de vulnerabilidades de código. El documento técnico publicado por OpenAI con la introducción de GPT-4 en marzo advirtió sobre no depender del programa. GPT-4, según se indica, “[…] tiene un desempeño deficiente al crear exploits para las vulnerabilidades identificadas”.

Un estudio en febrero del predecesor de GPT-4, GPT-3, realizado por el investigador de la Universidad de Pennsylvania, Chris Koch, fue alentador. Mostró que GPT-3 pudo encontrar 213 vulnerabilidades en una colección de archivos de repositorio de GitHub seleccionados por sus vulnerabilidades conocidas. Esa cantidad estaba muy por encima de los 99 errores encontrados por una herramienta de evaluación de código popular llamada Snyk, una forma de “Prueba Estática de Seguridad de Aplicaciones” o SAST, que comúnmente se usa para detectar vulnerabilidades en el software.

Pero, señaló Koch, tanto GPT-3 como Snyk se perdieron muchas vulnerabilidades, tenían muchos “falsos negativos”, como se les conoce.

Un estudio posterior, realizado por la firma de ciberseguridad PeopleTec, se basó en el trabajo de Koch, probando una versión actualizada de GPT-4 lanzada en agosto. Descubrió que GPT-4 encontró cuatro veces más vulnerabilidades en los mismos archivos.

Sin embargo, en ambos estudios, GPT-4 se probó en archivos que representaban un total de poco más de 2,000 líneas de código. Eso es minúsculo en comparación con las aplicaciones de producción completas, que pueden contener cientos de miles a millones de líneas de código, en numerosos archivos vinculados. No está claro si los éxitos en los problemas sencillos de los archivos de GitHub serán escalables a esa complejidad.

También: ChatGPT responde incorrectamente a más de la mitad de las preguntas de ingeniería de software

La carrera está en marcha para tratar de amplificar los modelos de lenguaje para esa tarea mayor. Además de Dynatrace, Snyk Ltd., una empresa privada del Reino Unido que vende una versión comercial de la herramienta de código abierto, ofrece lo que llama “DeepCode AI”. Según afirmó Snyk, esa tecnología puede evitar los tropiezos de la IA generativa al integrarla con otras herramientas. “El enfoque híbrido de DeepCode AI utiliza modelos múltiples y conjuntos de entrenamiento específicos de seguridad con un propósito: asegurar aplicaciones”, afirmó la empresa.

Está claro que la IA generativa tiene mucho camino por recorrer para resolver incluso tipos sencillos de depuración y corrección de programación, sin mencionar la complejidad de un entorno de IT de producción en vivo. El gran cambio hacia la izquierda mediante la IA aún no está aquí.

Lo que se vislumbra en el horizonte, con Davis Copilot y esfuerzos similares, es el uso de la IA generativa como una nueva interfaz para ayudar a los programadores a examinar su propio código de manera más agresiva tanto antes como después de enviar ese código.