Seguici sui social

Il professor Eran Yahav, co-fondatore e co-CEO di Tabnine – Serie di interviste

interviste

Il professor Eran Yahav, co-fondatore e co-CEO di Tabnine – Serie di interviste

mm

Professor Eran Yahav, co-fondatore e co-CEO di Tabnine, è professore di informatica al Technion – Israel Institute of Technology, dove la sua ricerca si concentra su linguaggi di programmazione, apprendimento automatico e ingegneria del software, in particolare sulla sintesi di programmi e sull'analisi di codice su larga scala. Parallelamente alla sua attività accademica, ha co-fondato Tabnine (originariamente Codota) per applicare anni di ricerca a strumenti pratici per sviluppatori, contribuendo a essere pionieri nel completamento automatico e nell'automazione del codice basati sull'intelligenza artificiale. Il suo lavoro unisce il mondo accademico e quello industriale, con l'obiettivo di rendere il codice generato dall'IA più affidabile, sicuro e contestualizzato per ambienti aziendali reali.

Tabnino Tabnine è una piattaforma di programmazione basata sull'intelligenza artificiale, progettata per assistere gli sviluppatori durante l'intero ciclo di vita dello sviluppo software, dalla scrittura e dal debug del codice alla generazione di test e documentazione. Inizialmente lanciata come strumento di completamento automatico del codice, si è evoluta in una piattaforma più ampia, orientata alle aziende, che integra l'intelligenza artificiale generativa e i flussi di lavoro basati su agenti, consentendo ai team di automatizzare attività di sviluppo complesse mantenendo al contempo un forte controllo su privacy, sicurezza e conformità. Con il supporto per decine di linguaggi di programmazione e integrazioni con i principali IDE, Tabnine mira a migliorare la produttività degli sviluppatori, garantendo al contempo che il codice generato dall'IA rimanga affidabile e in linea con gli standard aziendali.

Hai trascorso anni a fare ricerca sull'analisi e la sintesi dei programmi al Technion e in precedenza hai lavorato presso IBM Research. Quale problema nello sviluppo software ti ha convinto a co-fondare Tabnine e in che modo la tua ricerca accademica ha plasmato la visione originale dell'azienda?

Il mio lavoro accademico si è concentrato sull'analisi e la sintesi dei programmi, che in sostanza consiste nell'insegnare alle macchine a comprendere e generare codice. Ho conseguito il dottorato di ricerca in Analisi dei Programmi, ed è in questo ambito che ho trascorso i primi anni della mia ricerca applicata. Affrontare i problemi di qualità del software con l'analisi dei programmi mi ha fatto capire che alcuni problemi sono molto difficili da risolvere una volta che il programma è stato scritto in modo errato. Prevenire è meglio che curare, se mi si può dire. Questo mi ha convinto che il modo giusto per affrontare il problema della qualità del software sia attraverso la Sintesi dei Programmi, ambito in cui ho investito la maggior parte del mio tempo e delle mie energie nella ricerca.

Inizialmente mi sono occupato di sintesi di programmi concorrenti, cercando di automatizzare la creazione di programmi concorrenti a partire da programmi sequenziali. In seguito sono passato a una sintesi di programmi di applicazione più generale, basata sull'apprendimento automatico.

La sintesi di programmi tramite apprendimento automatico è stata anche l'idea fondamentale alla base di Tabnine. L'idea, che oggi appare ovvia, era che i modelli potessero apprendere schemi di programmazione direttamente da grandi corpus di codice e assistere gli sviluppatori in tempo reale. Questa idea generale è applicabile a tutte le fasi del ciclo di vita dello sviluppo del software: dalla creazione del codice alla revisione del codice, fino alla distribuzione e oltre.

L'obiettivo è sempre stato quello di potenziare il lavoro degli sviluppatori umani fornendo loro strumenti che accelerino il processo di sviluppo e ne eliminino gli ostacoli. Lo sviluppo software è una disciplina creativa e di problem solving, e l'intento era che l'intelligenza artificiale eliminasse questi ostacoli gestendo le attività di routine e aiutando gli sviluppatori a rimanere concentrati. Questa visione ci guida ancora oggi, sebbene la tecnologia si sia evoluta significativamente dai suoi esordi.

