Entre em contato

Entrevistas

Itamar Friedman, CEO e cofundador da CodiumAI – Série de entrevistas

mm

Publicado

 on

Itamar Friedman, é CEO e cofundador da Códio AI. Codium se concentra no lado da “integridade do código” da geração de código – gerando testes automatizados, explicações de código e revisões. Eles divulgaram pesquisas sobre a geração de soluções de código para desafios de programação competitivos que superam o Google DeepMind.

Quando e como você inicialmente se interessou por IA?

Em 2009, trabalhei na Mellanox (Acq. pela NVIDIA) e estudei engenharia elétrica. Percebendo que muitos dos tediosos processos de desenvolvimento no Mellanox poderiam ser automatizados por algoritmos de aprendizado de máquina, mudei minha especialização para otimização e aprendizado de máquina e concluí um mestrado na área. Em 2010, eu já estava trabalhando em um projeto de aprendizagem profunda (com rede neural profunda de 3 camadas), estabelecendo as bases para meu tempo no Alibaba, onde liderei um grupo de pesquisa especializado em pesquisa de arquitetura neural, modelos de treinamento e construção de ferramentas AutoML para desenvolvedores. Por volta de 2021, não tive vergonha de chamar nosso trabalho de “IA”, pois grandes modelos de linguagem se tornaram ferramentas poderosas e minha imaginação sobre o que poderia ser alcançado com eles cresceu.

Sua startup anterior focada em visão computacional, Visualead, acabou sendo adquirida pelo Alibaba Group. O que foi essa startup e quais foram algumas das principais conclusões dessa experiência?

A Visualead é especializada em escanear logotipos, códigos QR e tudo mais, incluindo proteger e ocultar informações em imagens para permitir transações e engajamento P2P seguros. Na Visualead, executamos algoritmos em dispositivos móveis desde 2012, incluindo modelos. Antigamente era desafiador e complicado fazer isso, e aprendemos muito sobre a construção de modelos eficientes e proteções em torno dessas criaturas estatísticas.

Até hoje ainda aplico as lições aprendidas daquela época nos projetos atuais que realizo - por exemplo, quando construímos a ferramenta de geração de soluções de código aberto AlphaCodium introduzimos o conceito de Engenharia de Fluxo e aplicamos esse conceito para construir um fluxo para a saída dos modelos LLMs de guardrail.

Você poderia compartilhar a história da gênese do lançamento do CodiumAI?

No Alibaba, vi em primeira mão como um bug no código poderia levar a um problema de um milhão de dólares e os desafios que os desenvolvedores enfrentavam para acompanhar a geração de código sem sacrificar a qualidade ou a integridade. Este problema persiste e hoje o código de baixa qualidade tem sido atribuído a um problema de um trilhão de dólares que continua a crescer.

A equipe da CodiumAI é especializada na construção de ferramentas baseadas em IA em grande escala e é motivada a lidar com os problemas enfrentados pelos desenvolvedores. Com o nascimento de novos recursos de LLM e IA, entendemos que esta era nossa oportunidade de construir uma plataforma holística de integridade de código para ajudar equipes ocupadas como nós a reduzir bugs e mitigar outros problemas de integridade. À medida que mais e mais códigos eram gerados pela IA, o problema de avaliar esse código e garantir que funcionasse conforme o esperado tornou-se um ponto crítico e que fomos levados a resolver. Construir ferramentas baseadas em IA em escala e, portanto, benchmarking é um conceito essencial para nós.

Como um grupo de desenvolvedores experientes, nós entendemos; lidar com tarefas tediosas, como testes e revisão de código, pode ser frustrante. Somos altamente orientados para a missão de finalmente permitir que equipes ocupadas aumentem e gerenciem a integridade de seu código.

Você pode descrever quais tipos de análise não trivial o CodiumAI realiza no código e como isso ajuda os desenvolvedores a melhorar a qualidade do código?

Até recentemente, as ferramentas existentes disponíveis para os desenvolvedores ofereciam pouco valor – mas com a chegada dos LLMs (ChatGPT, Copilot, etc.) os recursos estão começando a superar as expectativas e o suporte disponível para os desenvolvedores não é mais trivial.

