Compartilhar

14 de novembro de 2024

Melhoria das ferramentas para desenvolvedores com tecnologia de IA usando a API Gemini

Scott Werner

CEO da Sublayer

Paige Bailey

Engenheiro de experiência do desenvolvedor de IA

Vishal Dharmadhikari

Engenheiro de soluções de produtos

Hero de demonstração de subcamada

A democratização da IA no ano passado abriu duas grandes oportunidades para os desenvolvedores: facilitar a integração da IA de ponta aos projetos e trazer eficiências baseadas em IA para o processo de desenvolvimento.

O Sublayer, uma estrutura de agente de IA baseada em Ruby, demonstra o poder e a eficiência da API Gemini ao integrar nossos modelos 1.5 à principal oferta para desenvolvedores e aos próprios fluxos de trabalho de ferramentas.

Manter a documentação do Sublayer atualizada com o Gemini

Uma das oportunidades da IA para desenvolvedores é permitir que as equipes, especialmente em startups pequenas e em estágio inicial, façam mais com menos. Para muitos, isso pode estar em algo tão simples, mas crucial, como a documentação. Nos próprios fluxos de trabalho, a Sublayer resolve isso integrando a biblioteca ao Gemini 1.5 Pro e criando automações de IA para manter a documentação atualizada e identificar áreas de melhoria.

"Tudo isso aconteceu porque a enorme janela de contexto do Gemini oferece espaço para testar novas ideias sem se perder em implementações complexas e otimizadas",

— diz Scott Werner, CEO da Sublayer, que recentemente escreveu sobre esse conceito em Waste Inferences!

O processo funciona assim:

  1. Sempre que um PR é mesclado ao repositório principal do Sublayer, ele aciona um agente para atualizar a documentação.

  2. O agente gera um comando que contém todo o conteúdo da biblioteca, toda a documentação e todo o conteúdo relevante da solicitação de pull, além de instruções explicando a tarefa, e envia para o Gemini.

  3. Em seguida, o Gemini responde com saídas estruturadas que contêm os caminhos, nomes e conteúdos dos arquivos, que a biblioteca Sublayer converte em um objeto para uso.

  4. Por fim, o agente usa as informações estruturadas recebidas para criar uma nova ramificação, fazer as mudanças solicitadas nos arquivos e enviar uma nova solicitação de pull.

            
              
# Get the diff from the PR
diff = GithubGetDiffAction.new(repo: repo, pr_number: pr_number).call

# Get the contents of the library repository and docs repository
code_context = GetContextAction.new(path: code_repo_path).call
doc_context = GetContextAction.new(path: doc_repo_path).call

# Use Gemini 1.5 Pro to decide whether this PR requires a documentation update
result = DocUpdateNecessityGenerator.new(
  code_context: code_context,
  doc_context: doc_context,
  diff: diff
).generate

# Use Gemini 1.5 Pro to generate suggested changes to the documentation
doc_update_suggestions = DocUpdateSuggestionGenerator.new(
  code_context: code_context,
  doc_context: doc_context,
  context_ignore_list: context_ignore_list,
    diff: diff
).generate

# Use Gemini 1.5 Pro to generate the changes to the suggested files
file_updates = DocUpdateGenerator.new(
  code_context: code_context,
  suggestions: suggestions,
  doc_context: doc_context,
  context_ignore_list: context_ignore_list
).generate

# Update each of the files returned by Gemini 1.5 Pro and create a new PR  
          
            
          

Confira o código completo do fluxo de trabalho em Exemplos de código aberto da Sublayer.

Após o sucesso desse primeiro projeto, eles expandiram ainda mais para agentes que monitoram repositórios de recursos separados para manter uma página específica do catálogo de documentos atualizada. Há até uma tarefa semelhante que é executada durante a noite. Nela, o Gemini analisa a documentação atual, identifica algumas áreas de melhoria, classifica-as com base no impacto e gera uma única solicitação de pull para a equipe do Sublayer analisar todas as manhãs.

Como levar a IA para a comunidade de desenvolvedores Ruby com os modelos do Gemini

