Con Large Language Models (LLM) come ChatGPT, OpenAI ha registrato un notevole aumento nell’adozione da parte di aziende e utenti, attualmente generando un incredibile flusso di entrate mensili pari a circa 80 milioni di dollari. Secondo un recente rapporto di The Information, l’azienda con sede a San Francisco è ben avviata verso l’obiettivo di raggiungere un fatturato annuo di 1 miliardo di dollari.
Nel nostro precedente incontro, abbiamo esplorato AutoGPT e GPT-Engineering, i primi agenti AI basati su LLM open source tradizionali progettati per automatizzare complesse attività. Nonostante le promesse, questi sistemi hanno affrontato problemi come risultati inconsistenti, performance limitate e limitazioni nella gestione di richieste complesse. Sebbene abbiano dimostrato competenza nella generazione di codice, spesso le loro capacità si sono fermate qui, mancando di funzionalità critiche di gestione dei progetti come la generazione di PRD, la creazione di progettazioni tecniche e la prototipazione delle interfacce API.
Qui entra in gioco MetaGPT: un sistema multi-agente che utilizza i modelli Large Language di Sirui Hong per combinare procedure operative standardizzate (SOP) con sistemi multi-agente basati su LLM. Questo paradigma emergente supera i limiti esistenti dei LLM promuovendo una collaborazione efficace e la suddivisione delle attività in applicazioni complesse del mondo reale.
La bellezza di MetaGPT risiede nella sua struttura. Sfrutta le tecniche di metaprogrammazione per manipolare, analizzare e trasformare il codice in tempo reale. Lo scopo è creare un’architettura software agile e flessibile, in grado di adattarsi a compiti di programmazione dinamica.
Le SOP fungono da meta-funzione in questo contesto, coordinando gli agenti per generare automaticamente il codice in base a input definiti. In termini semplici, è come se avessi trasformato un team altamente coordinato di ingegneri del software in un sistema software adattabile e intelligente.
L’architettura di MetaGPT è divisa in due livelli: il livello dei componenti fondamentali e il livello di collaborazione.
Livello dei componenti fondamentali: Questo livello si concentra sulle operazioni dei singoli agenti e facilita lo scambio di informazioni a livello di sistema. Include elementi come l’ambiente, la memoria, i ruoli, le azioni e gli strumenti. L’ambiente crea spazi di lavoro condivisi e percorsi di comunicazione, mentre la memoria funge da archivio storico dei dati. I ruoli racchiudono competenze specifiche del dominio, le azioni eseguono attività modulari e gli strumenti forniscono servizi comuni. Questo livello svolge il ruolo di un sistema operativo per gli agenti. Per ulteriori dettagli su come lavorano insieme, puoi fare riferimento all’articolo “Oltre ChatGPT: Gli Agenti AI aprono le porte a un nuovo mondo di lavoratori”.
Livello di collaborazione: Costruito sui componenti fondamentali, questo livello gestisce e ottimizza gli sforzi collaborativi dei singoli agenti. Introduce due meccanismi: la condivisione della conoscenza e l’incapsulamento dei flussi di lavoro. La condivisione della conoscenza funge da collante collaborativo che collega gli agenti, consentendo loro di archiviare, recuperare e condividere informazioni a vari livelli, riducendo la ridondanza e migliorando l’efficienza operativa. L’incapsulamento dei flussi di lavoro coinvolge SOP che suddividono le attività in componenti gestibili, assegnando queste attività secondarie agli agenti e allineando le loro performance con risultati standardizzati.
MetaGPT utilizza anche “Definizioni di ruolo” per inizializzare vari agenti specializzati, come product manager, architetti, ecc., come discusso in precedenza. Questi ruoli sono caratterizzati da attributi chiave come nome, profilo, obiettivo, vincoli e descrizione.
Inoltre, gli “Agenti di ancoraggio” forniscono a questi agenti una guida specifica per il ruolo. Ad esempio, il ruolo di un Product Manager potrebbe essere inizializzato con il vincolo di “creare in modo efficiente un prodotto di successo”. Gli agenti di ancoraggio garantiscono che i comportamenti degli agenti siano allineati agli obiettivi generali, ottimizzando così le performance.
MetaGPT può osservare, pensare, riflettere e agire. Opera attraverso funzioni comportamentali specifiche come _think(), _observe(), _publish_message(), ecc. Questo modello cognitivo consente agli agenti di essere studenti attivi in grado di adattarsi ed evolversi.
- Osservazione: Gli agenti scansionano il loro ambiente e incorporano i dati chiave nella loro memoria.
- Pensiero e riflessione: Attraverso la funzione _think(), i ruoli ponderano prima di intraprendere azioni.
- Messaggi broadcast: Gli agenti utilizzano _publish_message() per condividere gli stati delle attività correnti e i registri delle azioni correlate.
- Valutazione e azione sulla conoscenza: Gli agenti valutano i messaggi in arrivo e aggiornano i loro repository interni prima di decidere la prossima azione.
- Gestione dello stato: Con funzionalità come il blocco delle attività e l’aggiornamento dello stato, i ruoli possono elaborare più azioni in sequenza senza interruzioni, rispecchiando la collaborazione umana nel mondo reale.
La revisione del codice è una parte cruciale del ciclo di sviluppo del software, ma è spesso assente in molti framework diffusi. Sia MetaGPT che AgentVerse supportano la revisione del codice, ma MetaGPT va oltre incorporando l’esecuzione della precompilazione, che contribuisce a individuare tempestivamente gli errori e migliora la qualità del codice. Date le iterazioni frequenti nella codifica, questa funzionalità non è un semplice add-on, ma un requisito per qualsiasi framework di sviluppo maturo.
Esperimenti quantitativi condotti su vari compiti hanno dimostrato che MetaGPT supera le sue controparti in quasi tutti gli scenari. La misura Pass@1 riflette la capacità del framework di generare codice accurato in una singola iterazione. Questa metrica è più realistica e indica un minor bisogno di debug e una maggiore efficienza, con impatti diretti sui cicli e sui costi di sviluppo. In confronto ad altri strumenti avanzati di generazione di codice come CodeX, CodeT e persino GPT-4, MetaGPT eccelle. Il framework raggiunge un tasso Pass@1 compreso tra l’81,7% e l’82,3% sui benchmark HumanEval e MBPP.
Inoltre, il framework utilizza meno token e risorse computazionali, ottenendo risultati di successo a una frazione dei tradizionali costi di ingegneria del software. I dati indicano un costo medio di soli 1,09 dollari per progetto con MetaGPT, che è solo una frazione di quanto un sviluppatore addebiterebbe per lo stesso lavoro.
Per installare localmente MetaGPT sul tuo sistema, segui questi passaggi:
- Controlla e installa NPM: Assicurati di avere NPM installato sul tuo sistema. In caso contrario, dovrai installare Node.js. Per verificare se hai npm, esegui questo comando nel tuo terminale: npm –version. Se vedi un numero di versione, sei a posto.
- Per installare mermaid-js, una dipendenza di MetaGPT, esegui: sudo npm install -g @mermaid-js/mermaid-cli.
- Verifica la versione di Python: Accertati di avere Python 3.9 o successivo. Per verificare la tua versione di Python, apri il terminale e digita: python –version. Se non sei aggiornato, scarica l’ultima versione dal sito ufficiale di Python.
- Clona il repository MetaGPT utilizzando il comando: git clone https://github.com/geekan/metagpt. Assicurati di avere Git installato nel tuo sistema.
- Passa alla directory MetaGPT utilizzando il comando: cd metagpt.
- Esegui lo script di installazione Python per installare MetaGPT con il comando: python setup.py install.
- Crea un’applicazione eseguendo: python startup.py “ENTER-PROMPT” –code_review True.
Nota:
- Il tuo nuovo progetto dovrebbe ora essere nella workspace/directory.
- L’opzione –code_review True permette al modello GPT di eseguire operazioni aggiuntive per garantire l’accuratezza del codice, ma tenete presente che può comportare costi aggiuntivi.
Per ulteriori dettagli e versioni specifiche, visita la pagina delle versioni ufficiali di MetaGPT su GitHub: MetaGPT Releases.
Per coloro che preferiscono la containerizzazione, Docker semplifica il processo:
- Estrai l’immagine Docker: Scarica l’immagine ufficiale di MetaGPT e prepara il file di configurazione con i seguenti comandi:bashCopy code
docker pull metagpt/metagpt:v0.3.1 mkdir -p /opt/metagpt/{config,workspace} docker run --rm metagpt/metagpt:v0.3.1 cat /app/metagpt/config/config.yaml > /opt/metagpt/config/key.yaml vim /opt/metagpt/config/key.yaml
- Esegui il contenitore MetaGPT con il seguente comando:bashCopy code
docker run --rm --privileged \ -v /opt/metagpt/config/key.yaml:/app/metagpt/config/key.yaml \ -v /opt/metagpt/workspace:/app/metagpt/workspace \ metagpt/metagpt:v0.3.1 \ python startup.py "Create a simple and interactive CLI based rock, paper and scissors game" --code_review True
Dopo la configurazione iniziale, dovrai integrare MetaGPT con la tua chiave API OpenAI seguendo questi passaggi:
- Individua o genera la tua chiave OpenAI: Trova la chiave nella dashboard OpenAI nelle impostazioni API.
- Imposta la chiave API: Puoi inserire la chiave API in config/key.yaml o impostarla come variabile di ambiente. L’ordine di precedenza è env > config/config.yaml > config/key.yaml. Per impostare la chiave, apri config/key.yaml e sostituisci il testo segnaposto con la tua chiave OpenAI: OPENAI_API_KEY: “sk-…”.
Ricorda sempre di proteggere la tua chiave API OpenAI e di non condividerla con persone non autorizzate.
Hai anche menzionato l’obiettivo di sviluppare un gioco “sasso, carta e forbici” basato su CLI, e MetaGPT ha dimostrato di avere successo nell’attività. Ha generato un documento di progettazione del sistema in Markdown, un linguaggio di markup leggero ampiamente utilizzato. Questo file Markdown includeva diagrammi UML per offrire una visione dettagliata dell’architettura del progetto. Inoltre, ha dettagliato le specifiche API con metodi HTTP, endpoint, oggetti di richiesta/risposta e codici di stato.
Il diagramma delle classi ha fornito una descrizione approfondita degli attributi e dei metodi della classe Game, rendendo l’architettura facilmente comprensibile. Ha anche visualizzato il flusso delle chiamate del programma, traducendo efficacemente le idee astratte in passi concreti.
Questo non solo ha ridotto notevolmente il carico di lavoro manuale nella pianificazione, ma ha anche accelerato il processo decisionale, garantendo un’agile pipeline di sviluppo. Con MetaGPT, non solo automatizzi la generazione del codice, ma anche la pianificazione intelligente dei progetti, fornendo un vantaggio competitivo nello sviluppo rapido delle applicazioni.
In conclusione, MetaGPT sta ridefinendo il panorama dell’intelligenza artificiale generativa e dello sviluppo software, offrendo una combinazione di automazione intelligente e gestione agile dei progetti. Supera le capacità di ChatGPT, AutoGPT e dei modelli LangChain tradizionali, eccellendo nella suddivisione delle attività, nella generazione efficiente del codice e nella pianificazione dei progetti. Per saperne di più su questo innovativo strumento, continua la tua esplorazione.