A democratização da IA no último ano criou duas grandes oportunidades para os desenvolvedores, tornando incrivelmente fácil integrar IA de ponta a projetos e trazendo eficiências habilitadas por IA para o processo de desenvolvimento.
A Sublayer, um framework de agentes de IA baseado em Ruby, demonstra o poder e a eficiência da API Gemini, integrando nossos modelos 1.5 à sua oferta principal para desenvolvedores, bem como a seus próprios fluxos de trabalho de ferramentas.
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 muito simples, porém crucial, como a documentação. Em seus próprios fluxos de trabalho, a Sublayer aborda isso integrando sua biblioteca ao Gemini 1.5 Pro e criando automatizações de IA para apoiar o trabalho de manutenção da documentação atualizada e identificar áreas de melhoria.
"Tudo aconteceu porque a enorme janela de contexto do Gemini realmente dá espaço para experimentar novas ideias sem que você se atole 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:
2. O agente gera um prompt que inclui todo o conteúdo da biblioteca, todo o conteúdo da documentação e todo o conteúdo relevante da PR, juntamente com instruções explicando a tarefa, e envia esse prompt para o Gemini.
3. O Gemini, então, responde com saídas estruturadas contendo os caminhos, nomes e conteúdos dos arquivos, que a biblioteca da Sublayer converte em um objeto a ser usado.
4. Por fim, o agente pega as informações estruturadas que recebeu e as usa 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
Veja o código do fluxo de trabalho completo nos exemplos de código aberto da Sublayer
Após o sucesso desse primeiro projeto, eles se 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 de seus documentos atualizada. Há até uma tarefa semelhante que é executada durante a noite, na qual o Gemini analisa a documentação atual, identifica algumas áreas de melhoria, classifica-as com base no impacto e gera uma única PR para revisão pela equipe da Sublayer logo cedo, todas as manhãs.
Além de tornar sua própria infraestrutura de desenvolvimento e suas ferramentas mais eficientes, a Sublayer também dá suporte a modelos Gemini dentro de sua funcionalidade central do produto.
A missão da Sublayer é capacitar desenvolvedores individuais e pequenas equipes para lidar com projetos ambiciosos que antes estavam fora de alcance devido a custos ou complexidade. O foco deles é automatizar tarefas tediosas, demoradas e repetitivas, um caso de uso perfeito para a IA. Isso pode variar de migrações de código em grande escala, nas quais operações semelhantes precisam ser repetidas milhares de vezes, a eficiências cotidianas alcançadas com a automação de pequenas tarefas de uma lista de verificação que drenariam tempo e energia.
Um dos principais desafios para a Sublayer é o suporte à comunidade de desenvolvedores do Ruby, que tem sido relativamente negligenciada no ecossistema de IA. A integração do Gemini permitiu que eles atendessem à crescente demanda por suporte do Gemini em suas ferramentas. A implementação do Gemini da Sublayer é altamente eficiente, exigindo apenas cerca de 60 linhas de código, graças à sua camada de abstração. Eles usam saídas estruturadas, interagindo com modelos em um processo iterativo de uma única volta. 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. "Convém projetar os programas para lidar com qualquer saída de modelo de forma eficaz, o que pode até significar adicionar intencionalmente etapas para uma pessoa revisar e editar antes de seguir em frente."
Para a Sublayer, LLMs como o Gemini são peças essenciais de infraestrutura, semelhantes a bancos de dados. Seu 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 utilizar prontamente em 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 até usa os modelos Gemini para permitir que os usuários gerem novos componentes funcionais dentro do próprio framework. Essa característica de "automontagem" 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, acompanhamento de instruções e geração novas estruturas de dados com base em exemplos."
– Scott Werner, CEO da Sublayer
Em relação ao futuro, a Sublayer está se preparando para lançar o Augmentations.ai, uma plataforma que disponibiliza as automações que eles estão criando para todas as equipes de desenvolvimento. O lançamento inicial contará com duas ferramentas baseadas no Gemini 1.5 Pro: o Semantic Linting, que permite que as equipes criem regras de revisão de código habilitadas por IA que entendam o contexto e apliquem as práticas recomendadas em evolução, e o Weekly Summaries, que transforma a atividade de desenvolvimento em vários repositórios e ferramentas de gerenciamento de produtos em insights acionáveis para a liderança.
Eles planejam continuar utilizando 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. Este trabalho também alimentará o framework de código aberto, permitindo que a comunidade do Ruby aproveite as novas funcionalidades do Gemini à medida que elas forem lançadas, mantendo o foco no uso no mundo real pela equipe da Sublayer.
A história da Sublayer demonstra o potencial transformador da API Gemini. Ela é um testemunho da facilidade com que os desenvolvedores podem integrar o Gemini a fluxos de trabalho, abrindo um mundo de oportunidades de inovação e automação. Para começar a criar com os modelos Gemini, leia nossa documentação da API.