KI-Modelle und Plattformen
ChatDev: Kommunikative Agenten für Software-Entwicklung

Die Software-Entwicklungsbranche ist ein Bereich, der oft auf Konsultation und Intuition basiert und durch komplexe Entscheidungsstrategien gekennzeichnet ist. Darüber hinaus erfordert die Entwicklung, Wartung und Betrieb von Software eine disziplinierte und methodische Herangehensweise. Es ist üblich, dass Software-Entwickler Entscheidungen auf Intuition basieren, anstatt auf Konsultation, abhängig von der Komplexität des Problems. Im Rahmen der Verbesserung der Effizienz der Software-Entwicklung, einschließlich der Effektivität der Software und der Reduzierung der Entwicklungskosten, erforschen Wissenschaftler die Verwendung von Deep-Learning-Frameworks, um verschiedene Aufgaben innerhalb des Software-Entwicklungsprozesses zu bewältigen. Durch die jüngsten Entwicklungen und Fortschritte im Bereich Deep Learning und KI suchen Entwickler nach Möglichkeiten, die Software-Entwicklungsprozesse und -praktiken zu transformieren, indem sie sophisticated Designs auf verschiedenen Stufen des Software-Entwicklungsprozesses implementieren.
Heute werden wir über ChatDev sprechen, einem innovativen Ansatz, der auf Large Language Models (LLM) basiert und darauf abzielt, die Software-Entwicklung zu revolutionieren. Dieses Paradigma zielt darauf ab, die Notwendigkeit für spezialisierte Modelle während jeder Phase des Entwicklungsprozesses zu eliminieren. Das ChatDev-Framework nutzt die Fähigkeiten von LLM-Frameworks, indem es natürliche Sprachkommunikation verwendet, um wichtige Software-Entwicklungsprozesse zu vereinheitlichen und zu straffen.
In diesem Artikel werden wir ChatDev, ein virtuelles Unternehmen, das sich auf Software-Entwicklung spezialisiert hat, untersuchen. ChatDev verwendet das Wasserfall-Modell und teilt den Software-Entwicklungsprozess in vier primäre Phasen ein.
- Designing.
- Coding.
- Testing.
- Documentation.
Jede dieser Phasen setzt ein Team von virtuellen Agenten wie Code-Programmierern oder Testern ein, die miteinander kommunizieren, um eine nahtlose Arbeitsabfolge zu ermöglichen. Die Chat-Kette fungiert als Vermittler und teilt jede Phase des Entwicklungsprozesses in atomare Unter Aufgaben ein, wodurch eine doppelte Rolle ermöglicht wird, die es ermöglicht, Lösungen vorzuschlagen und zu validieren, indem kontextbewusste Kommunikationen verwendet werden, die es Entwicklern ermöglichen, die spezifizierten Unter Aufgaben effektiv zu lösen.

