Inteligencia artificial
ChatDev: Agentes Comunicativos para el Desarrollo de Software

La industria del desarrollo de software es un dominio que a menudo se basa en la consulta y la intuición, caracterizado por estrategias de toma de decisiones intrincadas. Además, el desarrollo, mantenimiento y operación de software requieren un enfoque disciplinado y metódico. Es común que los desarrolladores de software basen sus decisiones en la intuición en lugar de la consulta, dependiendo de la complejidad del problema. En un esfuerzo por mejorar la eficiencia de la ingeniería de software, incluida la efectividad del software y la reducción de los costos de desarrollo, los científicos están explorando el uso de marcos basados en el aprendizaje profundo para abordar diversas tareas dentro del proceso de desarrollo de software. Con los recientes avances y desarrollos en los sectores de aprendizaje profundo y IA, los desarrolladores están buscando formas de transformar los procesos y prácticas de desarrollo de software. Están haciendo esto utilizando diseños sofisticados implementados en diferentes etapas del proceso de desarrollo de software.
Hoy, vamos a discutir ChatDev, un enfoque innovador basado en un Modelo de Lenguaje Grande (LLM) que busca revolucionar el campo del desarrollo de software. Este paradigma busca eliminar la necesidad de modelos especializados durante cada fase del proceso de desarrollo. El marco de ChatDev aprovecha las capacidades de los marcos LLM, utilizando la comunicación por lenguaje natural para unificar y optimizar los procesos clave de desarrollo de software.
En este artículo, exploraremos ChatDev, una empresa virtual especializada en desarrollo de software. ChatDev adopta el modelo en cascada y divide meticulosamente el proceso de desarrollo de software en cuatro etapas primarias.
- Diseño.
- Codificación.
- Pruebas.
- Documentación.
Cada una de estas etapas despliega un equipo de agentes virtuales como programadores de código o testers que colaboran entre sí utilizando diálogos que resultan en un flujo de trabajo sin problemas. La cadena de chat funciona como un facilitador y divide cada etapa del proceso de desarrollo en subtareas atómicas, lo que permite roles duales, permitiendo propuestas y validación de soluciones utilizando comunicaciones conscientes del contexto que permiten a los desarrolladores resolver efectivamente las subtareas especificadas.

