toco ChatDev: Agentes Comunicativos para Desenvolvimento de Software - Unite.AI
Entre em contato

Inteligência artificial

ChatDev: Agentes Comunicativos para Desenvolvimento de Software

mm
Atualização do on
ChatDev: Desenvolvimento de software assistido por IA

A indústria de desenvolvimento de software é um domínio que muitas vezes depende tanto de consulta quanto de intuição, caracterizado por estratégias complexas de tomada de decisão. Além disso, o desenvolvimento, a manutenção e a operação de software requerem uma abordagem disciplinada e metódica. É comum que os desenvolvedores de software baseiem as decisões na intuição e não na consulta, dependendo da complexidade do problema. Num esforço para aumentar a eficiência da engenharia de software, incluindo a eficácia do software e a redução dos custos de desenvolvimento, os cientistas estão a explorar a utilização de estruturas baseadas em aprendizagem profunda para lidar com várias tarefas dentro do processo de desenvolvimento de software. Com os recentes desenvolvimentos e avanços nos setores de aprendizagem profunda e IA, os desenvolvedores estão buscando maneiras de transformar os processos e práticas de desenvolvimento de software. Eles estão fazendo isso usando designs sofisticados implementados em diferentes estágios do processo de desenvolvimento de software.

Hoje vamos discutir ChatDev, uma abordagem inovadora baseada em Large Language Model (LLM) que visa revolucionar o campo de desenvolvimento de software. Este paradigma busca eliminar a necessidade de modelos especializados durante cada fase do processo de desenvolvimento. A estrutura ChatDev aproveita os recursos das estruturas LLM, utilizando comunicação em linguagem natural para unificar e agilizar os principais processos de desenvolvimento de software.

Neste artigo, exploraremos a ChatDev, uma empresa virtual especializada em desenvolvimento de software. ChatDev adota o modelo cascata e divide meticulosamente o processo de desenvolvimento de software em quatro estágios principais.

  1. Projetando. 
  2. Codificação. 
  3. Testing. 
  4. Documentação. 

Cada um desses estágios implanta uma equipe de agentes virtuais, como programadores de código ou testadores, que colaboram entre si por meio de diálogos que resultam em um fluxo de trabalho contínuo. A cadeia de bate-papo funciona como um facilitador e divide cada estágio do processo de desenvolvimento em subtarefas atômicas, possibilitando assim funções duplas, permitindo propostas e validação de soluções usando comunicações sensíveis ao contexto que permitem aos desenvolvedores resolver efetivamente as subtarefas especificadas. 

ChatDev: Desenvolvimento de software assistido por IA

A análise instrumental do ChatDev demonstra que a estrutura ChatDev não só é extremamente eficaz na conclusão do processo de desenvolvimento de software, mas também é extremamente econômica, além de concluir todo o processo de desenvolvimento de software em pouco menos de um dólar. Além disso, o quadro não só identifica, mas também alivia potenciais vulnerabilidades, retifica potenciais alucinações, mantendo ao mesmo tempo uma elevada eficiência e boa relação custo-eficácia. 

ChatDev: uma introdução ao desenvolvimento de software baseado em LLM

Tradicionalmente, a indústria de desenvolvimento de software é construída sobre os fundamentos de uma abordagem disciplinada e metódica, não apenas para desenvolver os aplicativos, mas também para mantê-los e operá-los. Tradicionalmente falando, um processo típico de desenvolvimento de software é um processo meticuloso, altamente intrincado, complexo e demorado, com longos ciclos de desenvolvimento, pois há múltiplas funções envolvidas no processo de desenvolvimento, incluindo coordenação dentro da organização, alocação de tarefas, escrita de código, testes e, finalmente, documentação. 

Nos últimos anos, com a ajuda de LLM ou modelos de linguagem grande, a comunidade de IA alcançou marcos significativos nas áreas de visão computacional e processamento de linguagem natural e, após o treinamento em paradigmas de “previsão da próxima palavra”, os grandes modelos de linguagem demonstraram bem sua capacidade de retornar desempenho eficiente em uma ampla gama de tarefas posteriores. como tradução automática, resposta a perguntas e geração de código. 