Die instrumentelle Analyse von ChatDev zeigt, dass das ChatDev-Framework nicht nur extrem effektiv bei der Vervollständigung des Software-Entwicklungsprozesses ist, sondern auch extrem kosteneffizient, da es den gesamten Software-Entwicklungsprozess für weniger als einen Dollar abschließt. Darüber hinaus identifiziert das Framework nicht nur potenzielle Schwachstellen, sondern beseitigt auch potenzielle Halluzinationen, während es gleichzeitig eine hohe Effizienz und Kosteneffizienz aufrechterhält.
ChatDev: Eine Einführung in LLM-gestützte Software-Entwicklung
Traditionell ist die Software-Entwicklungsbranche ein Bereich, der auf disziplinierten und methodischen Ansätzen basiert, nicht nur für die Entwicklung von Anwendungen, sondern auch für die Wartung und den Betrieb. Traditionell gesehen ist ein typischer Software-Entwicklungsprozess ein hochkomplexer und zeitaufwändiger Prozess mit langen Entwicklungszyklen, da multiple Rollen im Entwicklungsprozess involviert sind, einschließlich Koordination innerhalb der Organisation, Aufgabenverteilung, Code-Schreiben, Testen und schließlich Dokumentation.
In den letzten Jahren haben die Forschungen im Bereich der Large Language Models (LLM) und der KI bedeutende Meilensteine in den Bereichen Computer-Vision und natürliche Sprachverarbeitung erreicht, und nach der Ausbildung auf “next word prediction”-Paradigmen haben Large Language Models ihre Fähigkeit, effiziente Leistungen auf einer Vielzahl von Downstream-Aufgaben wie Maschinenerstellung, Fragebeantwortung und Code-Generierung, unter Beweis gestellt.
Obwohl Large Language Models Code für die gesamte Software schreiben können, haben sie einen großen Nachteil: Code-Halluzinationen, die denen ähneln, die in der natürlichen Sprachverarbeitung auftreten. Code-Halluzinationen können Probleme wie unentdeckte Fehler, fehlende Abhängigkeiten und unvollständige Funktionsimplementierungen umfassen. Es gibt zwei Hauptursachen für Code-Halluzinationen.
- Fehlende Aufgabenbeschreibung: Wenn der Software-Code in einem einzigen Schritt generiert wird, ohne die spezifischen Details der Aufgabe zu definieren, verwirrt dies die LLMs, da Aufgaben im Software-Entwicklungsprozess wie die Analyse von Benutzeranforderungen oder die Auswahl der bevorzugten Programmiersprache oft eine geleitete Denkweise erfordern, die in den von diesen LLMs behandelten Hochleistungs-Aufgaben fehlt.
- Fehlende Kreuzprüfung: Signifikante Risiken treten auf, wenn eine Kreuzprüfung nicht durchgeführt wird, insbesondere während der Entscheidungsprozesse.
ChatDev zielt darauf ab, diese Probleme zu lösen und LLMs mit der Fähigkeit auszustatten, State-of-the-Art- und effektive Software-Anwendungen zu erstellen, indem es ein virtuelles Unternehmen für Software-Entwicklung schafft, das das Wasserfall-Modell etabliert und den Software-Entwicklungsprozess in vier primäre Phasen unterteilt,
- Designing.
- Coding.
- Testing.
- Documentation.
Jede dieser Phasen setzt ein Team von virtuellen Agenten wie Code-Programmierern oder Testern ein, die miteinander kommunizieren, um eine nahtlose Arbeitsabfolge zu ermöglichen. Darüber hinaus nutzt ChatDev eine Chat-Kette, die als Vermittler fungiert und jede Phase des Entwicklungsprozesses in atomare Unter Aufgaben unterteilt, wodurch eine doppelte Rolle ermöglicht wird, die es ermöglicht, Lösungen vorzuschlagen und zu validieren, indem kontextbewusste Kommunikationen verwendet werden, die es Entwicklern ermöglichen, die spezifizierten Unter Aufgaben effektiv zu lösen.
In diesem Ansatz analysiert das ChatDev-Framework zunächst die Anforderungen des Kunden, generiert kreative Ideen, entwirft und implementiert Prototyp-Systeme, identifiziert und behebt potenzielle Probleme, erstellt ansprechende Grafiken, erklärt die Debug-Informationen und generiert die Benutzerhandbücher. Schließlich liefert das ChatDev-Framework die Software an den Benutzer, zusammen mit dem Quellcode, den Benutzerhandbüchern und den Abhängigkeits-Umgebungs-Spezifikationen.
ChatDev: Architektur und Funktionsweise
Jetzt, da wir eine kurze Einführung in ChatDev haben, lassen Sie uns einen Blick auf die Architektur und Funktionsweise des ChatDev-Frameworks werfen, beginnend mit der Chat-Kette.
Chat-Kette
Wie wir in der vorherigen Sektion erwähnt haben, verwendet das ChatDev-Framework ein Wasserfall-Modell für die Software-Entwicklung, das den Software-Entwicklungsprozess in vier Phasen unterteilt, einschließlich Designing, Coding, Testing und Dokumentation. Jede dieser Phasen hat eine einzigartige Rolle im Entwicklungsprozess, und es gibt eine Notwendigkeit für eine effektive Kommunikation zwischen ihnen, und es gibt potenzielle Herausforderungen, die bei der Identifizierung von Personen, die zu engagieren sind, und der Bestimmung der Sequenz der Interaktionen auftreten.
Um dieses Problem zu lösen, verwendet das ChatDev-Framework eine Chat-Kette, eine generalisierte Architektur, die jede Phase in eine subatomare Chat-Unteraufgabe unterteilt, wobei jede dieser Phasen eine task-orientierte Rollenspiel-Aufgabe umfasst, die eine doppelte Rolle beinhaltet. Die gewünschte Ausgabe für die Chat-Form bildet ein wichtiger Bestandteil für die Ziel-Software, und sie wird als Ergebnis der Zusammenarbeit und des Austauschs von Anweisungen zwischen den am Entwicklungsprozess beteiligten Agenten erreicht. Das Chat-Kette-Paradigma für die Lösung von Zwischen-Aufgaben wird in der folgenden Abbildung veranschaulicht.