El análisis instrumental de ChatDev demuestra que no solo el marco de ChatDev es extremadamente efectivo para completar el proceso de desarrollo de software, sino que también es muy rentable, ya que completa todo el proceso de desarrollo de software en menos de un dólar. Además, el marco no solo identifica, sino que también alivia las vulnerabilidades potenciales, rectifica las alucinaciones potenciales, manteniendo al mismo tiempo una alta eficiencia y rentabilidad.
ChatDev: Una Introducción al Desarrollo de Software con LLM
Tradicionalmente, la industria del desarrollo de software es una que se basa en los fundamentos de un enfoque disciplinado y metódico, no solo para desarrollar aplicaciones, sino también para mantener y operarlas. Tradicionalmente, un proceso de desarrollo de software típico es un proceso muy intrincado, complejo y que requiere mucho tiempo, con ciclos de desarrollo largos, ya que hay múltiples roles involucrados en el proceso de desarrollo, incluida la coordinación dentro de la organización, la asignación de tareas, la escritura de código, las pruebas y, finalmente, la documentación.
En los últimos años, con la ayuda de LLM o Modelos de Lenguaje Grande, la comunidad de IA ha logrado hitos significativos en los campos de la visión por computadora y el procesamiento de lenguaje natural, y después de entrenar en paradigmas de “predicción de la próxima palabra”, los Modelos de Lenguaje Grande han demostrado su capacidad para devolver un rendimiento eficiente en una amplia gama de tareas descendentes como la traducción de máquina, la respuesta a preguntas y la generación de código.
Aunque los Modelos de Lenguaje Grande pueden escribir código para todo el software, tienen una gran desventaja: alucinaciones de código, que es bastante similar a las alucinaciones que enfrentan los marcos de procesamiento de lenguaje natural. Las alucinaciones de código pueden incluir problemas como errores no descubiertos, dependencias que faltan y implementaciones de funciones incompletas. Hay dos causas principales de alucinaciones de código.
- Falta de especificación de tarea: Cuando se genera el código de software en un solo paso, no definir los detalles de la tarea confunde a los LLM, ya que las tareas en el proceso de desarrollo de software como analizar los requisitos del usuario o seleccionar el lenguaje de programación preferido a menudo proporcionan una guía de pensamiento, algo que falta en las tareas de alto nivel manejadas por estos LLM.
- Falta de examen cruzado: Riesgos significativos llegan cuando no se realiza un examen cruzado, especialmente durante los procesos de toma de decisiones.
ChatDev busca resolver estos problemas y facilitar a los LLM la capacidad de crear aplicaciones de software de estado de la técnica y efectivas, creando una empresa virtual para el desarrollo de software que establece el modelo en cascada y divide meticulosamente el proceso de desarrollo de software en cuatro etapas primarias,
- Diseño.
- Codificación.
- Pruebas.
- Documentación.
Cada una de estas etapas despliega un equipo de agentes virtuales como programadores de código o testers que colaboran entre sí utilizando diálogos que resultan en un flujo de trabajo sin problemas. Además, ChatDev utiliza una cadena de chat que funciona como un facilitador y divide cada etapa del proceso de desarrollo en subtareas atómicas, lo que permite roles duales, permitiendo propuestas y validación de soluciones utilizando comunicaciones conscientes del contexto que permiten a los desarrolladores resolver efectivamente las subtareas especificadas. La cadena de chat consta de varios nodos donde cada nodo individual representa una subtarea específica, y estos dos roles participan en discusiones conscientes del contexto en varias vueltas para no solo proponer, sino también validar las soluciones.
En este enfoque, el marco de ChatDev primero analiza los requisitos de un cliente, genera ideas creativas, diseña e implementa sistemas de prototipo, identifica y aborda problemas potenciales, crea gráficos atractivos, explica la información de depuración y genera los manuales de usuario. Finalmente, el marco de ChatDev entrega el software al usuario junto con el código fuente, los manuales de usuario y las especificaciones de entorno de dependencia.
ChatDev: Arquitectura y Funcionamiento
Ahora que tenemos una breve introducción a ChatDev, veamos la arquitectura y el funcionamiento del marco de ChatDev, comenzando con la cadena de chat.
Cadena de Chat
Como mencionamos en la sección anterior, el marco de ChatDev utiliza un método en cascada para el desarrollo de software que divide el proceso de desarrollo de software en cuatro fases, incluyendo diseño, codificación, pruebas y documentación. Cada una de estas fases tiene un papel único en el proceso de desarrollo, y hay una necesidad de comunicación efectiva entre ellas, y hay desafíos potenciales al identificar a las personas con las que interactuar y determinar la secuencia de interacciones.
Para abordar este problema, el marco de ChatDev utiliza la cadena de chat, una arquitectura generalizada que divide cada fase en una conversación subatómica, con cada una de estas fases centrada en la interpretación de roles orientada a tareas que involucra roles duales. El resultado deseado para la conversación forma un componente vital para el software objetivo, y se logra como resultado de la colaboración y el intercambio de instrucciones entre los agentes que participan en el proceso de desarrollo. El paradigma de la cadena de chat para la resolución de tareas intermedias se ilustra en la imagen a continuación.

