Los coprogramadores de IA quizás no generen tantos errores como temían PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Los coprogramadores de IA quizás no generen tantos errores como se temía

Los modelos de aprendizaje automático que impulsan las herramientas de finalización de código de próxima generación como GitHub Copilot pueden ayudar a los desarrolladores de software a escribir código más funcional, sin hacerlo menos seguro.

Ese es el resultado tentativo de una pequeña encuesta de 58 personas realizada por un grupo de científicos informáticos de la Universidad de Nueva York.

In un papel Distribuido a través de ArXiv, Gustavo Sandoval, Hammond Pearce, Teo Nys, Ramesh Karri, Brendan Dolan-Gavitt y Siddharth Garg cuentan cómo pusieron a prueba la seguridad del código fuente creado con la ayuda de modelos de lenguaje grandes (LLM).

Los LLM como la familia OpenAI GPT han sido capacitados en cantidades masivas de datos de texto público o código fuente público en el caso de Codex de OpenAI, un descendiente de GPT y la base de Copilot de GitHub. Como tales, pueden reproducir errores cometidos en el pasado por programadores humanos, lo que ilustra la máxima "si entra basura, sale basura". Existía el temor de que estas herramientas regurgitaran y sugirieran un código incorrecto a los desarrolladores, quienes insertarían las cosas en sus proyectos.

Además, la seguridad del código puede ser contextual: el código que es seguro de forma aislada puede no serlo cuando se ejecuta en una secuencia particular con otro software. Por lo tanto, estas herramientas de autocompletar pueden ofrecer sugerencias de código que por sí solas están bien, pero conectadas con otro código, ahora son vulnerables a ataques o simplemente están rotas. Dicho esto, resulta que estas herramientas en realidad no pueden hacer que los humanos sean peores en la programación.

En cierto sentido, los investigadores estaban apagando su propio fuego. Hace aproximadamente un año, dos de los mismos científicos informáticos contribuyeron a un artículo titulado “¿Dormidos frente al teclado? Evaluación de la seguridad de las contribuciones del código de GitHub Copilot. Ese trabajo encontrado el 40 por ciento de la salida de Copilot incluía debilidades potencialmente explotables (CWE).

“La diferencia entre los dos documentos es que 'Asleep at the Keyboard' buscaba la generación de código totalmente automatizada (sin humanos en el circuito), y no teníamos usuarios humanos con los que comparar, por lo que no podíamos decir nada sobre cómo la seguridad de Copilot en comparación con la seguridad del código escrito por humanos”, dijo Brendan Dolan-Gavitt, coautor de ambos artículos y profesor asistente en el departamento de ingeniería y ciencias de la computación en NYU Tandon, en un correo electrónico a El registro.

“El documento de estudio de usuarios trata de abordar directamente esas piezas faltantes, haciendo que la mitad de los usuarios obtengan asistencia de Codex (el modelo que impulsa a Copilot) y haciendo que la otra mitad escriba el código ellos mismos. Sin embargo, también es más limitado que 'Dormido al teclado': solo observamos una tarea y un idioma (escribir una lista enlazada en C)”.

En el último informe, "Implicaciones de seguridad de los asistentes de código de modelo de lenguaje grande: un estudio de usuario", un grupo ligeramente variado de investigadores de la NYU reconoce que el trabajo anterior no logra modelar el uso de herramientas basadas en LLM como Copilot de manera realista.

“Primero, estos estudios asumen que el LLM genera automáticamente todo el código (lo llamaremos modo de piloto automático)”, explican los científicos en su artículo.

“En la práctica, los LLM de finalización de código ayudan a los desarrolladores con sugerencias que elegirán aceptar, editar o rechazar. Esto significa que, si bien los programadores propensos al sesgo de automatización pueden aceptar ingenuamente las terminaciones con errores, otros desarrolladores pueden producir menos código con errores al usar el tiempo ahorrado para corregir errores”.

En segundo lugar, observan que, si bien se ha demostrado que los LLM producen código con errores, los humanos también lo hacen. Los errores en los datos de capacitación de LLM provinieron de personas.

