SalesForce AI introduce CodeChain un innovativo framework di intelligenza artificiale per la generazione di codice modulare attraverso una catena di auto-revisioni con sottomoduli rappresentativi.

CodeChain l'innovativo framework di intelligenza artificiale di SalesForce AI per la generazione di codice modulare attraverso una catena di auto-revisioni con sottomoduli rappresentativi.

Un obiettivo principale nello studio dell’Intelligenza Artificiale è lo sviluppo di sistemi di intelligenza artificiale in grado di fornire programmi informatici utili per affrontare problematiche complesse. Negli ultimi anni sono stati compiuti notevoli progressi in questa direzione, soprattutto grazie ai notevoli successi dei modelli di linguaggio di grande scala preaddestrati (LLMs) massicciamente preaddestrati. Questi modelli sono stati creati inizialmente per la comprensione del linguaggio naturale, ma ora sono in grado anche di generare e comprendere codice e testo. Un notevole progresso è stato compiuto nella produzione di codice a partire da descrizioni di problemi espressi in linguaggio naturale grazie a questo sviluppo.

LLMs hanno già dimostrato di essere in grado di gestire semplici compiti di programmazione, come dimostrato dai loro risultati in benchmark come MBPP e HumanEval. Tuttavia, questi modelli incontrano difficoltà significative quando cercano di risolvere compiti di programmazione più difficili e competitivi. Il loro modo di fornire soluzioni di codice come blocchi monolitici anziché decomporli in sotto-task logici e sotto-moduli riutilizzabili è una delle principali cause delle loro difficoltà. Al contrario, di fronte a problemi complessi, i programmatori umani esperti scrivono istintivamente codice modulare e astratto. Utilizzando moduli precedentemente creati, espandono efficacemente la loro competenza attuale.

In una recente ricerca, un team di ricercatori di Salesforce Research ha introdotto CodeChain, un innovativo framework per colmare il divario tra LLMs e sviluppatori umani. Con una sequenza di auto-riformulazioni guidate da sotto-moduli rappresentativi sviluppati nelle iterazioni precedenti, questo framework mira a migliorare il processo di sviluppo del codice modularizzato. CodeChain indica all’LLM di scrivere codice modularizzato utilizzando un approccio di pensiero a catena. L’intenzione è di motivare il modello ad affrontare la risoluzione dei problemi in termini di sotto-task logici e sotto-moduli.

Una sequenza di auto-riformulazioni forma la base di CodeChain. Ci sono due fasi iterative, che sono le seguenti.

  1. Estrazione e raggruppamento dei sotto-moduli: In questa fase, i sotto-moduli vengono individuati analizzando il codice prodotto dall’LLM. Successivamente, questi sotto-moduli vengono organizzati in cluster. Dai cluster vengono scelti i sotto-moduli rappresentativi. Si ritiene che queste rappresentazioni siano più ampiamente applicabili e riutilizzabili.
  1. Aumento e rigenerazione della prompt: Il prompt iniziale a catena di pensiero viene migliorato e rigenerato integrando le implementazioni dei moduli scelti dalla fase precedente. Successivamente, si dice all’LLM di produrre nuove soluzioni modularizzate. Di conseguenza, il modello può espandere efficacemente le informazioni e la comprensione acquisite dalle iterazioni precedenti.

CodeChain ha un grande impatto sulla generazione del codice. Il team ha condiviso che la modularità e l’accuratezza delle soluzioni generate sono notevolmente migliorate spingendo l’LLM a basarsi su e riutilizzare sotto-moduli preesistenti e verificati. Il framework ha ottenuto miglioramenti relativi al pass@1 del 35% su APPS e del 76% su CodeContests. Questi risultati sono stati ottenuti su vari LLM, compresi LLM open-source come WizardCoder e modelli di OpenAI. Sono state condotte ampie analisi per comprendere più a fondo gli elementi che hanno contribuito al successo di CodeChain. Sono state esaminate tecniche di prompt, numero di cluster utilizzati, dimensione dei modelli LLM e qualità dei programmi prodotti. La comprensione ottenuta da queste indagini chiarisce perché CodeChain ha successo nel migliorare la qualità e modularità del codice prodotto dagli LLM.

In conclusione, CodeChain rappresenta uno sviluppo rivoluzionario nel campo della generazione di codice da modelli di linguaggio di grande scala. Lo fa promuovendo la modularità e agevolando le auto-riformulazioni mediante il riutilizzo di sotto-moduli precedentemente creati, colmando così il divario tra LLM e programmatori umani esperti.