O Codiumate Coding-Agent desenvolvido pela CodiumAI oferece aos desenvolvedores ferramentas exclusivas para melhorar seu fluxo de trabalho e aprimorar a geração de código. Codiumate agiliza o processo de desenvolvimento, fornecendo assistência automatizada durante toda a tarefa de codificação. Usando os trechos de código existentes que um desenvolvedor humano destaca em seu ambiente, o agente pode esboçar automaticamente um plano de desenvolvimento coeso e fácil de seguir, escrever código de acordo com esse plano, identificar código duplicado que o desenvolvedor pode querer usar ou remover, redigir documentação e sugerir testes para garantir que o código funcione corretamente antes de ser implantado em um ambiente ativo.

Codiumate fornece aos desenvolvedores análises comportamentais aprofundadas - iluminando possíveis comportamentos e ramificações que o código em teste abrange. Isso permite que o desenvolvedor examine o código gerado e crie testes que (ramifiquem) cubram todos os comportamentos, melhorando assim o código mais do que se o desenvolvedor tivesse contabilizado todos os casos possíveis por conta própria.

Quais funcionalidades específicas o PR-Agent fornece para análise de pull request e como ele agiliza o processo de revisão em plataformas como GitHub e GitLab?

O PR-Agent oferece uma variedade de funcionalidades projetadas para aprimorar e agilizar o processo de análise e revisão de pull request (PR) em vários provedores git.

A geração automática de descrição de PR gera automaticamente descrições abrangentes e detalhadas para solicitações pull. Este recurso aborda problemas comuns em que os desenvolvedores podem pular descrições detalhadas de PR devido a restrições de tempo ou supervisão. Com descrições automatizadas, cada PR é equipado com contexto suficiente, tornando mais fácil para os revisores entenderem as mudanças sem a necessidade de decifrar extensivamente as diferenças de código. Também incorporamos a revisão automática de PR para fornecer aos desenvolvedores uma visão geral abrangente do PR, o que permite que eles identifiquem possíveis problemas, como bugs, vulnerabilidades de segurança ou cheiros de código de forma proativa. Esse feedback preventivo permite que os desenvolvedores façam correções antes do processo de revisão, melhorando assim a qualidade do código que chega aos revisores.

Aproveitando a IA, as sugestões automatizadas de código também podem sugerir melhorias ou implementações alternativas diretamente na interface de RP. Essas sugestões podem ser otimizações, adesão aos padrões de codificação ou até mesmo melhorias arquitetônicas, ajudando a elevar gradativamente a qualidade da base de código.

O PR-Agent oferece suporte a inúmeras opções para personalizar os comandos que oferece. Uma das opções de personalização mais úteis é o uso de rótulos personalizados para aprimorar a organização e o gerenciamento de solicitações pull em plataformas como GitHub e GitLab. Esta funcionalidade contribui para a eficiência operacional e clareza dos processos de desenvolvimento e revisão.

Como o CodiumAI gera testes significativos e o que torna esses testes mais eficazes do que os testes unitários padrão?

Aprimoramos a geração de testes verificando repositórios de código em busca de trechos relevantes relacionados ao código em teste. Empregando prompts de cadeia de pensamento para mapear todos os comportamentos potenciais do código, incluindo caminhos típicos e casos extremos, nossa abordagem utiliza busca específica de contexto e prompts personalizados adaptados a diferentes linguagens de programação, incorporando conhecimento especializado para garantir que os testes atendam aos padrões do setor. Além disso, CodiumAI configura ambientes de execução específicos para detectar melhor bugs e gerar testes de autocorreção. Esses recursos tornam os testes gerados pelo CodiumAI mais abrangentes do que os testes de unidade padrão, que muitas vezes perdem comportamentos não intencionais devido aos preconceitos inerentes dos desenvolvedores e às limitações em prever todos os cenários possíveis. Isso resulta em testes que não são apenas completos, mas também mais eficazes na descoberta de bugs sutis e casos extremos.

Com base no feedback dos usuários, quais são os recursos mais valorizados do CodiumAI e como esses recursos impactaram a produtividade dos desenvolvedores?

Com base no feedback dos usuários que recebemos, vemos que o /ask com contexto de bloco de código e /geração de teste os recursos do agente Codiumate são muito procurados e aprimoram o fluxo de trabalho do desenvolvedor.