Embora os modelos de linguagem grande possam escrever código para todo o software, eles têm uma grande desvantagem: alucinações de código, o que é bastante semelhante às alucinações enfrentadas pelas estruturas de processamento de linguagem natural. As alucinações de código podem incluir problemas como bugs não descobertos, dependências ausentes e implementações de funções incompletas. Existem duas causas principais de alucinações de código. 

  • Falta de especificação de tarefa: Ao gerar o código do software em uma única etapa, não definir a especificidade da tarefa confunde os LLMs, pois tarefas no processo de desenvolvimento de software, como analisar os requisitos do usuário ou selecionar a linguagem de programação preferida, muitas vezes fornecem pensamento orientado, algo que está faltando no alto tarefas de nível gerenciadas por esses LLMs. 
  • Falta de interrogatório : Riscos significativos surgem quando um interrogatório não é realizado, especialmente durante os processos de tomada de decisão. 

ChatDev visa resolver esses problemas e facilitar LLMs com o poder de criar aplicativos de software eficazes e de última geração, criando uma empresa virtual para desenvolvimento de software que estabelece o modelo em cascata e divide meticulosamente o processo de desenvolvimento de software em quatro principais estágios,

  1. Projetando. 
  2. Codificação. 
  3. Testing. 
  4. Documentação. 

Cada um desses estágios implanta uma equipe de agentes virtuais, como programadores de código ou testadores, que colaboram entre si por meio de diálogos que resultam em um fluxo de trabalho contínuo. Além disso, o ChatDev utiliza uma cadeia de chat que funciona como facilitador e divide cada etapa do processo de desenvolvimento em subtarefas atômicas, possibilitando assim dupla função, permitindo propostas e validação de soluções usando comunicações sensíveis ao contexto que permitem aos desenvolvedores efetivamente resolver as subtarefas especificadas. A cadeia de bate-papo consiste em vários nós, onde cada nó individual representa uma subtarefa específica, e essas duas funções se envolvem em discussões multivoltas com base no contexto para não apenas propor, mas também validar as soluções. 

Nesta abordagem, a estrutura ChatDev primeiro analisa os requisitos do cliente, gera ideias criativas, projeta e implementa protótipos de sistemas, identifica e aborda possíveis problemas, cria gráficos atraentes, explica as informações de depuração e gera os manuais do usuário. Finalmente, a estrutura ChatDev entrega o software ao usuário junto com o código-fonte, manuais do usuário e especificações do ambiente de dependência. 

ChatDev: Arquitetura e Funcionamento

Agora que temos uma breve introdução ao ChatDev, vamos dar uma olhada na arquitetura e no funcionamento da estrutura ChatDev, começando com a cadeia de bate-papo. 

Cadeia de bate-papo

Como mencionamos na seção anterior, a estrutura ChatDev usa um método em cascata para desenvolvimento de software que divide o processo de desenvolvimento de software em quatro fases, incluindo design, codificação, teste e documentação. Cada uma destas fases tem um papel único no processo de desenvolvimento, e existe uma necessidade de comunicação eficaz entre elas, e existem potenciais desafios enfrentados na identificação de indivíduos com quem interagir e na determinação da sequência de interacções. 

Para resolver esse problema, a estrutura ChatDev usa Chat Chain, uma arquitetura generalizada que divide cada fase em um bate-papo subatômico, com cada uma dessas fases focada na representação de papéis orientada a tarefas que envolve papéis duplos. A saída desejada para o chat constitui um componente vital para o software alvo e é alcançada como resultado da colaboração e troca de instruções entre os agentes participantes do processo de desenvolvimento. O paradigma da cadeia de bate-papo para resolução de tarefas intermediárias é ilustrado na imagem abaixo. 

Para cada bate-papo individual, um instrutor primeiro inicia as instruções e depois orienta o diálogo para a conclusão da tarefa e, enquanto isso, os assistentes seguem as instruções estabelecidas pelo instrutor, fornecem soluções ideais e se envolvem em discussões sobre a viabilidade da solução. O instrutor e o agente então se envolvem em diálogos de vários turnos até chegarem a um consenso e considerarem que a tarefa foi realizada com sucesso. A cadeia fornece aos usuários uma visão transparente do processo de desenvolvimento, ilumina o caminho para a tomada de decisões e oferece oportunidades para depurar os erros quando eles surgem, o que permite aos usuários finais analisar e diagnosticar os erros, inspecionar os resultados intermediários, e intervir no processo se julgar necessário. Ao incorporar uma cadeia de chat, a estrutura ChatDev é capaz de se concentrar em cada subtarefa específica em uma escala granular que não apenas facilita a colaboração eficaz entre os agentes, mas também resulta na rápida obtenção dos resultados necessários. 

Desenho