Tabnine è stata pioniera degli assistenti di programmazione basati sull'IA anni prima che l'IA generativa diventasse di uso comune con strumenti come i modelli di OpenAI. Guardando indietro, come si è evoluto il ruolo dell'IA nello sviluppo software da quei primi tempi e quali lezioni ha appreso il settore dalla prima ondata di assistenti alla programmazione?

La prima generazione di assistenti di programmazione basati sull'intelligenza artificiale si concentrava principalmente sulla previsione. Si trattava essenzialmente di sistemi avanzati di completamento automatico che aiutavano gli sviluppatori a scrivere codice più velocemente prevedendo la riga o la funzione successiva.

La novità introdotta dai cicli di agenti è che l'IA ora può gestire i compiti con maggiore autonomia, al punto che possiamo considerare gli agenti (con la giusta guida) come sviluppatori junior indipendenti.

Ma questo ha anche insegnato al settore un'importante lezione. La pura capacità di un modello non è sufficiente per lo sviluppo di software aziendale. I modelli addestrati su dati pubblici possono produrre risultati impressionanti, ma spesso non tengono conto dell'architettura, delle dipendenze e delle convenzioni di un'organizzazione.

Ecco perché la prossima fase evolutiva non riguarda solo modelli più grandi o finestre di contesto più ampie, ma la connessione di questi modelli al contesto reale in cui il software viene sviluppato.

Molte aziende stanno scoprendo che per scalare gli agenti di intelligenza artificiale non bastano modelli più grandi: è necessario un contesto organizzativo più approfondito. Perché ritieni che il contesto stia diventando la vera frontiera per uno sviluppo affidabile basato sull'IA?

I sistemi software sono reti complesse di relazioni. Una singola modifica può influenzare più servizi, API o componenti a valle.

I modelli di intelligenza artificiale odierni sono molto bravi a generare codice plausibile, ma spesso operano senza una comprensione strutturata di tali relazioni. Senza questa comprensione, l'IA non può ragionare in modo affidabile sulle conseguenze di una modifica.

Le aziende stanno scoprendo che l'affidabilità dei sistemi di intelligenza artificiale dipende dalla qualità del contesto in cui operano. Se un sistema di intelligenza artificiale comprende l'architettura del sistema, le dipendenze tra i servizi e gli standard di codifica dell'organizzazione, può generare codice che si allinea molto più fedelmente al funzionamento effettivo del sistema.

In tal senso, il contesto sta diventando la prossima frontiera per lo sviluppo dell'IA aziendale.

Il vostro nuovo Enterprise Context Engine mira a fornire agli agenti di intelligenza artificiale una comprensione strutturata dell'architettura, delle dipendenze e delle pratiche ingegneristiche di un'organizzazione. In che modo questo approccio si differenzia dai metodi comuni, come la generazione aumentata tramite recupero di informazioni, su cui molte aziende fanno attualmente affidamento?

La generazione potenziata dal recupero di informazioni è una tecnica utile. Consente ai modelli di recuperare documenti o frammenti di codice pertinenti durante la generazione di una risposta.

Ma il semplice recupero delle informazioni non genera comprensione. Fornisce accesso alle informazioni, non alla struttura.

L'Enterprise Context Engine è progettato per andare oltre, creando una rappresentazione strutturata dell'ambiente software. Analizza repository, servizi, dipendenze, API e relazioni architetturali, organizzandoli in un modello che descrive il funzionamento effettivo del sistema.

Ciò consente ai sistemi di intelligenza artificiale di ragionare sulle relazioni tra i componenti anziché limitarsi a recuperare frammenti di testo. Per ambienti aziendali complessi, questa distinzione diventa fondamentale.

Gli strumenti di programmazione basati sull'intelligenza artificiale si stanno evolvendo dai suggerimenti di completamento automatico ad agenti autonomi in grado di eseguire flussi di lavoro complessi in più fasi. Come pensi che cambierà l'equilibrio tra sviluppatori umani e sistemi agentici nei prossimi cinque anni?