Com o /ask com contexto de bloco de código (veja a documentação aqui: /perguntar) os desenvolvedores podem fazer perguntas abertas sobre seu código ou solicitar melhorias ou revisões de código durante uma sessão de bate-papo gratuita. Este recurso é particularmente benéfico para obter uma compreensão mais profunda da base de código, pois o modelo retém todo o contexto do projeto, permitindo-lhe responder a questões altamente detalhadas e específicas.

A /geração de teste (veja a documentação aqui: /teste) permite que os desenvolvedores gerem conjuntos de testes abrangentes para seu código com apenas um clique. Explorar o comportamento do código, identificar e resolver bugs prontamente e expandir rapidamente a cobertura do código é um grande trunfo para a produtividade.

O agente de relações públicas /análise (veja a documentação aqui – /análise) verifica as alterações no código PR e gera automaticamente uma revisão de PR para detectar problemas antes que os desenvolvedores entrem em produção. O

/descrever (veja a documentação aqui – /descrever) verifica as alterações no código PR e gera uma descrição para o PR – título, tipo, resumo, passo a passo e rótulos, economizando tempo e energia dos desenvolvedores, que podem aplicar melhor em tarefas mais exigentes ou criativas.

Como a CodiumAI identifica casos extremos e comportamentos suspeitos no código?

Nossas ferramentas examinam o repositório do desenvolvedor em busca de trechos de código relevantes relacionados ao código em teste e, usando prompts de cadeia de pensamento, mapeamos todos os comportamentos possíveis do código e os exibimos ao desenvolvedor. CodiumAI pode identificar comportamentos suspeitos diretamente (independentemente das gerações de teste), identificando discrepâncias ou inconsistências entre diferentes trechos de código, ou trechos de código e a documentação que os acompanha.

CodiumAI oferece suporte às principais linguagens de programação; você pode explicar como ele lida com nuances específicas da linguagem na análise de código e geração de testes?

Para as principais linguagens de programação, nossa plataforma vai além do suporte básico, implementando técnicas especializadas. Isso inclui busca específica de contexto e prompts personalizados adaptados à sintaxe e semântica exclusivas de cada idioma. Esses prompts personalizados incorporam conhecimento especializado no domínio do idioma para obter resultados de nível industrial. Além disso, fornecemos recursos para estabelecer um ambiente de execução específico para essas linguagens, o que aprimora a capacidade de nossa ferramenta de detectar bugs e gerar testes de autocorreção de maneira eficaz.

Para linguagens menos comuns, aproveitamos modelos de linguagem grandes (LLMs) que compreendem inerentemente múltiplas linguagens de programação. Isso é complementado por nossa infraestrutura de contexto geral e sistema de prompts adaptativo, que juntos facilitam a análise precisa de código e a geração de testes em diversos ambientes de programação. Ao adotar uma abordagem de dois níveis, podemos garantir suporte abrangente, independentemente da linguagem de programação utilizada.

Que melhorias futuras estão planejadas para o CodiumAI para apoiar e simplificar ainda mais as tarefas dos desenvolvedores?

A estratégia de desenvolvimento futuro da CodiumAI enfatiza o aprimoramento do conjunto disponível de ferramentas de IA para integração perfeita em todos os estágios do ciclo de vida de desenvolvimento de software. Ao empregar princípios avançados de engenharia de fluxo para agilizar e simplificar os fluxos de trabalho dos desenvolvedores, nossos agentes fornecerão um valor significativo em diferentes estágios de desenvolvimento. Além disso, a CodiumAI está empenhada em garantir que essas ferramentas sejam excelentes no tratamento de cenários complexos de código e texto do mundo real, tornando-as indispensáveis ​​nas tarefas diárias de programação. Esta abordagem holística visa elevar a nossa oferta como uma ferramenta robusta de uso diário para desenvolvedores, aumentando a produtividade e a eficiência no processo de desenvolvimento de software.

Obrigado pela ótima entrevista, os leitores que desejam saber mais devem visitar Códio AI.

Sócio fundador da unite.AI e membro do Conselho de Tecnologia da Forbes, Antoine é um futurista que é apaixonado pelo futuro da IA ​​e da robótica.

Ele também é o fundador da Valores Mobiliários.io, um site que foca em investir em tecnologia disruptiva.