Connect with us

Itamar Friedman, CEO & Co-Founder di CodiumAI – Intervista

Interviste

Itamar Friedman, CEO & Co-Founder di CodiumAI – Intervista

mm

Itamar Friedman, è il CEO e Co-Founder di CodiumAI. Codium si concentra sul lato “integrità del codice” della generazione di codice — generazione di test automatizzati, spiegazioni del codice e recensioni. Hanno pubblicato ricerche sulla generazione di soluzioni di codice per sfide di programmazione competitiva che superano Google DeepMind.

Quando e come hai iniziato a interessarti all’AI?

Nel 2009, ho lavorato a Mellanox (Acq. da NVIDIA) e ho studiato ingegneria elettrica. Rendersi conto che molti dei processi di sviluppo noiosi in Mellanox potevano essere automatizzati da algoritmi di apprendimento automatico, ho cambiato la mia specializzazione in ottimizzazione e apprendimento automatico e ho completato un master in questo campo. Nel 2010, stavo già lavorando a un progetto di apprendimento profondo (con una rete neurale profonda di 3 strati) gettando le basi per il mio lavoro ad Alibaba, dove ho guidato un gruppo di ricerca specializzato nella ricerca di architetture neurali, nell’addestramento di modelli e nella costruzione di strumenti AutoML per gli sviluppatori. Intorno al 2021, non mi vergognavo di chiamare il nostro lavoro “AI”, poiché i grandi modelli linguistici sono diventati potenti strumenti e la mia immaginazione di ciò che poteva essere realizzato con loro è cresciuta.

Il tuo precedente startup di computer vision Visualead è stato infine acquisito da Alibaba Group, cosa era questo startup e quali sono stati alcuni dei tuoi principali take-away da questa esperienza?

Visualead si specializzava nello scansionare loghi, codici QR e tutto ciò che si trova in mezzo, compresa la sicurezza e la nascondimento di informazioni nelle immagini per abilitare transazioni P2P sicure e coinvolgimento. A Visualead, abbiamo eseguito algoritmi su dispositivi mobili dal 2012, compresi modelli. Era una sfida fare ciò all’epoca e abbiamo imparato molto sulla costruzione di modelli efficienti e sulla creazione di barriere intorno a queste creature statistiche.

Ancora oggi, applico le lezioni apprese da quel periodo ai progetti attuali che intraprendo – ad esempio, quando abbiamo costruito lo strumento di generazione di soluzioni open-source AlphaCodium abbiamo introdotto il concetto di Flow Engineering e applicato questo concetto per costruire un flusso per proteggere l’output dei modelli LLM.

Potresti condividere la storia di genesi dietro il lancio di CodiumAI?

Ad Alibaba, ho visto di persona come un bug nel codice potesse portare a un problema da un milione di dollari e le sfide che gli sviluppatori affrontavano per tenere il passo con la generazione di codice senza sacrificare la qualità o l’integrità. Questo problema persiste e oggi il codice di bassa qualità è stato attribuito a un problema da un trilione di dollari che continua a crescere.

Il team di CodiumAI si specializza nella costruzione di strumenti potenziati dall’AI su larga scala ed è guidato a risolvere i problemi che gli sviluppatori affrontano. Con la nascita di nuove capacità LLM e AI, abbiamo capito che questa era la nostra opportunità di costruire una piattaforma di integrità del codice olistica per aiutare team impegnati come noi a ridurre i bug e mitigare altri problemi di integrità. Poiché sempre più codice viene generato dall’AI, il problema della valutazione di questo codice e del garantire che funzioni come previsto è diventato un punto dolente critico e uno che eravamo determinati a risolvere. Costruire strumenti potenziati dall’AI su larga scala e quindi la valutazione è un concetto essenziale per noi.

Come gruppo di sviluppatori esperti, lo capiamo; affrontare attività tediose come test e recensioni del codice può essere frustrante. Siamo fortemente guidati dalla missione di consentire finalmente a team impegnati di aumentare e gestire la loro integrità del codice.

Puoi descrivere quali tipi di analisi non banali CodiumAI esegue sul codice e come ciò supporta gli sviluppatori nel migliorare la qualità del codice?

Fino a poco tempo fa, gli strumenti esistenti disponibili per gli sviluppatori offrivano poco valore – ma con l’arrivo delle capacità LLM (ChatGPT, Copilot, ecc.) le capacità stanno iniziando a superare le aspettative e il supporto disponibile per gli sviluppatori non è più banale.