Na fase de design, a estrutura ChatDev requer uma ideia inicial como entrada do cliente humano, e há três funções predefinidas nesta fase. 

  1. CEO ou CEO. 
  2. CPO ou Diretor de Produto. 
  3. CTO ou Diretor Técnico. 

A cadeia de bate-papo então entra em ação dividindo a fase de design em tarefas sequenciais de bate-papo subatômico que incluem a linguagem de programação (CTO e CEO) e a modalidade do software alvo (CPO e CEO). A fase de design envolve três mecanismos principais: Atribuição de papéis ou especialização de papéis, fluxo de memória e autorreflexão. 

Atribuição de Função

Cada agente na estrutura Chat Dev recebe uma função usando mensagens especiais ou avisos especiais durante o processo de representação. Ao contrário de outros modelos de linguagem conversacional, a estrutura ChatDev restringe-se apenas a iniciar os cenários de role-playing entre os agentes. Esses prompts são usados ​​para atribuir funções aos agentes antes dos diálogos. 

Inicialmente, o instrutor assume as responsabilidades do CEO e se envolve no planejamento interativo, enquanto as responsabilidades do CPO são tratadas pelo agente que executa as tarefas e fornece as respostas necessárias. A estrutura usa “solicitação inicial”para especialização de funções que permite aos agentes cumprir suas funções de forma eficaz. Os prompts do assistente e do instrutor consistem em detalhes vitais sobre as funções e tarefas designadas, critérios de encerramento, protocolos de comunicação e diversas restrições que visam evitar comportamentos indesejáveis, como loops infinitos, respostas não informativas e redundância de instruções. 

Fluxo de memória

O fluxo de memória é um mecanismo usado pela estrutura ChatDev que mantém um registro conversacional abrangente dos diálogos anteriores de um agente e auxilia no processo de tomada de decisão que se segue de maneira consciente da expressão. A estrutura ChatDev usa prompts para estabelecer os protocolos de comunicação necessários. Por exemplo, quando as partes envolvidas chegam a um consenso, uma mensagem final que satisfaça um requisito de formatação específico como ( : Aplicativo de desktop”). Para garantir a conformidade com o formato designado, o quadro monitoriza continuamente e, finalmente, permite que o diálogo actual chegue a uma conclusão. 

Auto-reflexão

Os desenvolvedores da estrutura ChatDev observaram situações em que ambas as partes envolvidas chegaram a um consenso mútuo, mas os protocolos de comunicação predefinidos não foram acionados. Para resolver estas questões, o A estrutura ChatDev introduz um mecanismo de autorreflexão que auxilia na recuperação e extração de memórias. Para implementar o mecanismo de autorreflexão, a estrutura ChatDev inicia um bate-papo novo e fresco, recrutando um “pseudo eu” como um novo questionador. O “pseudo eu” analisa os diálogos anteriores e registros históricos e informa o assistente atual, após o que solicita um resumo de informações conclusivas e dignas de ação, conforme demonstrado na figura abaixo. 

Com a ajuda do mecanismo de autoajuda, o assistente ChatDev é incentivado a refletir e analisar as decisões que propôs. 

Codificação

Existem três funções predefinidas na fase de codificação: o CTO, o programador e o designer de arte. Como de costume, o mecanismo da cadeia de bate-papo divide a fase de codificação em tarefas subatômicas individuais, como gerar códigos (programador e CTO) ou criar uma GUI ou interface gráfica de usuário (programador e designer). O CTO então instrui o programador a usar o formato markdown para implementar um sistema de software, após o qual o designer de arte propõe uma GUI interativa e amigável que faz uso de ícones gráficos para interagir com os usuários, em vez de depender de comandos tradicionais baseados em texto. 

Gerenciamento de código

A estrutura ChatDev usa linguagens de programação orientadas a objetos como Python, Java e C++ para lidar com sistemas de software complexos porque a modularidade dessas linguagens de programação permite o uso de objetos independentes que não apenas auxiliam na solução de problemas, mas também no desenvolvimento colaborativo. , e também auxilia na remoção de redundâncias ao reaproveitar os objetos através do conceito de herança. 

Instruções de pensamento

Os métodos tradicionais de resposta a perguntas muitas vezes levam a informações irrelevantes ou imprecisões, especialmente ao gerar código, pois fornecer instruções ingênuas pode levar a alucinações de LLM e pode se tornar um problema desafiador. Para resolver esse problema, a estrutura ChatDev introduz o mecanismo de “instruções de pensamento” que se inspira em prompts de cadeia de pensamento. O mecanismo de “instruções de pensamento” aborda explicitamente os pensamentos individuais de resolução de problemas incluídos nas instruções, semelhante à resolução de tarefas de maneira sequencial e organizada. 