Para cada conversación individual, un instructor primero inicia las instrucciones y luego guía el diálogo hacia la finalización de la tarea, y mientras tanto, los asistentes siguen las instrucciones dictadas por el instructor, proporcionan soluciones ideales y participan en discusiones sobre la factibilidad de la solución. El instructor y el agente luego participan en diálogos en varias vueltas hasta que llegan a un consenso y consideran que la tarea se ha completado con éxito. La cadena de chat proporciona a los usuarios una visión transparente del proceso de desarrollo, arroja luz sobre el camino para la toma de decisiones y ofrece oportunidades para depurar los errores cuando surgen, lo que permite a los usuarios finales analizar y diagnosticar los errores, inspeccionar los resultados intermedios y intervenir en el proceso si es necesario. Al incorporar una cadena de chat, el marco de ChatDev puede centrarse en cada subtarea específica a una escala granular que no solo facilita la colaboración efectiva entre los agentes, sino que también resulta en la obtención rápida de los resultados requeridos.
Diseño
En la fase de diseño, el marco de ChatDev requiere una idea inicial como entrada del cliente humano, y hay tres roles predefinidos en esta etapa.
- CEO o Director Ejecutivo.
- CPO o Director de Producto.
- CTO o Director Técnico.
La cadena de chat luego entra en juego, dividiendo la fase de diseño en tareas de conversación subatómicas secuenciales que incluyen el lenguaje de programación (CTO y CEO) y la modalidad del software objetivo (CPO y CEO). La fase de diseño implica tres mecanismos clave: Asignación de Roles o Especialización de Roles, Flujo de Memoria y Auto-reflexión.
Asignación de Roles
Cada agente en el marco de ChatDev se le asigna un rol utilizando mensajes especiales o instrucciones especiales durante el proceso de interpretación de roles. A diferencia de otros modelos de lenguaje conversacional, el marco de ChatDev se limita a iniciar escenarios de interpretación de roles entre los agentes. Estas instrucciones se utilizan para asignar roles a los agentes antes de los diálogos.
Inicialmente, el instructor asume las responsabilidades del CEO y participa en la planificación interactiva, mientras que las responsabilidades del CPO las maneja el agente que ejecuta tareas y proporciona las respuestas requeridas. El marco utiliza ” instrucciones de inicio” para la especialización de roles, lo que permite a los agentes cumplir con sus roles de manera efectiva. Las instrucciones del asistente y del instructor consisten en detalles vitales sobre los roles y tareas designados, los criterios de terminación, los protocolos de comunicación y varias restricciones que apuntan a prevenir comportamientos no deseados como bucles infinitos, respuestas no informativas y redundancia de instrucciones.
Flujo de Memoria
El flujo de memoria es un mecanismo utilizado por el marco de ChatDev que mantiene un registro conversacional integral de los diálogos anteriores de un agente y asiste en el proceso de toma de decisiones que sigue de manera consciente de las declaraciones. El marco de ChatDev utiliza instrucciones para establecer los protocolos de comunicación necesarios. Por ejemplo, cuando las partes involucradas llegan a un consenso, un mensaje de finalización que satisface un requisito de formato específico como (<MODALIDAD>: Aplicación de Escritorio”). Para garantizar el cumplimiento del formato designado, el marco monitorea continuamente y finalmente permite que el diálogo actual llegue a una conclusión.
Auto-reflexión
Los desarrolladores del marco de ChatDev han observado situaciones en las que ambas partes involucradas habían llegado a un consenso mutuo, pero los protocolos de comunicación predefinidos no se activaron. Para abordar estos problemas, el marco de ChatDev introduce un mecanismo de auto-reflexión que ayuda en la recuperación y extracción de recuerdos. Para implementar el mecanismo de auto-reflexión, el marco de ChatDev inicia una nueva conversación al enlistar “seudo yo” como un nuevo preguntador. El “seudo yo” analiza los diálogos anteriores y los registros históricos, e informa al asistente actual, tras lo cual solicita un resumen de información concluyente y digna de acción, como se demuestra en la figura a continuación.

Con la ayuda del mecanismo de auto-ayuda, el asistente de ChatDev se ve animado a reflexionar y analizar las decisiones que ha propuesto.
Codificación
Hay tres roles predefinidos en la fase de codificación, a saber, el CTO, el programador y el diseñador de arte. Como de costumbre, el mecanismo de la cadena de chat divide la fase de codificación en tareas subatómicas individuales, como la generación de código (programador y CTO) o la creación de una GUI o interfaz de usuario gráfica (programador y diseñador). El CTO luego instruye al programador que utilice el formato de markdown para implementar un sistema de software, tras lo cual el diseñador de arte propone una GUI interactiva y amigable con el usuario que utiliza íconos gráficos para interactuar con los usuarios en lugar de confiar en comandos de texto tradicionales.
Administración de Código
El marco de ChatDev utiliza lenguajes de programación orientados a objetos como Python, Java y C++ para manejar sistemas de software complejos, porque la modularidad de estos lenguajes de programación permite el uso de objetos autocontenidos que no solo ayudan en la depuración, sino que también ayudan en el desarrollo colaborativo y también ayuda a eliminar redundancias al reutilizar los objetos a través del concepto de herencia.
Instrucciones de Pensamiento
Los métodos tradicionales de respuesta a preguntas a menudo llevan a información irrelevante o inexactitudes, especialmente al generar código, ya que proporcionar instrucciones ingenuas puede llevar a alucinaciones de LLM y puede convertirse en un problema desafiante. Para abordar este problema, el marco de ChatDev introduce el mecanismo de “instrucciones de pensamiento” que se inspira en las instrucciones de cadena de pensamiento. El mecanismo de “instrucciones de pensamiento” aborda explícitamente los pensamientos de resolución de problemas individuales incluidos en las instrucciones, similares a la resolución de tareas de manera secuencial y organizada.