Für jede einzelne Chat-Unteraufgabe initiiert ein Instructor zunächst die Anweisungen und leitet das Gespräch in Richtung der Vervollständigung der Aufgabe, und in der Zwischenzeit folgen die Assistenten den Anweisungen, die vom Instructor gegeben werden, liefern ideale Lösungen und engagieren sich in Diskussionen über die Machbarkeit der Lösung. Der Instructor und der Agent engagieren sich in multi-turn-Gesprächen, bis sie zu einer Einigung gelangen und die Aufgabe als erfolgreich abgeschlossen betrachten. Die Chat-Kette bietet den Benutzern eine transparente Sicht auf den Entwicklungsprozess, wirft Licht auf den Weg für die Entscheidungsfindung und bietet Gelegenheiten für die Fehlersuche, wenn diese auftreten, was es den Endbenutzern ermöglicht, die Fehler zu analysieren und zu diagnostizieren, Zwischenergebnisse zu überprüfen und in den Prozess einzugreifen, wenn dies erforderlich ist.Durch die Integration einer Chat-Kette kann das ChatDev-Framework auf jede spezifische Unter-Aufgabe im Detail eingehen, was nicht nur eine effektive Zusammenarbeit zwischen den Agenten ermöglicht, sondern auch zu einer schnellen Erreichung der erforderlichen Ausgaben führt.
Designing
In der Design-Phase benötigt das ChatDev-Framework eine anfängliche Idee als Eingabe von dem menschlichen Kunden, und es gibt drei vordefinierte Rollen in dieser Phase.
- CEO oder Chief Executive Officer.
- CPO oder Chief Product Officer.
- CTO oder Chief Technical Officer.
Die Chat-Kette kommt dann ins Spiel und teilt die Design-Phase in sequenzielle subatomare Chat-Aufgaben ein, die die Programmiersprache (CTO und CEO) und die Modalität der Ziel-Software (CPO und CEO) umfassen. Die Design-Phase umfasst drei wichtige Mechanismen: Rollen-Zuweisung oder Rollen-Spezialisierung, Memory-Stream und Selbst-Reflexion.
Rollen-Zuweisung
Jeder Agent im ChatDev-Framework wird mit einer Rolle ausgestattet, indem spezielle Nachrichten oder spezielle Prompts während des Rollenspiels verwendet werden. Im Gegensatz zu anderen konversationellen Sprachmodellen beschränkt sich das ChatDev-Framework auf die Initiierung von Rollenspiel-Szenarien zwischen den Agenten. Diese Prompts werden verwendet, um den Agenten vor den Gesprächen Rollen zuzuweisen.
Zunächst übernimmt der Instructor die Verantwortung des CEO und engagiert sich in interaktiver Planung, während die Verantwortung des CPO von dem Agenten übernommen wird, der Aufgaben ausführt und die erforderlichen Antworten liefert. Das Framework verwendet “Inception-Prompting” für die Rollen-Spezialisierung, die es den Agenten ermöglicht, ihre Rollen effektiv zu erfüllen. Die Prompts des Assistenten und des Instructors enthalten wichtige Details zu den zugewiesenen Rollen und Aufgaben, Beendigungs-Kriterien, Kommunikations-Protokollen und mehrere Einschränkungen, die darauf abzielen, unerwünschtes Verhalten wie endlose Schleifen, uninformative Antworten und Anweisungs-Redundanz zu vermeiden.
Memory-Stream
Der Memory-Stream ist ein Mechanismus, der vom ChatDev-Framework verwendet wird, um eine umfassende konversationale Aufzeichnung der vorherigen Gespräche eines Agents zu speichern und bei der Entscheidungsfindung zu unterstützen, die in einer utterance-aware Weise erfolgt. Das ChatDev-Framework verwendet Prompts, um die erforderlichen Kommunikations-Protokolle zu etablieren. Zum Beispiel, wenn die Parteien eine Einigung erzielen, wird eine abschließende Nachricht gesendet, die ein bestimmtes Format-Erfordernis wie (<MODALITY>: Desktop-Anwendung”) erfüllt. Um die Einhaltung des vorgeschriebenen Formats zu gewährleisten, überwacht das Framework kontinuierlich und ermöglicht schließlich, dass das aktuelle Gespräch zu einem Abschluss kommt.
Selbst-Reflexion
Die Entwickler des ChatDev-Frameworks haben Situationen beobachtet, in denen beide Parteien eine gegenseitige Einigung erzielt hatten, aber die vordefinierten Kommunikations-Protokolle nicht ausgelöst wurden. Um diese Probleme zu lösen, führt das ChatDev-Framework einen Selbst-Reflexions-Mechanismus ein, der die Wiederherstellung und Extraktion von Erinnerungen ermöglicht. Um den Selbst-Reflexions-Mechanismus zu implementieren, initiiert das ChatDev-Framework ein neues und frisches Gespräch, indem es “pseudo self” als neuen Fragesteller auflistet. Der “pseudo self” analysiert die vorherigen Gespräche und historischen Aufzeichnungen und informiert den aktuellen Assistenten, der dann eine Zusammenfassung der schlussfolgernden und handlungs-würdigen Informationen anfordert, wie in der folgenden Abbildung gezeigt.