ensaio

Escrever um código livre de erros na primeira tentativa é um desafio não só para LLMs, mas também para programadores humanos, e em vez de descartar completamente o código incorreto, os programadores analisam seu código para identificar os erros e corrigi-los. A fase de teste na estrutura ChatDev é dividida em três funções: programador, testador e revisor. O processo de teste é dividido em duas tarefas subatômicas sequenciais: Revisão por pares ou depuração estática (Revisor e Programador), e Teste de sistema ou depuração dinâmica (Programador e Testador). A depuração estática ou revisão por pares analisa o código-fonte para identificar erros, enquanto a depuração dinâmica ou teste de sistema verifica a execução do software por meio de vários testes que são conduzidos usando um intérprete pelo programador. A depuração dinâmica concentra-se principalmente em testes de caixa preta para avaliar os aplicativos. 

Documentação

Depois que a estrutura ChatDev conclui as fases de design, codificação e teste, ela emprega quatro agentes, nomeadamente o CEO, CTO, CPO e Programador, para gerar a documentação para o projeto de software. A estrutura ChatDev usa LLMs para aproveitar prompts rápidos com exemplos no contexto para gerar os documentos. O CTO instrui o programador a fornecer as instruções para configuração das dependências ambientais e criar um documento como “requisitos de dependência.txt”. Simultaneamente, os requisitos e o design do sistema são comunicados ao CPO pelo CEO, para gerar o manual do usuário do produto. 

Resultados

Estatísticas de software

Para analisar o desempenho da estrutura ChatDev, a equipe de desenvolvedores executou uma análise estatística nos aplicativos de software gerados pela estrutura com base em algumas métricas principais, incluindo tokens consumidos, total de turnos de diálogo, ativos de imagem, arquivos de software, atualizações de versão e mais alguns, e os resultados são demonstrado na tabela abaixo. 

Análise de Duração

Para examinar o tempo de produção de software do ChatDev para diferentes prompts de solicitação, os desenvolvedores também realizaram uma análise de duração, e a diferença no tempo de desenvolvimento para diferentes prompts reflete a clareza e complexidade variadas das tarefas atribuídas, e os resultados são demonstrados na figura abaixo . 

Estudo de caso

A figura a seguir demonstra o ChatDev desenvolvendo um jogo Five in a Row ou Gomoku. 

A figura mais à esquerda demonstra o software básico criado pelo framework sem usar nenhuma GUI. Como pode ser visto claramente, o aplicativo sem nenhuma GUI oferece interatividade limitada, e os usuários podem jogar este jogo apenas através do terminal de comando. A próxima figura demonstra um jogo visualmente mais atraente criado com o uso de GUI, oferece uma melhor experiência ao usuário e uma interatividade aprimorada para um ambiente de jogo envolvente que pode ser aproveitado muito mais pelos usuários. O agente designer então cria gráficos adicionais para melhorar ainda mais a usabilidade e a estética do jogo sem afetar qualquer funcionalidade. Porém, se os usuários humanos não estiverem satisfeitos com a imagem gerada pelo designer, eles poderão substituir as imagens após a estrutura ChatDev concluir o software. A flexibilidade oferecida pela estrutura ChatDev para substituir manualmente as imagens permite que os usuários personalizem os aplicativos de acordo com suas preferências para uma interatividade e experiência do usuário aprimoradas, sem afetar de forma alguma a funcionalidade do software. 

Considerações Finais

Neste artigo, falamos sobre ChatDev, um LLM ou modelo de linguagem grande paradigma inovador baseado em software que visa revolucionar o campo de desenvolvimento de software, eliminando a necessidade de modelos especializados durante cada fase do processo de desenvolvimento. A estrutura ChatDev visa aproveitar as habilidades das estruturas LLM usando comunicação em linguagem natural para unificar e agilizar os principais processos de desenvolvimento de software. A estrutura ChatDev usa o mecanismo de cadeia de bate-papo para dividir o processo de desenvolvimento de software em tarefas subatômicas sequenciais, permitindo assim o foco granular e promovendo os resultados desejados para cada tarefa subatômica. 

"Engenheiro de profissão, escritor de coração". Kunal é um escritor técnico com profundo amor e compreensão de IA e ML, dedicado a simplificar conceitos complexos nesses campos por meio de sua documentação envolvente e informativa.