Gli agenti di intelligenza artificiale si occuperanno sempre più spesso di attività di sviluppo di routine. Sono già in grado di implementare funzionalità end-to-end, inclusi test e documentazione. Ogni sviluppatore diventerà un responsabile di team per gli sviluppatori di IA. La sfida principale sarà comunicare i requisiti a questo team e verificare che gli artefatti generati corrispondano ai requisiti definiti.

Tuttavia, lo sviluppo software si basa fondamentalmente sulla risoluzione dei problemi e sulla progettazione. Gli sviluppatori umani continueranno a definire l'architettura, a fare compromessi e a guidare la direzione generale dei sistemi.

Ciò che cambierà è il livello di astrazione a cui lavorano gli sviluppatori. Invece di concentrarsi sul codice, gli sviluppatori orchestreranno sempre più flussi di lavoro di livello superiore e collaboreranno con sistemi di intelligenza artificiale che eseguono parti di tali flussi di lavoro.

In altre parole, il ruolo degli sviluppatori diventa più strategico man mano che l'IA si occupa di una parte maggiore del lavoro meccanico.

Tabnine ha indicato che, in alcuni ambienti, gli utenti aziendali possono riscontrare tassi di accettazione del codice generato dall'IA che raggiungono circa l'80%. Quali metriche dovrebbero utilizzare le organizzazioni per determinare se gli strumenti di codifica basati sull'IA migliorano effettivamente la produttività degli sviluppatori, anziché limitarsi a generare più codice?

La questione fondamentale non è quanto codice generi l'IA, ma quanto lavoro utile produca effettivamente.

Esistono diverse metriche che le organizzazioni dovrebbero monitorare. Una è il tasso di accettazione al primo tentativo, che misura la frequenza con cui il codice generato dall'IA può essere utilizzato senza modifiche. Un'altra è il tempo del ciclo di revisione, ovvero quante iterazioni sono necessarie prima che una pull request possa essere unita.

Le organizzazioni dovrebbero inoltre valutare il tempo impiegato dagli sviluppatori per le rilavorazioni, nonché i tempi di attesa per le modifiche dal livello di sviluppo a quello di produzione.

Se gli strumenti di intelligenza artificiale migliorano davvero la produttività, dovresti riscontrare miglioramenti in tutti questi parametri. Gli sviluppatori dedicano meno tempo alla correzione del codice generato e più tempo a lavorare su attività a maggior valore aggiunto.

Le aziende rimangono caute nell'esporre codice proprietario a modelli esterni. In che modo il concetto di "codifica AI affidabile" affronta le problematiche di governance, privacy e conformità che hanno rallentato l'adozione da parte delle imprese di strumenti di sviluppo di intelligenza artificiale?

La fiducia è uno dei fattori più importanti per l'adozione dell'intelligenza artificiale da parte delle imprese.

La fiducia è la sfida fondamentale per la realizzazione della figura dell'ingegnere IA. Come possiamo fidarci di un ingegnere IA che agisca in autonomia per completare attività critiche di ingegneria del software? Come possiamo garantire che le sue azioni siano in linea con le nostre aspettative in termini di qualità, sicurezza e conformità alle nostre politiche? Affinché l'ingegnere IA possa essere accettato come membro a pieno titolo dei nostri team di ingegneri, deve godere della stessa fiducia che riponiamo nei nostri colleghi, accuratamente selezionati e adeguatamente formati.

Per affrontare questa sfida è necessario basarsi su due pilastri fondamentali:

  • PersonalizzazioneFornire all'ingegnere di intelligenza artificiale una conoscenza approfondita della vostra organizzazione, del codice sorgente e delle migliori pratiche.
  • ControllateImplementare sistemi robusti per garantire che tutto il codice, sia quello generato dall'IA che quello scritto da esseri umani, soddisfi gli standard di qualità, sicurezza, prestazioni e affidabilità della vostra organizzazione.

Inoltre, la programmazione affidabile dell'IA (Trusted AI Coding) significa dare alle organizzazioni il controllo su come viene implementata l'IA e garantire una governance e un controllo centralizzati.