Mit Hilfe des Selbst-Reflexions-Mechanismus wird der ChatDev-Assistent ermutigt, die Entscheidungen, die er vorgeschlagen hat, zu reflektieren und zu analysieren.
Coding
Es gibt drei vordefinierte Rollen in der Coding-Phase, nämlich der CTO, der Programmierer und der Grafik-Designer. Wie üblich teilt die Chat-Kette die Coding-Phase in individuelle subatomare Aufgaben ein, wie die Generierung von Code (Programmierer und CTO) oder die Erstellung einer GUI oder grafischen Benutzeroberfläche (Programmierer und Designer). Der CTO instruiert den Programmierer, die Anweisungen für die Konfiguration der Umgebungs-Abhängigkeiten zu verwenden und ein Dokument wie “Abhängigkeits-Anforderungen.txt” zu erstellen. Gleichzeitig kommuniziert der CPO die Anforderungen und das System-Design mit dem CEO, um das Benutzerhandbuch für das Produkt zu erstellen.
Code-Management
Das ChatDev-Framework verwendet objektorientierte Programmiersprachen wie Python, Java und C++, um komplexe Software-Systeme zu handhaben, da die Modularität dieser Programmiersprachen die Verwendung von selbstständigen Objekten ermöglicht, die nicht nur bei der Fehlersuche, sondern auch bei der kooperativen Entwicklung und der Entfernung von Redundanz durch die Wiederverwendung von Objekten durch das Konzept der Vererbung helfen.
Gedanken-Anweisungen
Traditionelle Methoden der Fragebeantwortung führen oft zu irrelevanten Informationen oder Ungenauigkeiten, insbesondere bei der Code-Generierung, da die Bereitstellung von naiven Anweisungen zu LLM-Halluzinationen führen kann und ein schwieriges Problem darstellen kann. Um dieses Problem zu lösen, führt das ChatDev-Framework den “Gedanken-Anweisungen”-Mechanismus ein, der von Chain-of-Thought-Prompts inspiriert ist. Der “Gedanken-Anweisungen”-Mechanismus adressiert explizit die individuellen Problemlösungsgedanken, die in den Anweisungen enthalten sind, ähnlich wie bei der Lösung von Aufgaben in einer sequenziellen und organisierten Weise.