Além de tornar a própria infraestrutura e as ferramentas de desenvolvedor mais eficientes, a Sublayer também oferece suporte aos modelos do Gemini na funcionalidade principal do produto.

A missão da Sublayer é capacitar desenvolvedores individuais e pequenas equipes a enfrentar projetos ambiciosos que antes estavam fora de alcance devido ao custo ou à complexidade. Elas se concentram em automatizar tarefas tediosas, demoradas e repetitivas, o caso de uso perfeito para a IA. Isso pode variar de migrações de código em grande escala, em que operações semelhantes precisam ser repetidas milhares de vezes, até eficiências diárias alcançadas com a automação de pequenas tarefas em uma lista de verificação que consomem tempo e energia.

Um dos principais desafios do Sublayer é apoiar a comunidade de desenvolvedores Ruby, que tem recebido pouca atenção no ecossistema de IA. A integração do Gemini permitiu que eles atendessem à crescente demanda por suporte do Gemini nas ferramentas. A implementação do Gemini pela Sublayer é altamente eficiente, exigindo apenas cerca de 60 linhas de código graças à camada de abstração. Eles usam saídas estruturadas, interagindo com modelos em um processo iterativo de uma única interação. Essa abordagem simplifica o desenvolvimento e a depuração, ajudando os desenvolvedores a criar aplicativos robustos.

"Ao criar apps baseados em LLMs, divida o problema nos menores componentes possíveis", aconselha Werner. "Você precisa projetar seus programas para processar qualquer saída do modelo de maneira eficaz, o que pode até significar adicionar etapas intencionalmente para que uma pessoa revise e edite antes de continuar."

LLMs, uma peça fundamental do quebra-cabeça da infraestrutura de IA

Para a Sublayer, os LLMs como o Gemini são peças essenciais da infraestrutura, semelhantes a bancos de dados. A estrutura foi projetada para integrar chamadas ao Gemini 1.5 Pro e ao Gemini 1.5 Flash, recuperando dados estruturados que os desenvolvedores podem usar facilmente nos aplicativos. Essa abordagem abre um mundo de possibilidades, desde a extração de insights de diversas fontes de dados até a geração e transformação de bases de código em diferentes linguagens e bibliotecas. O Sublayer usa os modelos do Gemini para permitir que os usuários gerem novos componentes funcionais no próprio framework. Essa característica de "autoassemblagem" incentiva a experimentação e permite que os usuários explorem novas ideias rapidamente.

"O Gemini é ótimo para resolver todos os problemas que nosso framework foi projetado para facilitar: geração de código, decomposição de tarefas, seguir instruções e gerar novas estruturas de dados com base em exemplos"

— Scott Werner, Sublayer

A seguir

No futuro, a Sublayer vai lançar o Augmentations.ai, uma plataforma que disponibiliza as automações criadas para todas as equipes de desenvolvimento. O lançamento inicial vai apresentar duas ferramentas com tecnologia do Gemini 1.5 Pro: o Semantic Linting, que permite que as equipes criem regras de revisão de código com tecnologia de IA que entendem o contexto e aplicam as práticas recomendadas em evolução, e os resumos semanais, que transformam a atividade de desenvolvimento em vários repositórios e ferramentas de gerenciamento de produtos em insights úteis para a liderança.

Eles planejam continuar usando uma combinação do Gemini 1.5 Pro para tarefas mais complexas e do Gemini 1.5 Flash para funcionalidades mais sensíveis à latência e voltadas ao usuário à medida que lançam mais ferramentas na plataforma Augmentations. Esse trabalho também vai alimentar a estrutura de código aberto, permitindo que a comunidade Ruby aproveite as novas funcionalidades do Gemini à medida que forem lançadas, impulsionadas pelo uso no mundo real pela equipe da Sublayer.

A história da Sublayer mostra o potencial transformador da API Gemini. Isso mostra como os desenvolvedores podem integrar facilmente o Gemini aos fluxos de trabalho, abrindo um mundo de oportunidades para inovação e automação. Para começar a criar com os modelos do Gemini, leia nossa documentação da API.