ChatGPT, Bard y otros grandes modelos lingüísticos (LLM) han dominado nuestras noticias durante el último año. Y con razón. Estas apasionantes tecnologías nos ofrecen una visión del futuro, el poder y las posibilidades de la IA.
Aunque gran parte de la expectación pública se ha centrado en la creación de texto, imágenes y vídeo, estas herramientas pueden utilizarse para muchas otras disciplinas, como la automatización de software.
Este artículo servirá para profundizar en el modo en que la ingeniería rápida puede ayudarnos con la automatización del software. Sin embargo, nuestro primer puerto de escala debería ser un examen de la propia ingeniería rápida.
¿Qué es la ingeniería rápida?
Los grandes modelos lingüísticos como ChatGPT producen resultados basados en las instrucciones o frases que les proporcionamos. Sin embargo, los resultados varían mucho en función de las palabras o instrucciones que utilicemos. Cuando introducimos instrucciones vagas e imprecisas, el resultado puede no dar en el blanco.
La ingeniería de avisos se refiere al diseño meditado de entradas que ayudan a obtener contenidos más precisos, exactos y, en última instancia, utilizables de estos apasionantes sistemas de IA.
Los sistemas de grandes modelos lingüísticos (LLM) utilizan el procesamiento del lenguaje natural (PLN) para interpretar los enunciados que les damos. Las máquinas convierten estas preguntas o instrucciones (es decir, prompts) en código y lo ejecutan a través de sus vastos repositorios de datos para producir contenidos en cualquier formato que especifiquemos (es decir, texto, imágenes, código).
ChatGPT se entrenó con más de
570 GB de datos
. El material de formación consiste en libros, artículos, textos de Internet, etc. En otras palabras, estos conjuntos de datos contienen una cantidad inimaginable de conocimientos.
Aunque podamos entender el proceso, gran parte de lo que ocurre bajo el capó de estos sistemas pasa fuera de nuestra vista. Por supuesto, controlamos las entradas y salidas y entrenamos el sistema, pero el funcionamiento y las decisiones de estos algoritmos siguen siendo un misterio. En palabras de Sam Bowman, profesor de Inteligencia Artificial de la Universidad de Nueva York, “Lo construimos, lo entrenamos, pero no sabemos lo que hace”.
La ingeniería rápida nos ayuda a gestionar ese caos utilizando productos que producen resultados predecibles y utilizables. Nos ofrecen una vía para desentrañar la ingente cantidad de conocimientos que encierran estas aplicaciones.
Esta disciplina se está convirtiendo en una nueva carrera
con cursos que surgen por todas partes a medida que las empresas descubren cómo aprovechar esta potente tecnología.
¿Cómo puede ayudar la ingeniería de urgencia?
con la automatización de software?
La automatización de software y los LLM tienen mucho en común. Ambos vislumbran un futuro en el que las máquinas aumentarán la creatividad humana para crear lugares de trabajo más rápidos y productivos.
Hay varios ámbitos interesantes en los que pueden converger ambas tecnologías. He aquí tres formas de utilizar la ingeniería rápida en la automatización de software.
#1. Generación de código
Escribir código es una de las aplicaciones más prometedoras de los grandes modelos lingüísticos. Los LLM en Inteligencia Artificial están dando sus primeros pasos. En los próximos años se espera que esta tecnología mejore a medida que se añadan más recursos tanto informáticos como de formación.
A largo plazo, estos avances podrían hacer que la IA escribiera programas completos con intervención humana limitada o nula. Sin embargo, por ahora, los LLM tienen algunas limitaciones. La calidad del resultado de la codificación LLM depende principalmente de la calidad de la entrada. Basura dentro, basura fuera, como se suele decir.
Por supuesto, no es sólo la ingeniería rápida y eficaz la que actúa como barrera. Como se sugiere en ChatGPT y grandes modelos lingüísticos en el mundo académico: Oportunidades y retos (Meyer, 2023), “Actualmente, es más probable que ChatGPT tenga éxito en la escritura precisa de bloques de código más pequeños, mientras que su fiabilidad en la escritura de programas más grandes/más complejos (por ejemplo, un paquete de software) es cuestionable.”
Además, en un reciente artículo de la revista Nature, algunos informáticos advertían de que deberíamos abordar la generación de código con LLM con cierta cautela. Otro documento contemporáneo,
Grandes modelos lingüísticos y errores simples y estúpidos
(Jesse, 2023), demostró cómo un popular LLM, Codex, utilizado por el proveedor Copilot, produce “SStuBs conocidos y literales con una probabilidad hasta 2 veces mayor que el código correcto conocido y literal”.
Aunque no se pueden ignorar estos problemas, todavía hay mucho entusiasmo justificado sobre cómo estos programas pueden ayudar a democratizar el desarrollo de software apoyando a equipos técnicos y no técnicos por igual.
Tal vez lo más impresionante a tener en cuenta es que herramientas como ChatGPT pueden producir código funcional muy rápidamente. Con la ayuda adecuada, los ingenieros pueden reducir el tiempo que se tarda en programar determinados tipos de código, lo que garantiza un ciclo de vida de desarrollo de software más rápido.
A finales de 2022, el popular centro de programación
Stack Overflow prohibió la IA generada
respuestas en su foro. Citaron la elevada tasa de error y las imprecisiones asociadas a la aplicación. Sin embargo, la tecnología se encuentra en una fase incipiente; además, la insatisfacción con los resultados generados por la IA se debe tanto a una ingeniería deficiente como a la propia tecnología.
A pesar de los recelos sobre la tecnología, un
reciente artículo de McKinsey
destaca el impacto que la ingeniería rápida ya está teniendo en el mundo de la programación. La consultora El estado de la IA en 2023: El año de la IA generativa compartió dos tendencias interesantes. En primer lugar, el 7% de las organizaciones que han invertido en IA están contratando a ingenieros puntuales. En segundo lugar, las empresas que utilizan IA han reducido los puestos de ingeniería de software relacionados con la IA del 38% al 28%.
Una forma de interpretar estas tendencias es que las empresas se sienten cómodas con esta configuración y están preparadas para ceder la automatización del software a sus máquinas. Aunque estas cifras podrían sobresaltar a los ingenieros actuales, la encuesta de McKinsey sugiere que “sólo el 8% afirma que el tamaño de sus plantillas se reducirá en más de una quinta parte”. En general, es probable que los ingenieros necesiten reciclarse para aprovechar la tendencia hacia la automatización del software generada por la IA.
Una aplicación obvia para la automatización de software generada por IA incluye la creación de robots de automatización. Sin embargo, aunque la ingeniería rápida es una interfaz aparentemente fácil de usar gracias a su enfoque en la conversación, queda por ver si puede suplantar a las soluciones existentes.
En muchos sentidos, programas como ZAPTEST ya han democratizado el mercado de la automatización del software. Ya existen herramientas sin código que permiten a los equipos no técnicos crear robots RPA de alta calidad. Aunque un software como ChatGPT puede crear bots, la implementación y el mantenimiento podrían resultar complicados para cualquiera que no sea ingeniero de software e incluso para los que sí lo son.
Grabar las interacciones entre el ser humano y el ordenador desde la interfaz gráfica de usuario y convertir estos movimientos en código es mucho más fácil de usar que utilizar avisos. Si a esto le sumamos el potencial de LLM para producir código inestable y plagado de errores, es justo decir que el software de RPA no irá a ninguna parte en un futuro próximo.
#2. Conversión de datos no estructurados
Los datos no estructurados no son el punto fuerte de la automatización robótica de procesos. La tecnología no se diseñó para gestionar mensajes de correo electrónico, imágenes, audio y mucho más. Las herramientas de RPA necesitan modelos de datos predefinidos con estructuras organizadas.
Una gran parte de los datos no estructurados son textos en lenguaje natural. Se construyen grandes modelos lingüísticos para “entender” esta información y extraer de ellos el significado semántico. Como tal, esto crea una oportunidad considerable para los equipos que quieren interpretar estos textos y convertirlos en un formato agradable para las herramientas RPA.
Muchos equipos llevan años utilizando el procesamiento del lenguaje natural (PLN) para ayudarles con el análisis de sentimientos. Este proceso, también conocido como minería de opiniones, ayuda a las organizaciones a mantenerse al tanto de los sentimientos y actitudes de los consumidores hacia las marcas. En la mayoría de los casos, estas herramientas se utilizan para detectar sentimientos positivos, negativos y neutros en un texto. Sin embargo, la tecnología también es capaz de detectar emociones de forma mucho más granular.
Aunque existen varias herramientas en el mercado que ofrecen esta funcionalidad, la de LLM proporciona una vía para un uso más versátil que va más allá de comprender cómo se siente la gente sobre un producto o servicio. Por ejemplo, el análisis de datos ha ganado popularidad en los últimos años. Los macrodatos proporcionan a las empresas una ventaja al permitirles obtener información y conocimientos que les ayudan a tomar decisiones basadas en datos.
Las herramientas de automatización robótica de procesos pueden ayudar a recopilar datos. Sin embargo, como ya hemos dicho, tienen dificultades con determinados tipos de información. Sin embargo, cuando se combina con herramientas de IA que utilizan grandes modelos lingüísticos, la RPA puede recopilar grandes cantidades de datos y utilizarlos para generar la información necesaria para las herramientas de Business Intelligence (BI).
Uno de los aspectos más interesantes de la IA Generativa es su capacidad para dar sentido a los datos introducidos. Con la ingeniería adecuada, los equipos pueden convertir estos datos en un formato que funcione para sus herramientas de RPA.
RPA puede ayudar a que los flujos de trabajo de Big Data sean más eficientes. Para empezar, puede utilizarlo como ayuda tanto para la introducción como para la extracción de datos. Sin embargo, quizás los casos de uso más valiosos e intrigantes impliquen el uso de herramientas de RPA para transformar, limpiar y cargar datos o garantizar que la migración de datos se ejecuta de forma rápida, eficiente y precisa.
Otro punto importante es la gobernanza de los datos. La automatización de las solicitudes de datos ayuda a las organizaciones a cumplir la normativa y mantiene los datos fuera de la vista de los trabajadores manuales.
#3. Automatización de pruebas
La automatización de pruebas ha despegado en los círculos de desarrollo de software porque proporciona una forma más rápida de verificar el software. Las pruebas y el aseguramiento de la calidad han sido tradicionalmente procesos costosos y lentos; la automatización de pruebas ofrece una solución a ambos retos.
Una de las primeras cosas que puede hacer la ingeniería rápida es mejorar la calidad de los casos de prueba. Con las indicaciones adecuadas, estas máquinas pueden analizar casos de prueba e identificar problemas y soluciones. Este proceso puede ampliar el alcance de los casos de prueba y dar lugar a pruebas más exhaustivas.
Por ejemplo, puede introducir código en un modelo lingüístico de gran tamaño del mismo modo que lo haría con un revisor humano. Estas máquinas pueden analizar rápidamente el código y detectar errores, fallos e incluso problemas de rendimiento. Y lo que es más intrigante, los LLM también ofrecen la posibilidad de completar el código de los casos de prueba a partir de meros fragmentos, lo que acelera la creación de casos de prueba.
La ingeniería rápida pretende abordar muchos de los problemas que han impulsado la aparición del enfoque Agile/DevOps en el desarrollo de software. Los ingenieros quieren pruebas eficaces y fáciles de repetir que detecten los problemas antes de implantar las aplicaciones. La idea es que, al liberar tiempo, los desarrolladores de software puedan concentrarse en tareas más creativas y valiosas.
Como se señala en un documento clásico
Deuda técnica en la automatización de pruebas
(K. Wiklund, 2012), los equipos de desarrollo de software pueden tener problemas si dedican demasiado tiempo a las pruebas y verificaciones manuales de su software. Los costes iniciales de las soluciones de automatización de pruebas, la falta de experiencia en automatización e incluso la preferencia por métodos más antiguos pueden contribuir a estas ralentizaciones.
Uno de los aspectos más interesantes del desarrollo ágil de software implica
el Desarrollo Orientado al Comportamiento (BDD).
El concepto se refiere al desarrollo de software con los comportamientos esperados del usuario. Aunque es evidente que la aplicación de este enfoque puede ahorrar tiempo, muchos equipos tienen dificultades para llevar a la práctica esta automatización. Sin embargo, los LLM pueden aportar una solución.
Algunos de los síntomas más comunes de la deuda técnica son la documentación deficiente y la falta de pruebas sólidas. Son problemas que los LLM de hoy pueden ayudar a resolver. Sin embargo, otros síntomas notables, como la refactorización, son demasiado complejos para la IA Generativa actual y puede que no supongan un ahorro de tiempo.
Reflexiones finales
Las aplicaciones de IA generativa tienen un potencial inmenso. Sin embargo, la interfaz fácil de usar y conversacional puede ser engañosa. Mucha gente cree que es sencillo generar resultados de calidad con estas máquinas. Sin embargo, una ingeniería rápida excelente es más complicada de lo que cabría esperar.
Una ingeniería rápida y eficaz requiere mucho ensayo y error. También requiere mucha previsión por parte del ingeniero para garantizar que las respuestas sean útiles. Por último, comprobar y volver a comprobar el trabajo es importante debido a la posibilidad bien conocida de que se produzcan errores.
Aunque es posible que los puestos de ingeniería estén en alza, no todo el mundo está convencido. En Harvard Business Review, Oguz A. Acar expone el fascinante argumento de que “Las futuras generaciones de sistemas de IA serán más intuitivas y hábiles en la comprensión del lenguaje natural, reduciendo la necesidad de indicaciones meticulosamente diseñadas”.
Sea cual sea el futuro, la IA Generativa estará presente. Aunque la ingeniería rápida es muy prometedora, es difícil saber con seguridad qué papel desempeñará.
Curiosamente, el software de automatización de pruebas de software ya está repleto de casos de uso y casos de éxito que demuestran su idoneidad para acelerar el desarrollo de software sin comprometer la precisión ni la verificación exhaustiva de las aplicaciones.
Herramientas como ZAPTEST ya permiten a los desarrolladores abordar problemas como la falta de tiempo y recursos, la deuda técnica, la documentación y las pruebas exhaustivas y RPA. Además, estas herramientas son más fáciles de usar que la ingeniería rápida, lo que las convierte en opciones mucho más adecuadas para equipos no técnicos. Como siempre, el verdadero potencial reside en la intersección de estas apasionantes tecnologías de automatización.