Entonces, en lugar de evaluar los errores del código generado por LLM por sí solo, se propusieron comparar cómo el código producido por desarrolladores humanos asistidos por modelos de aprendizaje automático difiere del código producido por la programación que trabaja por su cuenta.

Los informáticos de la NYU reclutaron a 58 participantes de la encuesta (estudiantes de pregrado y posgrado en cursos de desarrollo de software) y los dividieron en un grupo de control, que trabajaba sin sugerencias, y un grupo asistido, que tenía acceso a un sistema de sugerencias personalizado creado con OpenAI. API del códice. También usaron el modelo Codex para crear 30 soluciones a los problemas de programación dados como punto de comparación. Este grupo de piloto automático funcionó principalmente como un segundo grupo de control.

Tanto los grupos asistidos como de control podían consultar recursos web, como Google y Stack Overflow, pero no pedir ayuda a otros. El trabajo se realizó en Visual Studio Code dentro de un contenedor basado en web creado con código abierto Anubis.

Se pidió a los participantes que completaran un programa de lista de compras utilizando el lenguaje de programación C porque "es fácil para los desarrolladores expresar patrones de diseño vulnerables en C sin darse cuenta" y porque la cadena de herramientas del compilador de C utilizada no verifica los errores en el mismo grado que las cadenas de herramientas para los lenguajes modernos, como Go y Rust, sí.

Cuando los investigadores analizaron manualmente el código producido por los grupos de Control y Asistente, descubrieron que, contrariamente al trabajo anterior, las sugerencias de código de IA no empeoraron las cosas en general.

Parece claro, pero hay detalles.

“[N]o encontramos evidencia que sugiera que la asistencia de Codex aumenta la incidencia de errores de seguridad”, afirmó el documento, al tiempo que señaló que el pequeño tamaño de la muestra del estudio significa que se justifica un estudio adicional. “Por el contrario, hay alguna evidencia que sugiere que las CWE/LoC [líneas de código] disminuyen con la ayuda del Codex”.

“Es difícil concluir esto con mucha confianza estadística”, dijo Siddharth Garg, investigador de seguridad cibernética y profesor asociado en el departamento de ingeniería de NYU Tandon, en una entrevista telefónica con El registro.

Es difícil concluir esto con mucha confianza estadística.

No obstante, dijo, "los datos sugieren que los usuarios de Copilot no estaban mucho peor".

Dolan-Gavitt es igualmente cautelosa con los hallazgos.

“El análisis actual de los resultados de nuestro estudio de usuarios no ha encontrado ninguna diferencia estadísticamente significativa; todavía estamos analizando esto, incluso cualitativamente, por lo que no sacaría conclusiones sólidas de esto, particularmente porque fue un estudio pequeño (58 usuarios en total) y el los usuarios eran todos estudiantes en lugar de desarrolladores profesionales”, dijo.

“Aún así, podemos decir que con estos usuarios, en esta tarea, el impacto de seguridad de tener asistencia de IA probablemente no fue grande: si tuviera un impacto muy grande, habríamos observado una diferencia mayor entre los dos grupos. Estamos haciendo un poco más de análisis estadístico para hacer eso preciso en este momento”.

Más allá de eso, surgieron algunas otras ideas. Una es que los participantes del grupo Asistente fueron más productivos, generaron más líneas de código y completaron una fracción mayor de las funciones de la tarea.

“Los usuarios del grupo Asistido pasaron más pruebas funcionales y produjeron más código funcional”, dijo Garg, y agregó que los resultados de este tipo pueden ayudar a las empresas que buscan herramientas de codificación asistida a decidir si implementarlas.

Otra es que los investigadores pudieron distinguir la salida producida por los grupos Control, Asistido y Piloto automático, lo que puede aliviar preocupaciones de estudiantes y facultad sobre el engaño del poder de la IA en entornos educativos.

Los científicos también descubrieron que las herramientas de IA deben considerarse en el contexto del error del usuario. “Los usuarios brindan avisos que pueden incluir errores, aceptan avisos con errores que terminan en los programas 'completados' y aceptan errores que luego se eliminan”, dice el documento. "¡En algunos casos, los usuarios también terminan con más errores de los sugeridos por el modelo!"

Espere más trabajo en este sentido. ®

Sello de tiempo:

Mas de El registro