Modelos y plataformas de IA

ChatDev: Agentes de Comunicación para el Desarrollo de Software

mm
Añade Unite.AI a tus fuentes preferidas en Google
ChatDev : AI Assisted Software Development

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, incluyendo 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 aprendizaje profundo para abordar diversas tareas dentro del proceso de desarrollo de software. Con los recientes avances 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 mediante el uso de diseños sofisticados implementados en diferentes etapas del proceso de desarrollo de software.

Hoy, vamos a discutir ChatDev, un enfoque innovador basado en el 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 trabajo de ChatDev aprovecha las capacidades de los marcos de 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 principales.

  1. Diseño.
  2. Codificación.
  3. Pruebas.
  4. 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 interrupciones. La cadena de chat funciona como un facilitador y divide cada etapa del proceso de desarrollo en tareas subató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 tareas subatómicas especificadas.

ChatDev: Desarrollo de Software Asistido por IA

El análisis instrumental de ChatDev demuestra que no solo el marco de trabajo de ChatDev es extremadamente efectivo en la finalización del proceso de desarrollo de software, sino que también es extremadamente rentable, ya que completa todo el proceso de desarrollo de software en apenas un dólar. Además, el marco de trabajo 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 complejo y que requiere mucho tiempo, con ciclos de desarrollo largos, ya que hay múltiples roles involucrados en el proceso de desarrollo, incluyendo 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 desventaja importante: 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 faltantes 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 la especificidad 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 un pensamiento guiado, algo que falta en las tareas de alto nivel manejadas por estos LLM.
  • Falta de examen cruzado: Se presentan riesgos significativos cuando no se realiza un examen cruzado, especialmente durante los procesos de toma de decisiones.

ChatDev busca resolver estos problemas y facilitar que los LLM creen aplicaciones de software de última generación 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 principales,

  1. Diseño.
  2. Codificación.
  3. Pruebas.
  4. 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 interrupciones. Además, ChatDev utiliza una cadena de chat que funciona como un facilitador y divide cada etapa del proceso de desarrollo en tareas subató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 tareas subatómicas especificadas. La cadena de chat consta de varios nodos, donde cada nodo individual representa una tarea subatómica 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 trabajo de ChatDev primero analiza los requisitos del 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 trabajo de ChatDev entrega el software al usuario junto con el código fuente, los manuales de usuario y las especificaciones del 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 trabajo de ChatDev, comenzando con la cadena de chat.

Cadena de Chat

Como mencionamos en la sección anterior, el marco de trabajo de ChatDev utiliza un método en cascada para el desarrollo de software que divide el proceso de desarrollo de software en cuatro fases: 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 para interactuar y determinar la secuencia de interacciones.

Para abordar este problema, el marco de trabajo 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. La salida deseada para la conversación es 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 dadas 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 la ruta 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 las salidas intermedias y intervenir en el proceso si es necesario. Al incorporar una cadena de chat, el marco de trabajo de ChatDev puede centrarse en cada tarea subatómica a escala granular, lo que no solo facilita la colaboración efectiva entre los agentes, sino que también conduce a la obtención rápida de las salidas requeridas.

Diseño

En la fase de diseño, el marco de trabajo de ChatDev requiere una idea inicial como entrada del cliente humano, y hay tres roles predefinidos en esta etapa.

  1. CEO o Director Ejecutivo.
  2. CPO o Director de Producto.
  3. 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 autorreflexión.

Asignación de Roles

Cada agente en el marco de trabajo 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 trabajo 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 son manejadas por el agente que ejecuta tareas y proporciona las respuestas requeridas. El marco de trabajo utiliza la “instrucción 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, criterios de terminación, 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 trabajo 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 del habla. El marco de trabajo de ChatDev utiliza instrucciones para establecer los protocolos de comunicación requeridos. 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 de trabajo monitorea continuamente y finalmente permite que el diálogo actual llegue a una conclusión.

