14 de novembro de 2024
Como melhorar as ferramentas de desenvolvedor com tecnologia de IA usando a API Gemini
A democratização da IA no último ano abriu duas grandes oportunidades para os desenvolvedores: ela tornou muito fácil integrar a IA de ponta aos projetos e trouxe eficiências impulsionadas pela IA para o processo de desenvolvimento.
O Sublayer, um framework de agente de IA baseado em Ruby, demonstra o poder e a eficiência da API Gemini ao integrar nossos modelos 1.5 à oferta principal do desenvolvedor e aos próprios fluxos de trabalho de ferramentas.
Como 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 ser algo tão simples, mas crucial, quanto a documentação. Nos próprios fluxos de trabalho, a Sublayer resolve esse problema integrando a biblioteca ao Gemini 1.5 Pro e criando automações de IA para ajudar a manter a documentação atualizada e identificar áreas de melhoria.
"Tudo isso aconteceu porque a janela de contexto enorme do Gemini realmente dá espaço para testar novas ideias sem se preocupar com implementações complexas e otimizadas de antemão",
O processo funciona assim:
Sempre que uma PR é mesclada no repositório principal da Sublayer, um agente é acionado para atualizar a documentação.
O agente gera uma solicitação que contém todo o conteúdo da biblioteca, todo o conteúdo da documentação e todo o conteúdo relevante da RP, além de instruções que explicam a tarefa e envia para o Gemini.
O Gemini responde com saídas estruturadas contendo os caminhos, nomes e conteúdos dos arquivos que a biblioteca Sublayer converte em um objeto a ser usado.
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 PR.
# 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 nos 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 se concentrar em manter uma página de catálogo específica dos documentos atualizada. Há até uma tarefa semelhante que é executada durante a noite, em que o Gemini analisa a documentação atual, identifica algumas áreas de melhoria, as classifica com base no impacto e gera um único PR para a equipe da Sublayer revisar todas as manhãs.
Como trazer a IA para a comunidade de desenvolvedores Ruby com os modelos Gemini
Além de tornar a infraestrutura e as ferramentas dos desenvolvedores mais eficientes, a Sublayer também oferece suporte a 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. O foco é 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 pela automação de pequenas tarefas em uma lista de verificação que consomem tempo e energia.
O principal desafio da Sublayer é oferecer suporte à comunidade de desenvolvedores Ruby, que tem recebido pouco suporte no ecossistema de IA. A integração com o Gemini permitiu que eles atendessem à demanda crescente de suporte do Gemini nas ferramentas. A implementação do Gemini da 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 etapa. Essa abordagem simplifica o desenvolvimento e a depuração, ajudando os desenvolvedores a criar aplicativos robustos.
"Ao criar apps baseados em LLM, divida o problema nos menores componentes possíveis", aconselha Werner. "Você quer projetar seus programas para processar qualquer saída de modelo de forma eficaz, o que pode até mesmo significar adicionar intencionalmente etapas para que uma pessoa revise e edite antes de prosseguir."
LLMs, uma peça-chave do quebra-cabeça da infraestrutura de IA
Para a Sublayer, os LLMs, como o Gemini, são partes essenciais da infraestrutura, semelhantes aos bancos de dados. O framework foi projetado para integrar perfeitamente as 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 de código e a transformação de bases de código em várias linguagens e bibliotecas. A Sublayer usa os modelos do Gemini para permitir que os usuários gerem novos componentes funcionais no próprio framework. Essa característica de "automontagem" incentiva a experimentação e permite que os usuários explorem ideias novas 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, seguimento de instruções e geração de novas estruturas de dados com base em exemplos"
A seguir
No futuro, a Sublayer vai lançar a Augmentations.ai, uma plataforma que disponibiliza as automações criadas para todas as equipes de desenvolvimento. O lançamento inicial vai contar com duas ferramentas do Gemini 1.5 Pro: o linting semântico, 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 o resumo semanal, que transforma 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 a funcionalidade mais sensível à latência e voltada ao usuário, à medida que lançam mais ferramentas na plataforma Augmentations. Esse trabalho também vai gerar feedback para o framework de código aberto, permitindo que a comunidade Ruby aproveite as novas funcionalidades do Gemini à medida que elas forem lançadas, sendo impulsionado pelo uso real pela equipe da Sublayer.
A história da Sublayer mostra o potencial transformador da API Gemini. Isso mostra como os desenvolvedores podem integrar o Gemini aos fluxos de trabalho com facilidade, 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.