In questo tutorial, dimostriamo come creare un sistema di AI collaborativa utilizzando il framework ChatDev ed esploriamo la sua struttura di comunicazione tra agenti basata sui ruoli, ChatChain. ChatDev utilizza agenti AI con ruoli assegnati per simulare un'azienda di software virtuale. Ogni agente intelligente collabora con gli altri attraverso una comunicazione strutturata, seguendo un workflow sequenziale basato sulle fasi del ciclo di vita dello sviluppo software.
Per potenziare questi agenti, abbiamo integrato application programming interface (API) di IBM watsonx.ai come backend del modello. Sfruttando l'integrazione di watsonx.ai con Hugging Face, abbiamo configurato il framework per utilizzare Llama-4-Maverick per generare una soluzione software semplice. Questo esempio serve come base per esplorare ChatChain e altri meccanismi di comunicazione tra agenti interni che guidano il comportamento e il processo decisionale degli agenti per l'intero workflow.
Al termine di questo tutorial, dovresti avere un'esperienza pratica nella configurazione e nell'esecuzione di ChatDev e una comprensione più chiara di come i protocolli di comunicazione tra agenti consentono una collaborazione multiagente efficace e affidabile.
AI collaborativa: sistemi di intelligenza artificiale progettati per lavorare a fianco degli esseri umani o di agenti AI, spesso utilizzando il deep learning o altre tecniche avanzate per promuovere la cooperazione, un processo decisionale comune e la risoluzione congiunta dei problemi al fine di raggiungere obiettivi comuni.
Collaborazione multiagente: più agenti autonomi che condividono informazioni e si coordinano per raggiungere un obiettivo comune. Questi agenti possono avere diversi livelli di conoscenza, funzionalità e prospettive e la loro collaborazione spesso implica la negoziazione, la pianificazione e un'azione coordinata.
Agenti che giocano un ruolo: agenti AI che simulano ruoli o soggetti specifici per interagire e collaborare in modo orientato agli obiettivi. Questi ruoli possono riflettere professioni o personaggi del mondo reale, consentendo interazioni più consapevoli del contesto e orientate allo scopo.
Protocolli di comunicazione tra agenti: standard o framework che definiscono il modo in cui gli agenti AI interagiscono tra loro scambiandosi messaggi con dati strutturati. Questi protocolli regolano il formato, la semantica e le regole di comunicazione per gli agenti che si coordinano all'interno di sistemi multiagente.
ChatDev è un'implementazione basata sui ruoli dell'AI collaborativa, in cui i singoli agenti assumono ruoli specializzati per lavorare con un obiettivo comune. Questo modello riflette i principi dell'intelligenza collettiva (essenzialmente, una collaborazione efficace) e rende ChatDev una risorsa preziosa per studiare e far progredire questo campo.
ChatDev è un framework multiagente open source sviluppato da OpenBMB, un'iniziativa basata sulla ricerca e incentrata sul progresso degli strumenti AI e dell'intelligenza artificiale generale (AGI). Il framework utilizza il processo di sviluppo software come ambito pratico per studiare gli agenti AI collaborativi. Ogni agente è basato su un modello linguistico di grandi dimensioni (LLM) e riceve prompt per assumere ruoli specifici, come quelli di CEO, CTO, progettatore, responsabile dei test e programmatore.1
A partire da un breve input descrittivo dell'utente, questi agenti collaborano per progettare, implementare e testare in modo iterativo un progetto software completo. Ogni agente è implementato come una classe Python che comunica in sequenza utilizzando prompt strutturati in linguaggio naturale. Questi prompt seguono modelli predefiniti che includono il ruolo dell'agente, le istruzioni specifiche dell'attività e il contesto pertinente delle interazioni precedenti. Questa strategia aiuta a garantire continuità e coerenza incorporando l'identità del ruolo e la memoria condivisa all'interno del prompt stesso.
Il team di agenti specializzati di ChatDev collabora per generare una soluzione software semplice a partire da un input di una riga fornito dall'utente, che descrive la sua idea.
Input dell'utente: "Crea un'app per la lista delle cose da fare" → Il CEO delega al CTO → Il CTO assegna l'attività allo sviluppatore → Lo sviluppatore scrive il codice → Il responsabile dei test convalida
Le interazioni tra agenti sono orchestrate da ChatChain, la logica di coordinamento personalizzata all'interno del framework ChatDev. La comunicazione tra gli agenti avviene attraverso un dialogo a più turni, o sistema di passaggio dei messaggi, in cui gli agenti si scambiano in sequenza dei messaggi JSON strutturati. Questi messaggi rappresentano gli output e gli aggiornamenti di contesto e fungono da buffer di memoria condivisa, consentendo agli agenti di basarsi gli uni sugli output degli altri nelle fasi di sviluppo.
Questa architettura consente una comunicazione coerente e una collaborazione sensibile al contesto combinando linguaggi naturali e di programmazione per completare il progetto dall'inizio alla fine. Il processo si basa su una comunicazione multiagente coordinata, con meccanismi interni che fungono da protocolli per orchestrare una comunicazione tra agenti AI efficace per completare ogni fase.
Gli utenti possono monitorare e revisionare il workflow agentico utilizzando lo strumento Visualizer di ChatDev, un'interfaccia web basata su Flask che supporta sia l'analisi post-esecuzione che il monitoraggio in tempo reale. Il Visualizer offre diverse modalità, come un Log Viewer per controllare le interazioni degli agenti in tempo reale, un Replay Viewer per visualizzare i registri delle conversazioni multiagente salvati e un ChatChain Viewer per esaminare il flusso di coordinamento delle attività. Questa interfaccia interattiva consente agli utenti di eseguire il debug della collaborazione multiagente, nonché di provarla e studiarla, attraverso un ambiente strutturato mediante un browser locale.
Questo tutorial utilizza una versione personalizzata di ChatDev adattata specificamente per l'API IBM watsonx.ai. Sebbene il ChatDev principale supporti più provider di modelli, questa versione è stata modificata utilizzando un approccio pragmatico di "vibecoding", il che la rende funzionale ma non testata in modo esaustivo in tutti gli scenari.
Gli adattamenti chiave includono:
L'integrazione dell'API IBM watsonx.ai in modo che sia conforme all'interfaccia LLM prevista da ChatDev.
L'adattamento dei modelli di prompt perché funzionino con i token e i requisiti di formattazione dell'API IBM watsonx.ai.
La modifica della logica di selezione del modello per supportare IBM watsonx.ai come opzione di backend del modello.
Questa implementazione dimostra come ChatDev può essere esteso per supportare provider di LLM alternativi. Altri provider di modelli (ad esempio, OpenAI e Ollama) non sono stati testati con questa versione personalizzata di ChatDev e richiederebbero aggiustamenti a livello di codice.
Come per molti workflow di AI generativa, l'output può variare tra le varie esecuzioni. Sebbene gli agenti producano generalmente codice e documentazione coerenti e ben strutturati, le applicazioni risultanti potrebbero richiedere un'azione di perfezionamento manuale per diventare completamente funzionanti. I fattori come la progettazione dei prompt, la complessità delle attività e la variabilità intrinseca delle risposte LLM contribuiscono a questa imprevedibilità.
Questo tutorial funge da introduzione pratica ai sistemi multiagente collaborativi, incentrandosi sul modo in cui gli agenti comunicano e si coordinano all'interno di ChatDev. Non è intesa come una soluzione pronta per la produzione, ma piuttosto come una base per l'apprendimento, la sperimentazione e l'esplorazione della collaborazione tra agenti basata su LLM. Siamo grati ai ricercatori dietro ChatDev per aver reso il loro lavoro open source, rendendo possibile questo tipo di esplorazione.
Sebbene ChatDev sia progettato per essere multipiattaforma, durante la configurazione o l'esecuzione gli utenti potrebbero riscontrare problemi specifici della piattaforma. Ad esempio, PowerShell su Windows potrebbe richiedere modifiche ai comandi della shell destinati ai sistemi basati su Unix. Anche le variazioni al livello del sistema operativo, delle versioni di Python e delle architetture della CPU possono influire sulle prestazioni o sul comportamento. Per assicurarsi una configurazione e un'usabilità ottimali, gli utenti devono consultare la documentazione ufficiale di ChatDev e le guide all'installazione per la risoluzione dei problemi e le istruzioni specifiche per l'ambiente.
Tenendo presente ciò, con la configurazione dell'ambiente per eseguire l'applicazione. Puoi seguire questi passaggi nel file markdown all'interno della cartella del progetto su GitHub oppure continuando qui.
Dalla directory dei progetti del tutorial, crea un ambiente virtuale usando Python 3.11:
Questo installa le dipendenze del progetto.
La variabile è impostata per la sessione del terminale corrente (chiudendo il terminale, verrà reimpostata).
Sebbene questo tutorial utilizzi IBM watsonx.ai come backend del modello, il framework sottostante di ChatDev è stato originariamente progettato per supportare più provider LLM, incluso un'OpenAI predefinito. Alcune parti della base di codice (ad esempio, la logica di selezione del modello o le interfacce condivise) fanno ancora riferimento alla variabile d'ambiente
Se lo desideri, puoi eseguire il Visualizer di ChatDev, una GUI basata su Flask che ti consente di ispezionare i log degli agenti in tempo reale e di esplorare il workflow di ChatChain o le finestre di dialogo degli agenti salvate in replay. Questo strumento è utile per il debug, il monitoraggio o lo studio delle interazioni tra agenti, ma non è necessario per eseguire il workflow multiagente principale di ChatDev.
Per avviare il Visualizer, devi prima installare Flask:
Quindi, esegui l'app:
Una volta in esecuzione, apri un browser e vai su:
Nota: questo tutorial utilizza una versione di ChatDev preconfigurata per utilizzare l'API IBM watsonx.ai come backend del modello. Non sono necessarie ulteriori impostazioni o modifiche alla configurazione del modello per il corretto funzionamento del tutorial. Sebbene sia personalizzabile, la modifica delle configurazioni LLM può dare luogo ad output incompleti, errati e differenti.
ChatDev è basato sul framework CAMEL, che gestisce i ruoli degli agenti, le attività e le interazioni con modelli linguistici. L'implementazione originale utilizza l'API OpenAI come backend del modello per interfacciarsi con i modelli ChatGPT come GPT-4 e utilizza GPT-3.5-turbo per impostazione predefinita. Il progetto open source è inoltre progettato per supportare più modelli di provider di LLM attraverso un'interfaccia di modello unificata.
Salta questo passaggio se intendi utilizzare la configurazione predefinita di IBM watsonx.ai. Per la sperimentazione, il tipo di modello, i parametri e i limiti dei token possono essere regolati per funzionare con l'API IBM watsonx.ai.
Per sperimentare diversi tipi di modello, aggiorna la voce
I parametri del modello possono essere configurati all'interno di
Il limite di token per il modello può essere configurato in
Questo passaggio esegue il workflow principale di ChatDev. Quando esegui questo script, gli agenti simulano un processo di sviluppo software collaborativo basato sul tuo input. Il codice generato, la documentazione e i relativi artefatti verranno salvati nella directory WareHouse del progetto. Puoi controllare i log o eseguire il replay delle conversazioni utilizzando il Visualizer.
Lo script accetta gli argomenti seguenti:
Script di esempio:
Nota: sebbene l'architettura di ChatDev sia estensibile, questa versione del tutorial funziona in modo affidabile solo con
Il prodotto software finale viene salvato nella cartella
Un output tipico potrebbe essere simile al seguente:
L'output può variare tra le varie esecuzioni per via della natura probabilistica degli strumenti di AI generativa.
Questa directory contiene un progetto software completo generato da agenti AI. Oltre al codice e alla documentazione dell'applicazione, troverai i file di configurazione che definiscono:
I ruoli degli agenti (RoleConfig.json)
Le fasi di sviluppo (PhaseConfig.json)
Il workflow degli agenti (ChatChainConfig.json)
Un log del dialogo che può essere replicato nel Visualizer di ChatDev
Per eseguire l'app, segui le istruzioni in
L'interoperabilità degli agenti si riferisce alla capacità degli agenti autonomi di comprendere, comunicare e collaborare in modo efficace utilizzando un protocollo o uno standard comune. Questa capacità è essenziale per scalare i sistemi di AI agentica a più attività, integrare set di dati di grandi dimensioni e risolvere problemi complessi in modo cooperativo.
I sistemi multiagente utilizzano spesso protocolli di comunicazione tra agenti (ACP), che forniscono standard per la comunicazione tra agenti utilizzando meccanismi di comunicazione interni quali i linguaggi di comunicazione tra agenti (ACL), come KQML o FIPA-ACL. Questi definiscono degli "atti comunicativi" standard (ad esempio, informare, richiedere, interrogare) per consentire un dialogo strutturato e il coordinamento in ambienti dinamici.
ChatDev, tuttavia, adotta un approccio diverso. Raggiunge l'interoperabilità degli agenti attraverso ChatChain, un meccanismo di comunicazione che struttura il workflow di coordinamento degli agenti. ChatChain gestisce un flusso di informazioni sincrono e a più turni tra gli agenti in tutte le fasi del processo di sviluppo software. Sebbene non si basi su ACL formali, ChatChain facilita uno scambio simile a un protocollo utilizzando convenzioni ottimizzate per LLM.
La comunicazione tra agenti di ChatDev si basa sui fattori seguenti:
Creazione di modelli di prompt: all'inizio di ogni fase, ciascun agente partecipante riceve un prompt strutturato con il proprio ruolo, l'attività corrente e la cronologia delle conversazioni pertinenti. ChatDev utilizza un inception prompting per incorporare queste informazioni direttamente nel prompt, contribuendo così a mantenere la coerenza e l'omogeneità degli obiettivi tra le diverse interazioni.
Formati dei messaggi strutturati: gli agenti comunicano tramite messaggi JSON strutturati che codificano gli output e gli aggiornamenti del contesto. Questo consente uno scambio e una tracciabilità dei dati coerenti per l'intero workflow.
Condizionamento del ruolo: ogni agente viene inizializzato con un prompt che rafforza il ruolo assegnato, comprese responsabilità, obiettivi e aspettative comportamentali, il che rappresenta una strategia chiave nella deallucinazione comunicativa.
Insieme, questi meccanismi formano un framework di comunicazione leggero e scalabile che consente a ChatDev di generare software in modo collaborativo da un singolo prompt dell'utente. Questo illustra come una collaborazione strutturata basata su LLM possa stimolare i tradizionali workflow multiagente.
ChatChain è il meccanismo di comunicazione principale di ChatDev, che orchestra la sequenza delle interazioni tra gli agenti durante tutto il workflow di sviluppo software. Struttura la collaborazione in un processo iterativo a catena composto da fasi distinte, ognuna con obiettivi e modelli di comunicazione specifici.
Durante ogni fase, ChatChain avvia un dialogo a doppio agente tra due agenti con ruoli specifici (ad esempio, CEO e CTO, programmatore e revisore). Uno in genere funge da istruttore, l'altro da assistente. Questi scambi strutturati e a più turni semplificano il processo decisionale collaborativo mantenendo al contempo la chiarezza con ruoli e responsabilità chiaramente definiti. I prompt per ciascuna fase includono le indicazioni relative all'attività, l'identità del ruolo e il contesto pertinente per guidare l'interazione.
Il workflow complessivo di ChatDev segue un modello a cascata modificato, una metodologia tradizionale di ingegneria software che suddivide le attività in tre fasi sequenziali: progettazione, codifica e test. Le fasi di codifica e test sono ulteriormente suddivise in sottoattività per riflettere un processo di sviluppo iterativo.
Per impostazione predefinita, ChatChain divide il workflow nei seguenti passaggi ordinati e automatizzati:
Analisi della domanda: definisce la struttura e i componenti chiave dell'applicazione.
Selezione del linguaggio: decidi quale linguaggio di programmazione utilizzare per creare ed eseguire il software.
Codifica: gli agenti scrivono il codice per sviluppare l'applicazione.
CodeCompleteAll: completa il codice includendo le funzioni o classi mancanti.
CodeReview: controlla e modifica il codice per garantirne la funzionalità.
Test: esegui il software e modifica il codice in base al report dei test.
EnvironmentDoc: documenta l'ambiente.
Manuale: documenta e scrivi un manuale per l'applicazione.
Ogni fase è definita da un oggetto di configurazione che specifica gli attributi che ne definiscono il comportamento e le proprietà. Ad esempio, l'attributo
Per facilitare una corretta comunicazione tra gli agenti, prima di ogni ciclo di sottoattività, ChatDev utilizza l'inception prompting come strategia di inizializzazione degli agenti. L'inception prompting è una tecnica di prompt engineering che può essere utilizzata per incorporare ruoli, obiettivi e responsabilità per una comunicazione tra agenti efficace.
Diamo un'occhiata a un esempio di come l'inception prompting guida due agenti ad avviare, sostenere e concludere una sottoattività.
Prima di ogni sottoattività, ogni agente riceve dei prompt come parametri che definiscono istruzioni, caratteristiche, responsabilità e obiettivi specifici del ruolo. Due esempi sono
Ecco i prompt sui ruoli di sistema basati sui ruoli degli agenti per l'istruttore e l'agente assistente nella fase LanguageChoose:
Questi due prompt inizializzano il comportamento desiderato degli agenti descrivendone il ruolo, le competenze e le responsabilità. La strategia di prompt guida anche il comportamento e le risposte dei rispettivi ruoli durante le interazioni fornendo istruzioni personalizzate su come completare l'attività assegnata.
La comunicazione tra agenti è guidata efficacemente da prompt per garantire che entrambi i ruoli abbiano aspettative chiare e possano collaborare efficacemente.
Per affrontare le potenziali allucinazioni di codifica (generazione di codice incompleta o errata) ChatDev utilizza un modello di comunicazione chiamato deallucinazione comunicativa. Questo modello è essenziale per strutturare la conversazione durante il processo di revisione del codice.
Il processo di revisione del codice prevede due fasi,
In questo esempio, l'agente per la revisione del codice rileva un errore nell'output dell'agente programmatore e lo comunica, fornendo anche un suggerimento per correggere il problema nel codice sorgente. L'agente programmatore corregge quindi l'output originale in base a tale feedback.
Ecco una parte dell'output dell'agente per la recensione del codice durante un'iterazione della fase
L'agente programmatore risponde con il codice corretto durante la successiva
Il revisore del codice e il programmatore continuano a perfezionare il codice per un massimo di 10 iterazioni o fino al raggiungimento del consenso dopo due fasi di modifica consecutive e identiche.
Il modello di deallucinazione della comunicazione contribuisce a garantire che il codice finale sia accurato, completo e in linea con i requisiti previsti attraverso un processo di perfezionamento iterativo, facilitando al contempo il completamento efficace delle sottoattività.
In questo tutorial, abbiamo esplorato come ChatDev abilita l'AI collaborativa simulando una società di software virtuale composta da agenti AI basati sui ruoli. Utilizzando l'API IBM watsonx.ai come backend del modello, ChatDev guida gli agenti nell'intero ciclo di vita dello sviluppo software utilizzando la comunicazione strutturata in linguaggi naturali e di programmazione.
Sebbene ChatDev non utilizzi un protocollo di comunicazione formale con gli agenti, ottiene l'interoperabilità degli agenti grazie alle capacità naturali del LLM con tecniche di comunicazione tra agenti come ChatChain, inception prompting e deallucinazione comunicativa. Questo evidenzia l'importanza di orchestrare una comunicazione tra agenti efficace per una collaborazione successo e un miglioramento della qualità dell'output.
Con strumenti di visualizzazione integrati per il monitoraggio e il replay delle interazioni tra agenti, ChatDev offre una potente piattaforma per studiare i workflow e le dinamiche dei teamwork basati su LLM. Dimostra il potenziale reale dell'AI collaborativa nella creazione di software e non solo.
Metti l'AI al servizio della tua azienda grazie all'esperienza leader di settore e alla gamma di soluzioni di IBM nel campo dell'AI.
Reinventa i flussi di lavoro e le operazioni critiche aggiungendo l'AI per massimizzare le esperienze, il processo decisionale in tempo reale e il valore di business.