Ponen a ChatGPT como CEO de una empresa virtual: desarrolla un software en solo siete minutos
Un estudio reciente llevado a cabo por la Universidad de Brown ha capturado la atención de la comunidad tecnológica al asignar a un modelo de inteligencia artificial, ChatGPT 3.5, el rol de CEO en una empresa de desarrollo de software virtual llamada CHAT DEV. El experimento se dividió en cuatro etapas clave: diseño, codificación, pruebas y documentación. Con una intervención humana mínima, la IA fue capaz de desarrollar un juego de mesa llamado Gomoku en un tiempo asombroso de siete minutos y a un costo de aproximadamente un euro.
Lo sorprendente es que, el 86,66% de los proyectos desarrollados se ejecutaron sin errores, lo que destaca la eficiencia y precisión de la IA en este contexto.
Veamos los detalles.
Importancia de la IA en el desarrollo de software
La inteligencia artificial ha estado en el centro de numerosas discusiones en el ámbito del desarrollo de software, pero este experimento lleva el debate a un nuevo nivel. La capacidad de una IA para gestionar una empresa de software, tomar decisiones lógicas, asignar tareas y corregir errores, todo ello con una intervención humana mínima, marca un hito en la evolución de la ingeniería de software. No sólo plantea preguntas sobre la eficiencia y la automatización, sino que también abre nuevas vías para la implementación de IA en ciclos de desarrollo más complejos.
La importancia de este experimento no se limita a la velocidad y el costo; también pone de manifiesto cómo la IA puede ser una herramienta valiosa para identificar y corregir vulnerabilidades en el software, lo que es crucial para la seguridad cibernética.
Contexto tecnológico
Descripción del modelo 3.5 de ChatGPT
El modelo 3.5 de ChatGPT es una versión avanzada de la serie de modelos GPT (Generative Pre-trained Transformer) desarrollada por OpenAI. Este modelo específico se basa en una arquitectura de transformadores con millones de parámetros entrenables, lo que le permite realizar tareas de procesamiento del lenguaje natural con una precisión y eficacia notables. A diferencia de sus predecesores, el modelo 3.5 presenta mejoras en la comprensión contextual, la generación de texto y la capacidad para realizar tareas más complejas, como la toma de decisiones lógicas y la resolución de problemas.
Tecnologías subyacentes y capacidades
El núcleo tecnológico de ChatGPT 3.5 se basa en una serie de tecnologías y algoritmos de aprendizaje profundo. Algunos de los componentes clave incluyen:
- Arquitectura: permite al modelo manejar secuencias de datos de manera más eficiente, lo que es crucial para tareas como la generación de texto y la toma de decisiones (mejorada con la versión 4.0, por cierto).
- Entrenamiento supervisado: el modelo se entrena en grandes conjuntos de datos etiquetados para mejorar su capacidad para entender y generar texto de manera coherente.
- Atención mecanizada: esta característica permite al modelo centrarse en partes específicas del texto cuando realiza tareas, mejorando así la precisión y la relevancia de sus respuestas.
- Capacidades multilingües: ChatGPT 3.5 tiene la capacidad de entender y generar texto en varios idiomas, lo que lo hace aplicable en un contexto global.
- APIs y SDKs: el modelo se puede integrar fácilmente en diferentes plataformas y aplicaciones a través de APIs y kits de desarrollo de software, lo que facilita su implementación en proyectos de desarrollo de software. En el experimento mencionado se han usado APIs para que varios modelos de ChatGPT hablen entre ellos para atacar el problema.
En conjunto, estas tecnologías y capacidades hacen de ChatGPT 3.5 una herramienta poderosa no solo para tareas de procesamiento del lenguaje natural, sino también para aplicaciones más complejas como la gestión de proyectos de desarrollo de software, tal y como veremos en este artículo.
Metodología del experimento
Como comentamos al principio, el experimento fue diseñado y ejecutado por un equipo de investigadores de la Universidad de Brown con el objetivo de evaluar la capacidad de la inteligencia artificial para gestionar y operar una empresa de desarrollo de software. El diseño del experimento se centró en la creación de un entorno controlado que imitara las condiciones reales de una empresa de software. Se utilizaron métricas específicas para evaluar la eficiencia, la precisión y la rentabilidad del modelo ChatGPT.
Creación de la Empresa Virtual CHAT DEV
Para llevar a cabo el experimento, los investigadores crearon una empresa virtual de desarrollo de software llamada CHAT DEV. Esta empresa sirvió como un entorno de prueba para el modelo ChatGPT 3.5, que fue asignado al rol de CEO. CHAT DEVfue diseñada para simular una empresa real, con estructuras organizativas, roles y responsabilidades claramente definidos. Se asignaron funciones específicas a diferentes instancias de la IA, cada una encargada de una parte específica del proceso de desarrollo de software.
Instancias de ChatGPT comunicándose entre ellas
La idea de crear múltiples instancias de un modelo como ChatGPT 3.5 para que se comuniquen entre sí, cuenta con varios desafíos técnicos y logísticos que deben abordarse. Por un lado se necesitaría un sistema de mensajería o un bus de datos que permita el intercambio de información. Este sistema tendría que ser lo suficientemente robusto para manejar la comunicación en tiempo real y garantizar que los mensajes se entreguen de manera confiable.
Cada instancia de ChatGPT funcionaría de manera independiente y no tendría un estado compartido con las demás. Para coordinar acciones o tomar decisiones conjuntas, se necesitaría algún tipo de mecanismo de coordinación. Esto podría ser algo tan simple como un sistema de votación para tomar decisiones o algo más complejo como un algoritmo de consenso distribuido.
Ese es el motivo por el que no es posible realizar este experimento en casa con el ChatGPT con el que estamos habituados. En este caso se establecieron protocolos de comunicación que permitieron a las IA colaborar en tiempo real a través de un sistema de chat. Esto incluyó la discusión de decisiones técnicas, como la elección del lenguaje de programación, y la coordinación para la resolución de errores y vulnerabilidades.
Cada instancia de la IA tenía responsabilidades claramente definidas:
- CEO: encargado de la toma de decisiones estratégicas, como la elección del lenguaje de programación y la arquitectura del software.
- CTO: responsable de supervisar el proceso técnico, incluida la asignación de tareas específicas a los programadores y diseñadores.
- Programadores: encargados de la codificación real del software, siguiendo las directrices establecidas en la fase de diseño.
- Diseñadores: responsables de la interfaz de usuario y la experiencia del usuario, trabajando en estrecha colaboración con los programadores.
División en cuatro etapas
El proceso de desarrollo de software dentro de CHAT DEV se dividió en cuatro etapas principales para emular un enfoque de desarrollo de software en cascada. Estas etapas son:
- Diseño: en esta fase, se establecieron los requisitos del software y se creó un diseño arquitectónico. La IA, en su rol de CEO y CTO, tomó decisiones clave como la elección del lenguaje de programación y la arquitectura del software.
- Codificación: durante esta etapa, se llevó a cabo la implementación real del software. Las instancias de la IA asignadas a roles de programadores y diseñadores trabajaron en la codificación del software, siguiendo las directrices establecidas en la fase de diseño.
- Pruebas: una vez completada la codificación, el software pasó por una serie de pruebas automatizadas para identificar y corregir errores. La IA también evaluó el rendimiento y la seguridad del software.
- Documentación: en la etapa final, se crearon documentos técnicos y manuales de usuario para el software desarrollado. Esto incluyó información sobre la arquitectura del software, el código y las pruebas realizadas.
Cada etapa fue supervisada y gestionada por instancias de la IA asignadas a roles específicos, con una intervención humana mínima, pero existente. Esto permitió a los investigadores evaluar cómo la IA podía manejar un proceso de desarrollo de software completo, desde la concepción hasta la entrega.
División en sub-tareas atómicas
En el modelo de CHAT DEV, cada una de las cuatro etapas principales del desarrollo de software —diseño, codificación, pruebas y documentación— se descompone en sub-tareas atómicas. Estas sub-tareas son unidades de trabajo más pequeñas y manejables que pueden ser asignadas a agentes individuales. Por ejemplo, en la etapa de codificación, las sub-tareas podrían incluir la implementación de funciones específicas, la escritura de pruebas unitarias o la configuración de bases de datos.
Las ventajas de la División en Sub-Tareas Atómicas serían:
- Colaboración Efectiva: al dividir las etapas en sub-tareas atómicas, se facilita la colaboración entre los agentes. Cada agente puede concentrarse en una parte específica del proyecto, lo que permite una mayor especialización y eficiencia.
- Paralelización: las sub-tareas atómicas permiten que múltiples agentes trabajen en paralelo, acelerando el tiempo total de desarrollo.
- Gestión de Dependencias: al descomponer las tareas en unidades más pequeñas, es más fácil gestionar las dependencias entre ellas. Esto es crucial para evitar cuellos de botella en el desarrollo.
- Revisión y Calidad: las sub-tareas más pequeñas son más fáciles de revisar y probar, lo que contribuye a la calidad general del software.
- Flexibilidad: la división en sub-tareas permite una asignación de recursos más flexible. Si un agente termina su sub-tarea antes de lo previsto, puede ser reasignado rápidamente a otra sub-tarea que requiera atención.
- Trazabilidad: con sub-tareas atómicas, es más sencillo rastrear el progreso y las contribuciones de cada agente, lo que es útil tanto para la gestión del proyecto como para la resolución de problemas.
Desarrollo de software: caso de estudio
Creación del Juego de Mesa Gomoku
El primer proyecto al que se enfrentó la empresa virtual CHAT DEV fue el desarrollo de un juego de mesa llamado Gomoku, también conocido como ‘cinco en raya’. Este juego fue seleccionado por su complejidad moderada, lo que lo convierte en un buen caso de estudio para evaluar las capacidades de la IA en el desarrollo de software. La IA, en su rol de CEO y CTO, estableció los requisitos y directrices para el desarrollo del juego, incluidas las reglas, la interfaz de usuario y las funcionalidades.
Elección del Lenguaje de programación Python
Una de las primeras decisiones tomadas en el proyecto fue la elección del lenguaje de programación. Después de una serie de deliberaciones entre las instancias de la IA asignadas a los roles de CEO y CTO, se optó por Python debido a su «sencillez y legibilidad». Esta elección fue crucial, ya que el lenguaje de programación establece la base para todo el desarrollo posterior. Python es conocido por su versatilidad y su amplia gama de bibliotecas, lo que lo hace ideal para un proyecto de desarrollo rápido como este.
Proceso de codificación y pruebas
Una vez establecidos los requisitos y seleccionado el lenguaje de programación, se inició la fase de codificación. Las instancias de la IA asignadas a los roles de programadores y diseñadores comenzaron a trabajar en la implementación del juego. Se siguieron prácticas de desarrollo ágil, con iteraciones cortas y revisiones constantes del código.
Durante la fase de pruebas, el software pasó por una serie de pruebas automatizadas diseñadas para identificar y corregir errores y vulnerabilidades. Estas pruebas evaluaron varios aspectos del software, como la lógica del juego, la interfaz de usuario y la seguridad. La IA fue capaz de identificar problemas y corregirlos en tiempo real, lo que demuestra su capacidad para realizar tareas de control de calidad de manera efectiva.
Eficiencia y costos
Uno de los resultados más impactantes del experimento fue el tiempo de desarrollo extremadamente corto. La IA fue capaz de completar el desarrollo del juego de mesa Gomoku en apenas siete minutos. Este nivel de eficiencia es revolucionario y plantea preguntas sobre cómo la IA podría cambiar las expectativas en torno a los plazos de desarrollo en la industria del software.
Otro aspecto notable fue el coste económico del proyecto, que se estimó en alrededor de un euro. Este bajo costo es un factor crítico que podría hacer que la adopción de IA en el desarrollo de software sea una opción atractiva para empresas de todos los tamaños, desde startups hasta grandes corporaciones.
El experimento también reveló que el 86,66% de los proyectos desarrollados se ejecutaron sin errores. Este es un porcentaje significativamente alto, especialmente cuando se considera la mínima intervención humana en el proceso. Este nivel de precisión podría tener implicaciones importantes para la calidad del software y la reducción de los costos asociados con la corrección de errores en etapas posteriores del desarrollo.
Vulnerabilidades y seguridad
Es muy importante destacar que, además de desarrollar el software, la IA también fue capaz de identificar vulnerabilidades potenciales en el código y corregirlas antes de la entrega final. Esto es especialmente relevante en el contexto actual, donde la seguridad del software es una preocupación creciente.
La habilidad de la IA para identificar y corregir vulnerabilidades en tiempo real es una de sus capacidades más valiosas. Esto no solo mejora la seguridad del software sino que también reduce el tiempo y los recursos necesarios para las pruebas de seguridad, lo que a su vez contribuye a la eficiencia general del proceso de desarrollo.
Una de las limitaciones identificadas en el estudio es el fenómeno de las «alucinaciones de código», donde el modelo genera fragmentos de código que pueden parecer sintácticamente correctos pero son semánticamente erróneos o irrelevantes para la tarea en cuestión. Este es un problema significativo, ya que podría llevar a errores en el software desarrollado y requeriría intervención humana para corrección y verificación.
Para abordarlo, realizaron varias acciones:
- Revisión entre pares automatizada: CHAT DEV incorpora un sistema de revisión de código entre agentes para identificar y corregir posibles alucinaciones. Un agente genera un fragmento de código que es revisado por otro agente antes de ser integrado en el proyecto.
- Pruebas automatizadas: el sistema también utiliza pruebas automatizadas para validar la funcionalidad del código. Esto ayuda a detectar fragmentos de código que pueden haber sido «alucinados» y no cumplen con los requisitos funcionales.
- Retroalimentación continua: los agentes en CHAT DEV están diseñados para aprender de los errores y ajustar su comportamiento en futuras iteraciones. Esto es especialmente útil para minimizar la incidencia de alucinaciones de código a lo largo del tiempo.
- Supervisión humana mínima: aunque el objetivo es minimizar la intervención humana, CHAT DEV permite la supervisión humana para corregir o validar fragmentos de código que los agentes identifican como potencialmente problemáticos.
- Registros detallados: CHAT DEV mantiene registros detallados de todo el proceso de desarrollo, lo que facilita la identificación y corrección de alucinaciones de código en etapas posteriores si es necesario.
Limitaciones y desafíos
Errores y sesgos en los modelos lingüísticos
A pesar de los resultados prometedores, el experimento también reveló algunas limitaciones. Los modelos lingüísticos como ChatGPT 3.5 no están exentos de errores y sesgos, que podrían manifestarse en el código generado o en las decisiones tomadas durante el desarrollo del software. Estos sesgos podrían tener implicaciones éticas y de calidad que aún deben abordarse de manera efectiva.
Escalabilidad y aplicabilidad en el mundo real
El experimento se llevó a cabo en un entorno controlado, lo que plantea preguntas sobre la escalabilidad y la aplicabilidad de estos métodos en el mundo real. Las complejidades asociadas con proyectos de software a gran escala, como la gestión de equipos multidisciplinarios y la integración con sistemas existentes, aún no se han evaluado completamente.
Implicaciones para la ingeniería de software
La capacidad de la IA para gestionar eficazmente el desarrollo de software podría tener un impacto significativo en la ingeniería de software como disciplina. Podría llevar a la automatización de muchas tareas que actualmente requieren intervención humana, cambiando así el rol y las habilidades requeridas para los ingenieros de
La adopción de IA en el desarrollo de software podría llevar a una mayor eficiencia, menores costos y tiempos de desarrollo más cortos. Sin embargo, también podría resultar en una disminución de la demanda de ciertos roles tradicionales en la ingeniería de software, lo que a su vez podría tener implicaciones laborales significativas.
Referencias:
- Communicative Agents for Software Development arXiv:2307.07924 [cs.SE] https://arxiv.org/abs/2307.07924