L’agente di codifica Codiumate sviluppato da CodiumAI offre agli sviluppatori strumenti unici per migliorare il loro flusso di lavoro e potenziare la generazione di codice. Codiumate semplifica il processo di sviluppo fornendo assistenza automatizzata in tutta la fase di codifica. Utilizzando i frammenti di codice esistenti evidenziati dagli sviluppatori nel loro ambiente, l’agente può automaticamente redigere un piano di sviluppo facile da seguire e coerente, scrivere codice secondo quel piano, identificare codice duplicato che lo sviluppatore potrebbe voler utilizzare o rimuovere, redigere documentazione e suggerire test per garantire che il codice funzioni correttamente prima di essere distribuito in un ambiente live.

Codiumate fornisce agli sviluppatori un’analisi comportamentale approfondita – illuminando possibili comportamenti e rami che il codice in esame comprende. Ciò consente allo sviluppatore di esaminare il codice generato e creare test che (ramo) coprono tutti i comportamenti, migliorando così il codice più di quanto lo sviluppatore avrebbe fatto se avesse considerato tutti i casi possibili da solo.

Quali funzionalità specifiche offre l’agente PR per l’analisi delle richieste di pull e come semplifica il processo di revisione su piattaforme come GitHub e GitLab?

L’agente PR offre una varietà di funzionalità progettate per migliorare e semplificare il processo di analisi e revisione delle richieste di pull su vari provider di git.

La generazione automatica della descrizione della PR genera automaticamente descrizioni dettagliate e complete per le richieste di pull. Questa funzionalità affronta problemi comuni in cui gli sviluppatori potrebbero saltare descrizioni dettagliate della PR a causa di vincoli di tempo o disattenzione. Con descrizioni automatiche, ogni PR è dotata di un contesto sufficiente, rendendo più facile per i revisori capire le modifiche senza dover decifrare estensivamente le differenze di codice. Abbiamo anche costruito una revisione automatica della PR per fornire agli sviluppatori una panoramica completa della PR, che consente loro di rilevare potenziali problemi come bug, vulnerabilità di sicurezza o odori di codice in modo proattivo. Questo feedback preventivo consente agli sviluppatori di apportare correzioni prima del processo di revisione, migliorando così la qualità del codice che raggiunge i revisori.

Sfruttando l’AI, le suggerimenti di codice automatici possono anche suggerire miglioramenti o implementazioni alternative direttamente all’interno dell’interfaccia della PR. Queste suggerimenti potrebbero essere ottimizzazioni, aderenza agli standard di codifica o anche miglioramenti architettonici, aiutando a elevare la qualità della base di codice in modo incrementale.

L’agente PR supporta numerose opzioni per personalizzare i comandi che offre. Una delle opzioni di personalizzazione più utili è l’uso di etichette personalizzate per migliorare l’organizzazione e la gestione delle richieste di pull su piattaforme come GitHub e GitLab. Questa funzionalità contribuisce all’efficienza operativa e alla chiarezza dei processi di sviluppo e revisione.

Come fa CodiumAI a generare test significativi e cosa li rende più efficaci rispetto ai test unitari standard?

Miglioriamo la generazione di test esaminando i repository di codice per frammenti di codice pertinenti relativi al codice in esame. Utilizzando prompt di catena di pensiero per mappare tutti i possibili comportamenti del codice, compresi percorsi tipici e casi limite, il nostro approccio utilizza il recupero di contesto specifico e prompt personalizzati adattati a diverse lingue di programmazione, incorporando conoscenze di dominio di esperti per garantire che i test soddisfino gli standard del settore. Inoltre, CodiumAI configura ambienti di runtime specifici per rilevare meglio i bug e generare test auto-risananti. Queste capacità rendono i test generati da CodiumAI più completi rispetto ai test unitari standard, che spesso mancano di comportamenti non intesi a causa dei pregiudizi intrinseci degli sviluppatori e dei limiti nella previsione di tutti i possibili scenari. Ciò si traduce in test che non solo sono approfonditi, ma anche più efficaci nel rilevare bug sottili e casi limite.

Basato sul feedback degli utenti, quali sono le funzionalità più apprezzate di CodiumAI e come hanno impattato la produttività degli sviluppatori?

Sulla base del feedback degli utenti che abbiamo ricevuto, vediamo che le funzionalità /chiedi con contesto del blocco di codice e /generazione di test dell’agente Codiumate sono molto richieste e migliorano il flusso di lavoro degli sviluppatori.

