Interviuri
Itamar Friedman, CEO & Co-Founder of CodiumAI – Interviu Seria

Itamar Friedman, este CEO și Co-Fondator al CodiumAI. Codium se axează pe partea de „integritate a codului” a generării de cod — generarea de teste automate, explicații de cod și revizuiri. Ei au lansat cercetări privind generarea de soluții de cod pentru provocările de programare competitive care depășesc Google DeepMind.
Când și cum ați devenit inițial interesat de IA?
În 2009, am lucrat la Mellanox (Acq. de NVIDIA) și am studiat ingineria electrică. Realizând că multe dintre procesele de dezvoltare tedioase de la Mellanox ar putea fi automate prin algoritmi de învățare automată, am schimbat specializările mele la optimizare și învățare automată și am absolvit un master în acest domeniu. Până în 2010, lucram deja la un proiect de învățare profundă (cu o rețea neuronală adâncă de 3 straturi) care a pus bazele timpului meu la Alibaba, unde am condus un grup de cercetare specializat în căutarea arhitecturii neurale, antrenarea modelelor și construirea unor instrumente AutoML pentru dezvoltatori. În jurul anului 2021, nu mai eram rușinat să numesc munca noastră „IA”, deoarece modelele de limbaj larg au devenit instrumente puternice, iar imaginația mea despre ceea ce putea fi realizat cu acestea a crescut.
Startup-ul dvs. anterior, Visualead, s-a axat pe viziunea computerizată și a fost în cele din urmă achiziționat de Alibaba Group, ce a fost acest startup și care au fost unele dintre principalele concluzii pe care le-ați tras din această experiență?
Visualead s-a specializat în scanarea logourilor, codurilor QR și a tuturor celorlalte, inclusiv securizarea și ascunderea informațiilor în imagini pentru a permite tranzacții sigure P2P și implicare. La Visualead, am rulat algoritmi pe dispozitive mobile încă din 2012, inclusiv modele. A fost o provocare și o chestiune dificilă să facem asta în acea perioadă, și am învățat mult despre construirea unor modele eficiente și despre gardurile de protecție din jurul acestor creaturi statistice.
Până în ziua de azi, încă aplic lecțiile învățate din acea perioadă proiectelor pe care le întreprind – de exemplu, când am construit instrumentul de generare de soluții open-source AlphaCodium, am introdus conceptul de Inginerie a Fluxului și am aplicat acest concept pentru a construi un flux care să ghideze ieșirile modelelor LLM.
Puteți împărtăși povestea de origine din spatele lansării CodiumAI?
La Alibaba, am văzut cu ochii mei cum o eroare în cod poate duce la o problemă de un milion de dolari și provocările cu care se confruntă dezvoltatorii pentru a ține pasul cu generarea de cod fără a sacrifica calitatea sau integritatea. Această problemă persistă, și astăzi, codul de calitate scăzută a fost atribuit unei probleme de trilioane de dolari care continuă să crească.
Echipa de la CodiumAI se specializează în construirea unor instrumente împuternicite de IA la scară și este condusă de dorința de a aborda punctele dureroase cu care se confruntă dezvoltatorii. Cu apariția noilor capacități LLM și IA, am înțeles că aceasta a fost oportunitatea noastră de a construi o platformă holistică de integritate a codului pentru a ajuta echipele ocupate, cum suntem noi, să reducă erorile și să atenueze alte probleme de integritate. Pe măsură ce codul generat de IA a devenit din ce în ce mai mult, problema benchmark-ului acestui cod și a asigurării că funcționează așa cum este destinat a deveni o problemă critică și una pe care am fost determinați să o rezolvăm. Construirea unor instrumente împuternicite de IA la scară și, prin urmare, benchmarking-ul este un concept esențial pentru noi.
Ca grup de dezvoltatori experimentați, înțelegem; a face față unor sarcini tedioase, cum ar fi testarea și revizuirea codului, poate fi frustrant. Suntem foarte motivați să permitem în cele din urmă echipelor ocupate să crească și să gestioneze integritatea codului lor.
Puteți descrie ce tipuri de analize nebanale efectuează CodiumAI asupra codului și cum acestea sprijină dezvoltatorii în îmbunătățirea calității codului?
Până de curând, instrumentele existente disponibile pentru dezvoltatori oferă puțină valoare – dar cu sosirea LLM (ChatGPT, Copilot, etc.) capacitățile încep să depășească așteptările, și suportul disponibil pentru dezvoltatori nu mai este trivial.
Agentul de codare Codiumate dezvoltat de CodiumAI oferă dezvoltatorilor instrumente unice pentru a-și îmbunătăți fluxul de lucru și a-și îmbunătăți generarea de cod. Codiumate simplifică procesul de dezvoltare prin oferirea de asistență automată pe parcursul sarcinii de codare. Utilizând fragmentele de cod existente pe care un dezvoltator le evidențiază în mediul său, agentul poate să proiecteze automat un plan de dezvoltare ușor de urmat și coerent, să scrie cod conform acestui plan, să identifice codul duplicat pe care dezvoltatorul ar putea să-l utilizeze sau să-l elimine, să proiecteze documentația și să sugereze teste pentru a asigura că codul funcționează corect înainte de a fi implementat într-un mediu live.
Codiumate oferă dezvoltatorilor o analiză comportamentală în profunzime – evidențiind posibile comportamente și ramuri pe care codul sub test le acoperă. Acest lucru permite dezvoltatorului să examineze codul generat și să creeze teste care să acopere toate comportamentele, îmbunătățind astfel codul mai mult decât dacă dezvoltatorul ar fi luat în considerare toate cazurile posibile singur.
Ce funcționalități specifice oferă PR-Agent pentru analiza cererilor de pull și cum simplifică procesul de revizuire pe platforme precum GitHub și GitLab?
PR-Agent oferă o varietate de funcționalități concepute pentru a îmbunătăți și a simplifica procesul de analiză și revizuire a cererilor de pull pe diverse furnizori de git.
Generarea automată a descrierii PR generează automat descrieri detaliate și cuprinzătoare pentru cererile de pull. Această funcție abordează problemele comune în care dezvoltatorii ar putea să omită descrierile detaliate ale PR din cauza lipsei de timp sau a omisiunii. Cu descrieri automate, fiecare PR este echipat cu suficient context, făcându-l mai ușor pentru reviewer să înțeleagă schimbările fără a fi nevoie să decodifice diferențele de cod în mod extensiv. De asemenea, am construit o revizuire automată a PR pentru a oferi dezvoltatorilor o imagine cuprinzătoare a PR, care le permite să identifice potențialele probleme, cum ar fi bug-uri, vulnerabilități de securitate sau mirosuri de cod, în mod proactiv. Acest feedback preventiv permite dezvoltatorilor să facă corecții înainte de procesul de revizuire, îmbunătățind astfel calitatea codului care ajunge la reviewer.
Utilizând IA, sugestiile automate de cod pot sugera, de asemenea, îmbunătățiri sau implementări alternative direct în interfața PR. Aceste sugestii pot fi optimizări, respectarea standardelor de codare sau chiar îmbunătățiri arhitecturale, ajutând la ridicarea calității bazei de cod în mod incremental.
PR-Agent suportă numeroase opțiuni pentru personalizarea comenzilor pe care le oferă. Una dintre cele mai utile opțiuni de personalizare este utilizarea etichetelor personalizate pentru a îmbunătăți organizarea și gestionarea cererilor de pull pe platforme precum GitHub și GitLab. Această funcționalitate contribuie la eficiența operațională și la claritatea proceselor de dezvoltare și revizuire.
Cum generează CodiumAI teste semnificative și ce face aceste teste mai eficiente decât testele unitare standard?
Îmbunătățim generarea de teste prin scanarea depozitelor de cod pentru fragmente de cod relevante legate de codul sub test. Utilizând prompturi de lanț de gândire pentru a cartografia toate comportamentele posibile de cod, inclusiv căi tipice și cazuri marginale, abordarea noastră utilizează extragerea context-specifică și prompturi personalizate adaptate la diferite limbi de programare, încorporând cunoștințe experte de nivel industrial pentru a asigura că testele îndeplinesc standardele industriei. În plus, CodiumAI configurează medii de rulare specifice pentru a detecta mai bine bug-urile și a genera teste auto-vindecătoare. Aceste capacități fac teste generate de CodiumAI mai cuprinzătoare decât testele unitare standard, care adesea omit comportamente neintenționate din cauza prejudecăților inerente ale dezvoltatorilor și limitărilor în a prevedea toate scenariile posibile. Acest lucru duce la teste care nu numai că sunt exhaustive, ci și mai eficiente în a descoperi bug-uri subtile și cazuri marginale.
Pe baza feedback-ului utilizatorilor, care sunt cele mai apreciate funcționalități ale CodiumAI și cum au aceste funcționalități impactat productivitatea dezvoltatorilor?
Pe baza feedback-ului pe care l-am primit, observăm că funcționalitățile /ask cu context de bloc de cod și /generare de teste ale agentului Codiumate sunt foarte solicitate și îmbunătățesc fluxul de lucru al dezvoltatorilor.
Cu /ask cu context de bloc de cod (vezi documentația aici: /ask), dezvoltatorii pot pune întrebări deschise despre codul lor sau pot solicita îmbunătățiri de cod sau revizuiri în timpul unei sesiuni de chat gratuite. Această funcționalitate este deosebit de benefică pentru a obține o înțelegere mai profundă a bazei de cod, deoarece modelul păstrează contextul complet al proiectului, permițându-i să abordeze întrebări foarte detaliate și specifice.
Instrumentul /generare de teste (vezi documentația aici: /test) permite dezvoltatorilor să genereze seturi de teste cuprinzătoare pentru codul lor cu un singur clic. Explorarea comportamentului codului, identificarea și rezolvarea promptă a bug-urilor, precum și extinderea rapidă a acoperirii codului reprezintă un avantaj enorm pentru productivitate.
Funcția /revizuire (vezi documentația aici – /review) a PR-Agent scanează modificările de cod PR și generează automat o revizuire a PR pentru a detecta probleme înainte ca dezvoltatorii să îl pună în producție. Funcția
/descrie (vezi documentația aici – /describe) scanează modificările de cod PR, generează o descriere pentru PR – titlu, tip, rezumat, prezentare și etichete, economisind timpul și energia dezvoltatorilor, pe care o pot aplica mai bine pentru sarcini mai solicitante sau creative.
Cum identifică CodiumAI cazurile marginale și comportamentele suspecte în cod?
Uneltele noastre scanează depozitul de cod al dezvoltatorului pentru fragmente de cod relevante legate de codul sub test și, utilizând prompturi de lanț de gândire, cartografiem toate comportamentele posibile de cod și le afișăm dezvoltatorului. CodiumAI poate identifica comportamente suspecte direct (indiferent de generarea de teste), prin identificarea discrepanțelor sau a incoerențelor dintre diferite fragmente de cod, sau fragmente de cod și documentația însoțitoare.
CodiumAI suportă limbaje de programare majore; puteți explica cum se ocupă de nuanțele specifice limbajului în analiza codului și generarea de teste?
Pentru limbajele de programare majore, platforma noastră merge dincolo de suportul de bază prin implementarea de tehnici specializate. Acestea includ extragerea context-specifică și prompturi personalizate adaptate la sintaxa și semantica unică a fiecărei limbi. Aceste prompturi personalizate încorporează cunoștințe experte de nivel industrial pentru a obține rezultate de nivel industrial. În plus, oferim capacități de a stabili un mediu de rulare specific pentru aceste limbi, ceea ce îmbunătățește capacitatea instrumentului nostru de a detecta bug-uri și a genera teste auto-vindecătoare în mod eficient.
Pentru limbajele mai puțin comune, ne bazăm pe modelele de limbaj larg (LLM) care înțeleg în mod inerent multiple limbaje de programare. Acest lucru este completat de infrastructura noastră generală de context și de sistemul nostru de prompturi adaptive, care împreună facilitează analiza codului și generarea de teste precise în medii de programare diverse. Prin abordarea la nivel dual, putem asigura suport cuprinzător, indiferent de limba de programare utilizată.
Ce îmbunătățiri viitoare sunt planificate pentru CodiumAI pentru a sprijini și a simplifica sarcinile dezvoltatorilor?
Strategia de dezvoltare viitoare a CodiumAI se axează pe îmbunătățirea suitei de instrumente IA disponibile pentru a se integra în mod transparent în toate etapele ciclului de viață al dezvoltării software. Prin utilizarea principiilor de inginerie a fluxului pentru a simplifica și a fluidiza fluxurile de lucru ale dezvoltatorilor, agenții noștri vor oferi o valoare semnificativă în diferite etape de dezvoltare. În plus, CodiumAI este dedicat asigurării că aceste instrumente excelează în gestionarea scenariilor de cod și text complexe și din lumea reală, făcându-le indispensabile în sarcinile zilnice de programare. Această abordare holistică are ca scop ridicarea ofertei noastre ca un instrument robust și utilizat zilnic de dezvoltatori, îmbunătățind productivitatea și eficiența în procesul de dezvoltare software.
Mulțumim pentru acest interviu, cititorii care doresc să afle mai multe despre CodiumAI ar trebui să viziteze CodiumAI.