Hai suggerito che il contesto organizzativo potrebbe diventare uno strato fondamentale nello stack di intelligenza artificiale aziendale, in modo simile ai database o all'infrastruttura cloud nelle precedenti ere informatiche. Che aspetto avrà questa architettura futura?

Osservando l'evoluzione della tecnologia aziendale, si nota spesso l'emergere di nuovi livelli infrastrutturali.

I database sono diventati il ​​fondamento per la gestione dei dati. Le piattaforme cloud sono diventate il fondamento per l'esecuzione di applicazioni su larga scala.

Nell'era dell'intelligenza artificiale, le organizzazioni avranno bisogno di un'infrastruttura che permetta ai sistemi di IA di comprendere la struttura interna dell'azienda: i suoi sistemi, le relazioni e i vincoli operativi.

Questo livello infrastrutturale fornirà un contesto strutturato che potrà essere utilizzato da più sistemi di intelligenza artificiale, siano essi assistenti alla programmazione, agenti di supporto o strumenti di automazione operativa.

In tal senso, il contesto diventa un fondamento condiviso per l'intelligenza artificiale aziendale.

Molte aziende stanno sviluppando assistenti di programmazione strettamente legati a un unico modello di base. Tabnine, invece, permette alle imprese di connettere modelli diversi a seconda delle loro esigenze. Perché la flessibilità dei modelli è importante per l'evoluzione a lungo termine degli strumenti di sviluppo dell'IA aziendale?

L'ecosistema dell'intelligenza artificiale si sta evolvendo molto rapidamente. Vengono rilasciati frequentemente nuovi modelli, e spesso i diversi modelli eccellono in aree differenti.

Le aziende non dovrebbero essere costrette a riprogettare i propri flussi di lavoro di sviluppo ogni volta che cambia il panorama dei modelli. Consentendo alle organizzazioni di scegliere e passare da un modello all'altro, offriamo una flessibilità che contribuisce a rendere a prova di futuro la loro strategia di intelligenza artificiale.

La flessibilità del modello consente inoltre alle organizzazioni di bilanciare prestazioni, costi, requisiti di privacy e vincoli di implementazione.

A lungo termine, è probabile che le imprese opereranno in un ambiente multi-modello e le piattaforme di sviluppo dovrebbero essere progettate tenendo conto di questa realtà.

Quali sono i principali errori che i CTO e i responsabili dell'ingegneria commettono oggi nella valutazione delle piattaforme di sviluppo di IA, e come possono evitarli?

Un errore comune è quello di concentrarsi esclusivamente sulle capacità del modello. I modelli più grandi sono certamente un componente fondamentale, ma l'affidabilità in ambienti reali dipende da quanto bene l'IA comprende il sistema in cui opera.

Un altro errore consiste nell'implementare strumenti di intelligenza artificiale senza considerare i requisiti di governance e sicurezza. Le aziende necessitano di politiche chiare su come si accede al codice, come vengono implementati i modelli e come vengono convalidati gli output.

Infine, a volte le organizzazioni si aspettano che l'IA offra un aumento immediato della produttività senza adattare i flussi di lavoro o fornire un contesto sufficiente. Le implementazioni di successo di solito prevedono l'integrazione dell'IA nei processi di sviluppo esistenti e il suo collegamento al codice e all'architettura dell'organizzazione.

Quando questi elementi si combinano, l'intelligenza artificiale può diventare un potente acceleratore per lo sviluppo del software, anziché un semplice strumento.

Grazie per l'ottima intervista, i lettori che desiderano saperne di più dovrebbero visitare Tabnino.

Antoine è un leader visionario e socio fondatore di Unite.AI, spinto da una passione incrollabile per la definizione e la promozione del futuro dell'intelligenza artificiale e della robotica. Imprenditore seriale, ritiene che l'intelligenza artificiale sarà dirompente per la società quanto l'elettricità, e spesso viene colto a delirare sul potenziale delle tecnologie dirompenti e dell'AGI.

Come futurista, si dedica a esplorare come queste innovazioni plasmeranno il nostro mondo. Inoltre, è il fondatore di Titoli.io, una piattaforma focalizzata sugli investimenti in tecnologie all'avanguardia che stanno ridefinendo il futuro e rimodellando interi settori.