De acuerdo a un estudio reciente ChatGPT, de un equipo de la Universidad Americana de Purdue (Indiana), da respuestas incorrectas a preguntas sobre programación de software la mitad de las veces. El CIO entrevistó a los investigadores Samia Kabir, Bonan Kou y David Udo-Imeh, así como al profesor asistente Tianyi Zhang, en el origen de este estudio que aún se encuentra en prepublicación. Estos no abogan por la prohibición de la IA generativa en la programación, pero invitan a la industria del software y a los departamentos de TI a pensar en las salvaguardias que se deben implementar para limitar los riesgos.

¿Le sorprendieron los resultados de su estudio? ¿Esperabas tales niveles de errores de GPT?

No nos sorprende que ChatGPT cometa muchos errores e inconsistencias al responder preguntas de programación, ya que ha habido estudios previos en otras áreas (por ejemplo, sobre cuestiones de buen sentido) que muestran que ChatGPT y otros LLM probablemente generen respuestas incorrectas. Un buen ejemplo de esto es la respuesta incorrecta de Bard a la pregunta sobre el telescopio espacial James Webb. Por otro lado, nos sorprende un poco que una parte significativa (34%) de los participantes en nuestro estudio que probó las reacciones de los usuarios prefirieran ChatGPT debido a la información completa, bien formulada y de aspecto humano que proporciona esta herramienta. En realidad, esto es una buena indicación para Stack Overflow y otros foros de preguntas y respuestas en línea, ya que se ha informado que Stack Overflow sufre de respuestas o comentarios tóxicos y actitudes poco acogedoras.

Se podría pensar que, dado que los lenguajes informáticos son deterministas, la IA generativa funcionaría mejor que con el lenguaje natural. ¿Cómo se explica que esto no sea así?

Responder preguntas de programación es muy diferente a generar código. Las preguntas de programación siempre están escritas en lenguaje natural y muchas preguntas contienen una combinación de fragmentos de código, mensajes de error y comentarios en lenguaje natural (ver, por ejemplo, este ejemplo en desbordamiento de pila).

Además, responder preguntas de programación requiere tener mucha experiencia en el campo, una comprensión profunda de los conceptos y conocimientos de programación. Por eso creemos que las preguntas sobre programación son más difíciles de responder que las preguntas comunes.

¿Cómo se explica que los usuarios depositen una confianza tan injustificada en las respuestas de la IA?

Esto se debe principalmente a que las respuestas de ChatGPT parecen muy plausibles, completas y están redactadas de forma educada. Como muestra el análisis lingüístico de nuestro estudio, en comparación con las respuestas de Stack Overflow, las respuestas de ChatGPT son más formales, expresan un pensamiento más analítico, muestran más esfuerzo para lograr los objetivos establecidos y muestran menos emoción. negativo. En la comunicación entre humanos, los humanos generalmente somos más propensos a creer en cosas que parecen formales, convincentes y educadas.

De facto, la IA generativa se está convirtiendo en una práctica estándar en la programación de software dentro de las empresas. ¿Qué consecuencias podemos esperar?

Es muy probable que algunos errores en los códigos o respuestas generados por los LLM se introduzcan en el software comercial. Por ejemplo, los LLM pueden generar código que utilice API inseguras o recomendar una API desactualizada. Los LLM como GPT se entrenan a partir de una gran cantidad de texto de Internet, sin filtrar códigos vulnerables o respuestas desactualizadas. Por lo tanto, estas herramientas no comprenden realmente la seguridad, la privacidad, la solidez, etc. del software. Además, estudios recientes han demostrado que es posible envenenar los LLM para generar código vulnerable. Por tanto, los desarrolladores de software no deberían depender demasiado de la IA. Deben mantenerse alerta y dedicar más tiempo a revisar el código y las respuestas generadas por los LLM.

Pese a todo, ¿qué consejo le darías a los CIO y CTO que quieran utilizar la IA para determinadas tareas de programación?

En primer lugar, no creemos que el uso de la IA para la programación sea intrínsecamente malo y que las empresas deban prohibirlo a toda costa. De hecho, la IA puede fortalecer las capacidades de los desarrolladores de software y mejorar su productividad. Por lo tanto, deberíamos adoptarlo mientras desarrollamos mecanismos regulatorios. Como mínimo, los CIO y CTO pueden organizar sesiones de capacitación para educar a sus desarrolladores sobre todas las limitaciones de las herramientas de programación basadas en IA. Es posible que también deseen revisar sus procedimientos y prácticas de revisión de código para adaptarlos a las herramientas de inteligencia artificial. Por ejemplo, asignar más revisores al código generado por IA.

Además, las recientes innovaciones en IA para programación recuerdan a las innovaciones en automóviles y aviones. Muchas innovaciones conllevan grandes riesgos desde el principio. Pero esto no debería impedirnos seguir perfeccionando estas innovaciones para que posteriormente puedan utilizarse bien y de forma segura. La industria y el mundo académico deberían considerar cuáles podrían ser los "cinturones de seguridad" y los "sistemas para evitar colisiones" para la programación basada en IA, mientras continúan mejorando el rendimiento general de los modelos de IA. Aprendizaje automático.

¿Cómo cambia la IA generativa en los cursos universitarios orientados a la programación?

Creemos que la IA generativa transformará la educación en torno a la ciencia, la tecnología, la ingeniería y las matemáticas. Muchos estudiantes de nuestros cursos utilizan ChatGPT para generar código para sus tareas de programación y responder preguntas de programación. Por un lado, hace que los conocimientos y las respuestas sean más accesibles para los estudiantes. Para muchas preguntas, los estudiantes ya no necesitan ir a la universidad en horario de oficina y pedirle al maestro o profesor que los oriente. Ahora sólo necesitan contactar con ChatGPT. Aunque ChatGPT no siempre da la respuesta correcta, aún puede brindar una guía útil. Por otro lado, esto dificulta mucho la evaluación de los estudiantes, ya que sigue siendo arduo determinar si una solución se basa o no en las respuestas de ChatGPT.

Algunos se preguntan si los estudiantes todavía pueden aprender tanto como antes de que apareciera ChatGPT. Esto no nos preocupa mucho, porque sabemos que las respuestas de ChatGPT a menudo contienen errores y los estudiantes deben inspeccionar cuidadosamente sus respuestas y corregir los errores para obtener un resultado satisfactorio. Este proceso de inspección ayudará a los estudiantes a aprender. Elementos mecánicos como las reglas sintácticas de los lenguajes de programación pueden volverse menos importantes para enseñar en la era de la IA generativa. ChatGPT es muy eficaz para memorizar elementos mecánicos y liberar a los estudiantes del trabajo de memorización. Por lo tanto, creemos que los programas universitarios deberían centrarse más en enseñar cosas fundamentales, conceptuales y creativas, como patrones de diseño de software, diseño de arquitectura y algoritmos que ChatGPT a menudo tiene dificultades para comprender. Sin embargo, tenemos la impresión de que hoy en día, muchas tareas y exámenes de programación todavía ponen a prueba la capacidad de los estudiantes para memorizar soluciones y reglas de sintaxis.