Testing
Das Schreiben von fehlerfreiem Code beim ersten Versuch ist nicht nur für LLMs, sondern auch für menschliche Programmierer eine Herausforderung, und anstatt den fehlerhaften Code vollständig zu verwerfen, analysieren Programmierer ihren Code, um die Fehler zu identifizieren und zu korrigieren. Die Test-Phase im ChatDev-Framework ist in drei Rollen unterteilt: Programmierer, Tester und Reviewer. Der Test-Prozess ist weiter in zwei sequenzielle subatomare Aufgaben unterteilt: Peer-Review oder statische Fehlersuche (Reviewer und Programmierer) und System-Test oder dynamische Fehlersuche (Programmierer und Tester). Die statische Fehlersuche analysiert den Quell-Code, um Fehler zu identifizieren, während die dynamische Fehlersuche die Ausführung der Software durch verschiedene Tests überprüft, die von dem Programmierer mit einem Interpreter durchgeführt werden. Die dynamische Fehlersuche konzentriert sich hauptsächlich auf die Black-Box-Testung, um die Anwendungen zu bewerten.
Dokumentation
Nachdem das ChatDev-Framework die Design-, Coding- und Test-Phasen abgeschlossen hat, setzt es vier Agenten ein, nämlich den CEO, den CTO, den CPO und den Programmierer, um die Dokumentation für das Software-Projekt zu erstellen. Das ChatDev-Framework verwendet LLMs, um Few-Shot-Prompts mit Kontext-Beispielen zu nutzen, um die Dokumente zu generieren. Der CTO instruiert den Programmierer, die Anweisungen für die Konfiguration der Umgebungs-Abhängigkeiten zu liefern und ein Dokument wie “Abhängigkeits-Anforderungen.txt” zu erstellen. Gleichzeitig kommuniziert der CPO die Anforderungen und das System-Design mit dem CEO, um das Benutzerhandbuch für das Produkt zu erstellen.
Ergebnisse
Software-Statistiken
Um die Leistung des ChatDev-Frameworks zu analysieren, führte das Team der Entwickler eine statistische Analyse der von dem Framework generierten Software-Anwendungen durch, basierend auf einigen Schlüssel-Metriken, einschließlich verbrauchter Token, Gesamt-Dialog-Drehungen, Bild-Assets, Software-Dateien, Version-Updates und mehr, und die Ergebnisse sind in der folgenden Tabelle dargestellt.

Dauer-Analyse
Um die Produktionszeit von ChatDev für Software-Anwendungen für verschiedene Anfrage-Prompts zu untersuchen, führten die Entwickler auch eine Dauer-Analyse durch, und die Differenz in der Entwicklungszeit für verschiedene Prompts spiegelt die unterschiedliche Klarheit und Komplexität der zugewiesenen Aufgaben wider, und die Ergebnisse sind in der folgenden Abbildung dargestellt.

Fall-Studie
Die folgende Abbildung zeigt ChatDev bei der Entwicklung eines Five-in-a-Row- oder Gomoku-Spiels.

Die linke Abbildung zeigt die grundlegende Software, die von dem Framework ohne die Verwendung einer GUI erstellt wurde. Wie man sehen kann, bietet die Anwendung ohne GUI eine begrenzte Interaktivität, und Benutzer können dieses Spiel nur über die Kommando-Zeile spielen. Die nächste Abbildung zeigt ein visuell ansprechenderes Spiel, das mit der Verwendung einer GUI erstellt wurde, was eine bessere Benutzererfahrung und eine erhöhte Interaktivität für ein unterhaltsames Spiel-Umfeld bietet, das von den Benutzern viel mehr genossen werden kann. Der Designer-Agent erstellt dann zusätzliche Grafiken, um die Benutzerfreundlichkeit und Ästhetik des Spiel-Umfelds weiter zu verbessern, ohne die Funktionalität der Software zu beeinträchtigen. Allerdings können menschliche Benutzer die von dem Designer-Agenten generierten Bilder ersetzen, nachdem das ChatDev-Framework die Software fertiggestellt hat. Die Flexibilität, die das ChatDev-Framework bietet, um Bilder manuell zu ersetzen, ermöglicht es Benutzern, die Anwendungen nach ihren Vorlieben für eine verbesserte Interaktivität und Benutzererfahrung anzupassen, ohne die Funktionalität der Software zu beeinträchtigen.

Schlussgedanken
In diesem Artikel haben wir über ChatDev gesprochen, einem LLM-basierten innovativen Ansatz, der darauf abzielt, die Software-Entwicklung zu revolutionieren, indem er die Notwendigkeit für spezialisierte Modelle während jeder Phase des Entwicklungsprozesses eliminiert. Das ChatDev-Framework zielt darauf ab, die Fähigkeiten von LLM-Frameworks zu nutzen, indem es natürliche Sprachkommunikation verwendet, um wichtige Software-Entwicklungsprozesse zu vereinheitlichen und zu straffen. Das ChatDev-Framework verwendet die Chat-Kette, um den Software-Entwicklungsprozess in sequenzielle subatomare Aufgaben zu unterteilen, wodurch eine granulare Fokussierung und die Förderung der gewünschten Ausgaben für jede subatomare Aufgabe ermöglicht werden.