Autorreflexión

Los desarrolladores del marco de trabajo 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 trabajo de ChatDev introduce un mecanismo de autorreflexión que ayuda en la recuperación y extracción de memorias. Para implementar el mecanismo de autorreflexión, el marco de trabajo de ChatDev inicia una nueva conversación fresca enlistando “seudo yo” como una nueva pregunta. El “seudo yo” analiza los diálogos y registros históricos anteriores y informa al asistente actual, y luego 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 autorreflexión, 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: el CTO, el programador y el diseñador de arte. Como de costumbre, 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 para que utilice el formato de markdown para implementar un sistema de software, y el diseñador de arte propone una GUI interactiva y amigable para el usuario que utiliza iconos gráficos para interactuar con los usuarios en lugar de depender de comandos de texto tradicionales.

Administración de Código

El marco de trabajo 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 también en el desarrollo colaborativo, y también ayuda a eliminar redundancias reutilizando los objetos a través del concepto de herencia.

Instrucciones de Pensamiento

Los métodos tradicionales de respuesta a preguntas a menudo conducen a información irrelevante o inexacta, especialmente al generar código, ya que proporcionar instrucciones ingenuas puede conducir a alucinaciones de LLM y puede convertirse en un problema desafiante. Para abordar este problema, el marco de trabajo de ChatDev introduce el mecanismo de “instrucciones de pensamiento” que se inspira en las instrucciones de pensamiento en cadena. El mecanismo de “instrucciones de pensamiento” aborda explícitamente los pensamientos individuales de resolución de problemas incluidos en las instrucciones, similar 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 trabajo 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 trabajo de ChatDev ha completado las fases de diseño, codificación y pruebas, emplea cuatro agentes: el CEO, el CTO, el CPO y el programador, para generar la documentación del proyecto de software. El marco de trabajo de ChatDev utiliza LLM para aprovechar las instrucciones de disparo con ejemplos en contexto para generar los documentos. El CTO instruye al programador para 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 parte del CEO para generar el manual de usuario del producto.

Resultados

Estadísticas de Software

Para analizar el rendimiento del marco de trabajo de ChatDev, el equipo de desarrolladores realizó un análisis estadístico de las aplicaciones de software generadas por el marco de trabajo en función de varios indicadores clave, incluyendo tokens consumidos, giros de diálogo totales, activos de imagen, archivos de software, actualizaciones de versión y algunos más, y los resultados se muestran 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 muestran en la figura a continuación.

Caso de Estudio

La siguiente figura muestra a ChatDev desarrollando un juego de Cinco en Raya o Gomoku.

La figura de la izquierda muestra el software básico creado por el marco de trabajo 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 atractivo creado con el uso de GUI, que ofrece una mejor experiencia del usuario y una mayor interactividad para un entorno de juego atractivo que puede disfrutar 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. 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 trabajo de ChatDev haya completado el software. La flexibilidad que ofrece el marco de trabajo de ChatDev para reemplazar manualmente las imágenes permite a los usuarios personalizar las aplicaciones según sus preferencias para una mayor interactividad y experiencia del usuario sin afectar la funcionalidad del software de ninguna manera.

Pensamientos Finales

En este artículo, hemos hablado sobre ChatDev, un paradigma innovador basado en LLM que busca revolucionar el campo del desarrollo de software al eliminar la necesidad de modelos especializados durante cada fase del proceso de desarrollo. El marco de trabajo de ChatDev busca aprovechar las capacidades de los marcos de LLM utilizando la comunicación por lenguaje natural para unificar y optimizar los procesos clave de desarrollo de software. El marco de trabajo de ChatDev utiliza 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 las salidas deseadas para cada tarea subatómica.

Un ingeniero por profesión, un escritor por corazón. Kunal es un escritor técnico con un profundo amor y comprensión de la IA y el ML, dedicado a simplificar conceptos complejos en estos campos a través de su documentación atractiva e informativa.