Interviste
Itamar Friedman, CEO & Co-Founder di CodiumAI – Serie di Interviste

Itamar Friedman, è il CEO e Co-Founder di CodiumAI. Codium si concentra sul lato della “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 di intelligenza artificiale?
Nel 2009, lavoravo a Mellanox (Acq. da NVIDIA (NVDA )) e studiavo ingegneria elettrica. Rendersi conto che molti dei processi di sviluppo tediosi 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 su un progetto di apprendimento profondo (con 3 strati di rete neurale) 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 “intelligenza artificiale”, poiché i modelli linguistici grandi erano diventati strumenti potenti e la mia immaginazione di ciò che poteva essere realizzato con essi cresceva.
Il tuo precedente startup di visione computerizzata Visualead è stato infine acquisito da Alibaba Group, cosa era questo startup e quali sono stati alcuni dei tuoi principali punti di forza in questa esperienza?
Visualead si specializzava nella scansione di loghi, codici QR e tutto ciò che stava in mezzo, compresa la sicurezza e la nascondimento di informazioni nelle immagini per abilitare transazioni P2P sicure e coinvolgimento. A Visualead, eseguivamo algoritmi su dispositivi mobili già dal 2012, compresi modelli. Era una sfida e un trucco fare ciò in quel momento, e abbiamo imparato molto sulla costruzione di modelli efficienti e sulla creazione di barriere di protezione intorno a queste creature statistiche.
Ancora oggi, applico le lezioni apprese in 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 Ingegneria del flusso e applicato questo concetto per costruire un flusso per proteggere i 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 mantenere 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 alimentati da intelligenza artificiale su larga scala e si impegna a risolvere i problemi che gli sviluppatori affrontano. Con la nascita di nuove capacità LLM e di intelligenza artificiale, 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 da intelligenza artificiale, il problema di valutare questo codice e assicurarsi che funzioni come previsto è diventato un punto dolente critico e uno che eravamo determinati a risolvere. Costruire strumenti alimentati da intelligenza artificiale su larga scala, e quindi la valutazione è un concetto essenziale per noi.
Potresti descrivere quali tipi di analisi non banali CodiumAI esegue sul codice e come questo 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 di 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 che uno sviluppatore umano evidenzia nel suo ambiente, l’agente può automaticamente creare 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, creare documentazione e suggerire test per assicurarsi 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 del codice sottoposto a test. Ciò consente allo sviluppatore di esaminare il codice generato e creare test che coprono tutti i comportamenti, migliorando così il codice più di quanto lo sviluppatore avrebbe fatto da solo.
Quali funzionalità specifiche fornisce l’agente PR per l’analisi delle richieste di pull e come questo semplifica il processo di revisione su piattaforme come GitHub e GitLab (GTLB )?
L’agente PR offre una varietà di funzionalità progettate per migliorare e semplificare l’analisi e il processo di revisione delle richieste di pull su vari provider di Git.
La generazione automatica della descrizione della richiesta di pull genera automaticamente descrizioni dettagliate e complete per le richieste di pull. Questa funzionalità risolve problemi comuni in cui gli sviluppatori potrebbero saltare descrizioni dettagliate a causa di vincoli di tempo o disattenzione. Con descrizioni automatiche, ogni richiesta di pull è dotata di un contesto sufficiente, rendendo più facile per i revisori comprendere le modifiche senza dover decifrare estensivamente le differenze nel codice.
Utilizzando l’intelligenza artificiale, le suggerimenti di codice automatiche possono anche suggerire miglioramenti o implementazioni alternative direttamente all’interno dell’interfaccia della richiesta di pull. 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 CodiumAI genera 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 sottoposto a test. Utilizzando prompt di catena di pensieri 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 esperto per assicurarsi che i test soddisfino gli standard dell’industria. Inoltre, CodiumAI configura ambienti di runtime specifici per migliorare la rilevazione di 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 delle limitazioni nella previsione di tutti gli scenari possibili.
Basato sul feedback degli utenti, quali sono le funzionalità più apprezzate di CodiumAI e come queste funzionalità hanno impattato la produttività degli sviluppatori?
Basato sul feedback che abbiamo ricevuto, vediamo che le funzionalità /chiedi con contesto di 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 di blocco di codice (vedi documentazione qui: /chiedi) gli sviluppatori possono porre domande aperte sul loro codice o richiedere miglioramenti o recensioni durante una sessione di chat gratuita. Questa funzionalità è particolarmente utile per ottenere una comprensione più profonda della base di codice, poiché il modello mantiene il contesto completo del progetto, consentendo di rispondere a domande 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 in modo tempestivo e ampliare rapidamente la copertura del codice è un grande vantaggio per la produttività.
/recensione (vedi documentazione qui – /recensione) funzione esamina i cambiamenti nel codice della richiesta di pull e genera automaticamente una recensione della richiesta di pull per rilevare problemi prima che gli sviluppatori li spingano in produzione.
/descrizione (vedi documentazione qui – /descrizione) funzione esamina i cambiamenti nel codice della richiesta di pull e genera una descrizione per la richiesta di pull – titolo, tipo, riassunto, passo dopo passo e etichette, risparmiando tempo e energia agli sviluppatori che possono applicare meglio a compiti più impegnativi o creativi.
Come CodiumAI identifica casi limite e comportamenti sospetti nel codice?
I nostri strumenti esaminano il repository di codice dello sviluppatore per frammenti di codice pertinenti relativi al codice sottoposto a test e, utilizzando prompt di catena di pensieri, mappiamo tutti i possibili comportamenti del codice e li mostriamo allo sviluppatore. CodiumAI può identificare comportamenti sospetti direttamente (indipendentemente dalla generazione di test), identificando incongruenze o incoerenze tra diversi frammenti di codice o tra frammenti di codice e la documentazione associata.
CodiumAI supporta i principali linguaggi di programmazione; potresti 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 lingua, incorporando conoscenze di dominio esperto per ottenere risultati a livello di settore. Inoltre, offriamo la possibilità di configurare un ambiente di runtime specifico per queste lingue, che migliora la capacità del nostro strumento di rilevare bug e generare test auto-risananti.
Per linguaggi meno comuni, sfruttiamo modelli linguistici grandi (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 di intelligenza artificiale per integrarsi senza problemi in tutte le fasi del ciclo di vita di sviluppo del 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 di sviluppo. Inoltre, CodiumAI è impegnata a garantire che questi strumenti eccellano nel gestire scenari di codice e testo reali e complessi, rendendoli indispensabili nelle attività di programmazione quotidiana. Questo approccio olistico mira a elevare la nostra offerta come uno strumento robusto e quotidiano per gli sviluppatori, migliorando la produttività e l’efficienza nel processo di sviluppo del software.
Grazie per la grande intervista, i lettori che desiderano saperne di più possono visitare CodiumAI.