Con /chiedi con contesto del blocco di codice (vedi documentazione qui: /chiedi) gli sviluppatori possono porre domande aperte sul loro codice o richiedere miglioramenti del codice o recensioni durante una sessione di chat gratuita. Questa funzionalità è particolarmente utile per acquisire una comprensione più profonda della base di codice, poiché il modello mantiene il contesto completo del progetto, consentendogli di affrontare domande molto dettagliate e specifiche.

Lo strumento /generazione di test (vedi documentazione qui: /test) consente agli sviluppatori di generare suite di test complete per il loro codice con un solo clic. Esplorare il comportamento del codice, identificare e risolvere bug rapidamente e ampliare rapidamente la copertura del codice è un enorme vantaggio per la produttività.

La funzione /revisione dell’agente PR (vedi documentazione qui – /revisione) esamina le modifiche del codice della PR e genera automaticamente una revisione della PR per rilevare problemi prima che gli sviluppatori li spingano in produzione. La

funzione /descrizione (vedi documentazione qui – /descrizione) esamina le modifiche del codice della PR e genera una descrizione per la PR – titolo, tipo, riassunto, passo dopo passo e etichette, risparmiando tempo e energia agli sviluppatori che possono meglio applicare a compiti più impegnativi o creativi.

Come fa CodiumAI a identificare casi limite e comportamenti sospetti nel codice?

I nostri strumenti esaminano il repository dell’utente per frammenti di codice pertinenti relativi al codice in esame e, utilizzando prompt di catena di pensiero, mappiamo tutti i possibili comportamenti del codice e li visualizziamo all’utente. CodiumAI può identificare comportamenti sospetti direttamente (indipendentemente dalla generazione di test), identificando discrepanze o incoerenze tra diversi frammenti di codice o tra frammenti di codice e la documentazione che li accompagna.

CodiumAI supporta i principali linguaggi di programmazione; puoi spiegare come gestisce le sfumature linguistiche specifiche dell’analisi del codice e della generazione di test?

Per i principali linguaggi di programmazione, la nostra piattaforma va oltre il supporto di base implementando tecniche specializzate. Queste includono il recupero di contesto specifico e prompt personalizzati adattati alla sintassi e alla semantica unica di ogni linguaggio. Questi prompt personalizzati incorporano conoscenze di dominio di esperti per ottenere risultati di livello industriale. Inoltre, forniamo la possibilità di stabilire un ambiente di runtime specifico per questi linguaggi, il che migliora la capacità del nostro strumento di rilevare bug e generare test auto-risananti in modo efficace.

Per linguaggi meno comuni, sfruttiamo grandi modelli linguistici (LLM) che comprendono naturalmente più linguaggi di programmazione. Ciò è complementato dalla nostra infrastruttura di contesto generale e dal nostro sistema di prompt adattivo, che insieme facilitano l’analisi del codice e la generazione di test accurate in ambienti di programmazione diversi. Adottando un approccio a due livelli, possiamo garantire un supporto completo indipendentemente dal linguaggio di programmazione utilizzato.

Quali miglioramenti futuri sono pianificati per CodiumAI per supportare e semplificare ulteriormente le attività degli sviluppatori?

La strategia di sviluppo futura di CodiumAI si concentra sull’ampliamento della suite di strumenti AI disponibili per integrarsi senza problemi in tutte le fasi del ciclo di vita dello sviluppo software. Utilizzando principi di ingegneria del flusso avanzati per semplificare e fluidificare il flusso di lavoro degli sviluppatori, i nostri agenti forniranno un valore significativo in diverse fasi dello sviluppo. Inoltre, CodiumAI è impegnato a garantire che questi strumenti eccellano nel gestire codice e testi complessi e realistici, rendendoli indispensabili nelle attività di programmazione quotidiane. Questo approccio olistico mira a elevare la nostra offerta come strumento robusto e quotidiano per gli sviluppatori, migliorando la produttività e l’efficienza nel processo di sviluppo software.

Grazie per la grande intervista, i lettori che desiderano saperne di più possono visitare CodiumAI.

Antoine è un leader visionario e socio fondatore di Unite.AI, guidato da una passione incrollabile per plasmare e promuovere il futuro dell'AI e della robotica. Un imprenditore seriale, crede che l'AI sarà altrettanto disruptiva per la società quanto l'elettricità, e spesso viene colto a parlare con entusiasmo del potenziale delle tecnologie disruptive e dell'AGI.
Come futurist, è dedicato a esplorare come queste innovazioni plasmeranno il nostro mondo. Inoltre, è il fondatore di Securities.io, una piattaforma focalizzata sugli investimenti in tecnologie all'avanguardia che stanno ridefinendo il futuro e ridisegnando interi settori.