- Um projeto que tem como objetivo melhorar o desenvolvimento de software de código aberto criando um assistente automatizado, um "agente", para manutenção de código aberto
- Isso pode reduzir a quantidade de trabalho repetitivo relacionado à manutenção de código aberto
- A capacidade dos grandes modelos de linguagem (LLMs) de analisar significado em linguagem natural e de converter entre comandos em linguagem natural e código de programa cria novas oportunidades para que agentes interajam com as pessoas de forma mais fluida
- O LLM será apenas uma parte do agente, e a maior parte do comportamento do agente consistirá na execução de código padrão e determinístico
- Diferentemente do uso de LLM focado em desenvolvimento, o Oscar não tenta complementar nem substituir o processo de escrita de código
- Em vez disso, a ideia é focar nas partes menos interessantes, como lidar com issues recebidas e relacionar perguntas com a documentação existente
Objetivos do projeto
- Reduzir o esforço de manutenção para resolver issues [resolver nem sempre significa corrigir]
- Reduzir o esforço de manutenção para resolver listas de mudanças (CL) ou pull requests (PR) [resolver nem sempre significa enviar/fazer merge]
- Reduzir o esforço de manutenção para resolver perguntas em fóruns
- Apoiar mais pessoas para que possam se tornar mantenedores produtivos
Abordagem
- Como as tarefas repetitivas da manutenção de código aberto não se limitam a projetos Go, o objetivo é construir uma arquitetura que todos os projetos de software possam reutilizar e expandir
- Até agora, foram identificadas três funcionalidades que serão partes importantes do Oscar:
- Indexar e expor o contexto relevante do projeto durante interações com contribuidores
- Usar linguagem natural para controlar ferramentas determinísticas
- Melhorar em tempo real e rotular/direcionar adequadamente durante ou logo após o envio, por meio da análise de relatórios de issues e de CLs/PRs
Indexação e exposição do contexto relevante do projeto
- Os LLMs podem analisar documentos gerando embeddings, que são vetores unitários de ponto flutuante em alta dimensão com a propriedade de mapear documentos com significado semelhante para vetores que apontam em direções semelhantes
- Combinados com um banco de dados vetorial para buscar vetores semelhantes ao vetor de entrada, os embeddings de LLM oferecem uma forma muito eficaz de indexar todo o contexto de um projeto de código aberto
- O agente protótipo implementa essa funcionalidade e responde a novas issues no repositório Go com uma lista de até 10 links de alta relevância
Uso de linguagem natural para controlar ferramentas determinísticas
- À medida que projetos de código aberto crescem, o número de ferramentas úteis aumenta, e pode ser difícil acompanhar todas elas e lembrar como usar cada uma
- Os LLMs são muito eficazes em converter intenções escritas em linguagem natural em formas executáveis, como código de programa ou chamadas de ferramentas
- Foram feitos experimentos com o Gemini para selecionar e chamar ferramentas disponíveis a fim de atender pedidos em linguagem natural, mas ainda não há nada realmente funcionando
Análise de relatórios de issues e CLs/PRs
- Publicar em issues relacionadas é uma forma limitada de análise, mas há planos de adicionar outros tipos de análise semântica, como identificar issues sobre desempenho e adicionar o rótulo "performance"
- Há planos de explorar se é possível analisar relatórios bem o suficiente para identificar se são necessárias mais informações para torná-los úteis
- Todas essas análises e as interações resultantes funcionam muito melhor quando acontecem logo após o envio do relatório, enquanto quem reportou ainda está disponível e engajado
Protótipo
- O primeiro protótipo para explorar o Oscar se chama Gaby (Go AI bot), roda no rastreador de issues do Go e publica como @gabyhelp
- Até agora, o Gaby indexa o conteúdo de issues do Go no GitHub, indexa a documentação do Go em go.dev e responde a novas issues com links relevantes
- A estrutura do Gaby facilita sua execução com qualquer LLM, camada de armazenamento e banco de dados vetorial, em todo tipo de serviço de hospedagem
Ainda não há comentários.