Ilustración de The Project Twins
Seis consejos para codificar mejor con ChatGPT
Aunque potentes, las herramientas no son tan inteligentes como parecen. Úselos con precaución, advierten los informáticos.
Jeffrey M Perkel
A menos que haya estado viviendo bajo una roca, Ud. conoce ChatGPT. El chatbot, impulsado por inteligencia artificial (IA) y creado por OpenAI en San Francisco, California, brinda respuestas inquietantemente similares a las de los humanos a las preguntas de los usuarios (llamadas indicaciones) sobre casi cualquier tema. ChatGPT está entrenado en un vasto corpus de texto, y su capacidad para entablar conversaciones basadas en texto,implica que los usuarios pueden refinar sus respuestas. Incluso si sus respuestas iniciales son distorsionadas, a menudo finalmente produce resultados precisos, incluido el código de software.
Los investigadores pueden usar ChatGPT para depurar y anotar código, traducir software de un lenguaje de programación a otro y realizar operaciones repetitivas, como trazar datos. Una preimpresión de marzo informó que el programa podía resolver el 76 % de 184 tareas en un curso de introducción a la bioinformática, como trabajar con hojas de cálculo, después de un solo intento y el 97 % en siete intentos 1
Esas son buenas noticias para los investigadores que se sienten incómodos codificando o que no tienen el presupuesto para contratar a un programador de tiempo completo: para ellos, los chatbots pueden ser una herramienta democratizadora.
Sin embargo, a pesar de su aparente sensibilidad, los chatbots no son inteligentes. Se les ha llamado loros estocásticos , que repiten aleatoriamente lo que han visto antes. Amy Ko, científica informática de la Universidad de Washington en Seattle invoca un programa de concursos estadounidense de larga duración para describir las limitaciones de la herramienta y escribe en el sitio de redes sociales Mastodon: “ChatGPT es como un exconcursante de Jeopardy desesperado que dejó de seguir la cultura popen 2021, pero realmente quiere volver al juego, y también es un robot sin conciencia, agencia, moralidad, cognición incorporada o vida interior emocional”. (Los datos utilizados para entrenar ChatGPT solo se extienden hasta 2021).
En resumen, ChatGPT y las herramientas relacionadas basadas en modelos de lenguaje extenso (LLM), que incluyen Microsoft Bing y GitHub Copilot, son ayudas de programación increíblemente poderosas, pero deben usarse con precaución. Aquí hay consejos sobre seis maneras de cómo hacerlo.
Elige tus aplicaciones
Los chatbots funcionan mejor para tareas de programación pequeñas y discretas, como cargar datos, realizar manipulaciones básicas de datos y crear visualizaciones y sitios web. Pero eso no es lo mismo que ingeniería de software, dice Neil Ernst, científico informático de la Universidad de Victoria en Canadá.
“La ingeniería de software es mucho más que simplemente resolver un rompecabezas de programación”, explica Ernst. “Hay que pensar en marcos de prueba, escribir código que se mantenga y comprender las compensaciones involucradas en la construcción de un sistema, como la velocidad y la legibilidad.” “No creo que las herramientas actuales estén resolviendo ninguno de esos problemas”.
Eso deja muchas tareas que pueden hacer, como recordar la sintaxis para crear visualizaciones con Matplotlib, una biblioteca de gráficos para el lenguaje de programación Python. En ese sentido, los chatbots son como una interfaz de conversación para StackOverflow, un foro de preguntas y respuestas en línea para programadores. "Eso no es algo que a nadie le guste especialmente escribir", dice Ernst, "y nos ahorra tiempo para hacer las preguntas analíticas difíciles que podríamos tener sobre los datos".
Los chatbots también son buenos para explicar por qué el código no funciona. Emery Berger, científico informático de la Universidad de Massachusetts Amherst, ha explotado esas habilidades para construir varias herramientas útiles. Uno, llamado cwhy, usa ChatGPT para explicar los errores del compilador en el código escrito en los lenguajes de programación C, C++ y Rust. Otro, ChatDBG, proporciona una interfaz conversacional para la depuración y un tercero, Scalene, usa la IA para sugerir optimizaciones de código para mejorar el rendimiento.
Los chatbots pueden incluso traducir código de un lenguaje de programación a otro. Mathieu Coppey, biofísico del Instituto Curie de París, utiliza ChatGPT para pasar de MATLAB, su lenguaje preferido, a Python. Usando Google y foros en línea, normalmente necesita días para que su código Python funcione. “Ahora, puedo hacer eso en una hora más o menos”, sostiene.
Confiar, pero verificar
Es posible que los chatbots no siempre sepan de lo que están hablando, pero ciertamente suenan como si lo hicieran. En algunos casos, la IA no entiende la pregunta; en otras ocasiones, proporciona una respuesta incorrecta. Cuando el código no se ejecuta, tales errores son obvios. A veces, sin embargo, el código se ejecuta, pero arroja un resultado incorrecto.
Según un estudio 2 en coautoría de la lingüista Emily Morgan de la Universidad de California, Davis, los chatbots, como el código escrito por humanos en el que fueron entrenados, a menudo crean lo que ella llama “errores simples y estúpidos”. Estos errores de una sola línea, como usar > en lugar de = en una declaración condicional, son fáciles de corregir, pero difíciles de encontrar. “Si no sabes lo suficiente como para distinguir entre algo correcto y algo que en realidad no tiene sentido, entonces podrías meterte en problemas”, sostiene.
Iza Romanowska, científica de la complejidad que estudia civilizaciones antiguas en el Instituto de Estudios Avanzados de Aarhus en Dinamarca, ha utilizado ChatGPT para producir código en un lenguaje llamado NetLogo. Debido a que hay menos código en línea escrito en NetLogo que en los lenguajes Python y R, ChatGPT lo domina menos. A veces, la IA salpica su código sugerido con funciones que en realidad no existen, dice, un comportamiento que a veces se llama alucinación.
La conclusión es no aceptar ciegamente lo que ChatGPT le ofrece: léalo detenidamente y pruébelo. Asegúrese de que funcione como se espera en los 'casos extremos'; por ejemplo, ¿un algoritmo para ordenar n números incluye el n -ésimo número? Patrick Lam, científico informático de la Universidad de Waterloo en Canadá, dice: “No confiaría en esto, más allá de lo que puedo lanzar”.
Piense en la seguridad
Código de salida de chatbots que refleja sus datos de entrenamiento. Eso no siempre es bueno, dice Ko. “La calidad agregada del código en la web que se comparte, en el que se entrenan estos [chatbots], en realidad es bastante baja”.
Así como es poco probable que el código aleatorio en línea sea particularmente eficiente o robusto, también lo es el código generado por el chatbot. Es posible que no funcione bien en grandes conjuntos de datos, por ejemplo, y puede contener vulnerabilidades de seguridad.
Brendan Dolan-Gavitt, científico informático de la Universidad de Nueva York, dice que cuando se lanzó la herramienta de programación Copilot de Github en 2021, él y su equipo la probaron en 89 escenarios relevantes para la seguridad. Una era la capacidad de verificar consultas con formato incorrecto utilizando el lenguaje SQL que podría corromper una base de datos, lo que se conoce como ataque de inyección de SQL3. “Alrededor del 40 % del tiempo, Copilot producía código que era vulnerable”. Ese es un objetivo cambiante: cuando Dolan-Gavitt colocó esos escenarios en una versión más nueva de ChatGPT subyacente de LLM, llamada GPT-4, la tasa de error cayó al 5 %.
Aun así, vale la pena verificar su código. Pero también considere la aplicación: no todo es de misión crítica. La interfaz web de una base de datos o una herramienta de visualización, por ejemplo, puede requerir una vigilancia adicional. Pero si sabe cómo debería ser la respuesta a su problema de programación, “simplemente hágalo”, dice el científico informático SayashKapoor de la Universidad de Princeton en Nueva Jersey, “porque es fácil verificar si está equivocado”.
Iterar
La codificación basada en chatbots, dice Ko, “no es una experiencia única”. Es una conversación. “Escribes algo, obtienes algo de vuelta, lo lees con escepticismo, pides más detalles, pides que arregle algo”.
Gangqing (Michael) Hu, que dirige las instalaciones centrales de bioinformática en la Universidad de West Virginia en Morgantown, aprovechó ese flujo de trabajo iterativo para desarrollar un método que los principiantes en bioinformática pueden usar para optimizar las indicaciones del chatbot, llamado OPTIMAL4. Los usuarios brindan indicaciones detalladas, prueban las respuestas y retroalimentan al chatbot para modificar sus respuestas. Eso puede incluir preguntas sobre errores, así como ajustes al mensaje en sí. “La comunicación es la clave”, explica Hu.
Si se queda atascado, intente ajustar la configuración, sugiere Xijin Ge, bioinformático de la Universidad Estatal de Dakota del Sur en Brookings. La configuración de 'temperatura' de ChatGPT, por ejemplo, controla la creatividad: cuanto más alta es la temperatura, más creativa es la salida. “A veces funciona”, dice Ge.
Pero no siempre, en algunos casos, “tendrás que intervenir y tomar el control”, dice Ko.
Antropomorfizar
Los chatbots no son personas, pero puede ser útil tratarlos de esa manera. “Trate a esta IA como un pasante de verano”, aconseja Ge, un estudiante universitario que trabaja duro y está ansioso por complacer, pero también sin experiencia y propenso a errores.
Evite la ambigüedad y divida su problema en partes más pequeñas, sugiere Paul Denny, científico informático de la Universidad de Auckland, Nueva Zelanda.
Otro consejo: dirija al chatbot para que asuma un rol, como un biólogo que domina Python. Especifique las herramientas o bibliotecas de programación que le gustaría usar. Tales directivas pueden ayudar al chatbot a entrar "en el espacio probabilístico correcto", dice Ko, es decir, concentrarse en el texto que es más probable que siga al aviso.
Por ejemplo, un aviso en el estudio de Hu4 le preguntó a ChatGPT: “Actúe como un bioinformático experto en análisis de datos de ChIP-Seq, me ayudará escribiendo código con el mínimo número de líneas posible. Reinicie el hilo si se le solicita. Responda "SÍ" si lo entiende".
Y, si es posible, proporcione el código de inicio, los comentarios y los resultados esperados. “Los ejemplos realmente pueden ayudar a ChatGPT a orientarlo en la dirección correcta”, dice Dong Xu, científico informático de la Universidad de Missouri, Columbia.
Aceptar el cambio
Finalmente, los LLM están en constante evolución y se vuelven más poderosos. Esa es una buena noticia para los investigadores, aunque los mantendrá alerta. La duración de las indicaciones está aumentando, lo que permite respuestas más matizadas. Y constantemente surgen nuevas herramientas. Un complemento llamado Code Interpreter convierte a ChatGPT en un analista de datos digitales, lo que permite a los usuarios cargar conjuntos de datos, hacer preguntas sobre sus datos y descargar resultados. Como lo expresó un blogger sobre IA: “Es como tener una conversación con sus datos. ¿Cuán genial es eso?”
Nature 618 , 422-423 (2023)doi: https://doi.org/10.1038/d41586-023-01833-0
Referencias
1. Piccolo, SR et al. Preimpresión en https://arxiv.org/abs/2303.13528 (2023).
2. Jesse, K. et al. Preimpresión en https://arxiv.org/abs/2303.11455 (2023).
3. Pearce, H. et al. Preimpresión en https://arxiv.org/abs/2108.09293 (2021).
4. Shue, E. et al. Quant. Biol . https://doi.org/10.15302/J-QB-023-0327 (2023)