Pruebas
Escribir un código libre de errores en el primer intento es un desafío no solo para los LLM, sino también para los programadores humanos, y en lugar de descartar completamente el código incorrecto, los programadores analizan su código para identificar los errores y rectificarlos. La fase de pruebas en el marco de ChatDev se divide en tres roles: programador, tester y revisor. El proceso de pruebas se divide aún más en dos tareas subatómicas secuenciales: Revisión por Pares o Depuración Estática (Revisor y Programador), y Pruebas del Sistema o Depuración Dinámica (Programador y Tester). La depuración estática o revisión por pares analiza el código fuente para identificar errores, mientras que la depuración dinámica o pruebas del sistema verifica la ejecución del software a través de varias pruebas que se realizan utilizando un intérprete por parte del programador. La depuración dinámica se centra principalmente en pruebas de caja negra para evaluar las aplicaciones.
Documentación
Después de que el marco de ChatDev ha completado las fases de diseño, codificación y pruebas, emplea a cuatro agentes, a saber, el CEO, el CTO, el CPO y el Programador, para generar la documentación para el proyecto de software. El marco de ChatDev utiliza LLM para aprovechar las instrucciones de disparo con ejemplos en contexto para generar los documentos. El CTO instruye al programador que proporcione las instrucciones para la configuración de las dependencias ambientales y cree un documento como “requisitos de dependencia.txt”. Al mismo tiempo, los requisitos y el diseño del sistema se comunican al CPO por el CEO para generar el manual de usuario del producto.
Resultados
Estadísticas de Software
Para analizar el rendimiento del marco de ChatDev, el equipo de desarrolladores realizó un análisis estadístico de las aplicaciones de software generadas por el marco en función de algunas métricas clave, incluyendo tokens consumidos, giros de diálogo totales, activos de imagen, archivos de software, actualizaciones de versión y algunas más, y los resultados se demuestran en la tabla a continuación.

Análisis de Duración
Para examinar el tiempo de producción de software de ChatDev para diferentes instrucciones de solicitud, los desarrolladores también realizaron un análisis de duración, y la diferencia en el tiempo de desarrollo para diferentes instrucciones refleja la claridad y complejidad variables de las tareas asignadas, y los resultados se demuestran en la figura a continuación.

Estudio de Caso
La figura siguiente demuestra a ChatDev desarrollando un juego de Cinco en Raya o Gomoku.

La figura más a la izquierda muestra el software básico creado por el marco sin utilizar una GUI. Como se puede ver claramente, la aplicación sin GUI ofrece una interactividad limitada, y los usuarios solo pueden jugar este juego a través del terminal de comandos. La siguiente figura muestra un juego más visualmente atractivo creado con el uso de GUI, ofrece una mejor experiencia de usuario y una interactividad mejorada para un entorno de juego atractivo que puede disfrutar mucho más los usuarios. El agente diseñador luego crea gráficos adicionales para mejorar aún más la usabilidad y la estética del juego sin afectar la funcionalidad del software. Sin embargo, si los usuarios humanos no están satisfechos con la imagen generada por el diseñador, pueden reemplazar las imágenes después de que el marco de ChatDev haya completado el software. La flexibilidad que ofrece el marco de ChatDev para reemplazar manualmente las imágenes permite a los usuarios personalizar las aplicaciones según sus preferencias para una interactividad y experiencia de usuario mejoradas sin afectar la funcionalidad del software de ninguna manera.

Pensamientos Finales
En este artículo, hemos hablado sobre ChatDev, un enfoque innovador basado en un LLM o Modelo de Lenguaje Grande que busca revolucionar el campo del desarrollo de software, eliminando la necesidad de modelos especializados durante cada fase del proceso de desarrollo. El marco de ChatDev busca aprovechar las capacidades de los marcos LLM, utilizando la comunicación por lenguaje natural para unificar y optimizar los procesos clave de desarrollo de software. El marco de ChatDev utiliza el mecanismo de la cadena de chat para dividir el proceso de desarrollo de software en tareas subatómicas secuenciales, lo que permite un enfoque granular y promueve los resultados deseados para cada tarea subatómica.












