Problema: Os mantenedores de código aberto gastam muito tempo gerenciando problemas duplicados/relacionados (doppelgänger) e solicitações de puxar
Solução: Doppelgänger compara questões/PRs submetidos com os existentes para sinalizar automaticamente duplicados/relacionados (doppelgänger)/PRS
Tópicos: DB de vetor, github, código aberto, pesquisa de incorporação, pano, pontuações de similaridade
Este aplicativo é um aplicativo do GitHub que compara automaticamente problemas recém -abertos com os existentes, fechando e comentando problemas altamente semelhantes para reduzir a duplicação. Além disso, ele comenta o feedback sobre os PRs com base no título e na descrição dos pontos a serem considerados.
Documentação Doppelganger
Cada issue['title'] e issue['body'] são convertidos em representação vetorial usando o minilm-l6-v2 .
Cada vetor é persistido no Chromadb e realiza pesquisa de similaridade usando a pesquisa de similaridade de cosseno interno do Chromadb. Juntamente com cada vetor, é issue_id e issue['title'] armazenados usando o argumento metadata do Chromadb.
SIMILARITY_THRESHOLD (ou seja, a distância d na qual consideramos "semelhante") é configurável e pode ser definida como qualquer decimal entre 0 e 1 [1].
O doppelganger fechará qualquer problema quando a distância do cosseno d entre a questão recém -enviada e o problema mais semelhante for maior que esse limite. Caso contrário, se a emissão recém -enviada for maior que (Similarty_threshold*0.5), deixará um comentário útil indicando o problema mais semelhante/relacionado.
[1] distância cosseno
Questões e solicitações de tração são armazenadas em coleções Chromadb por repositório.
Clone este repositório:
git clone https://github.com/dannyl1u/doppelganger.git
cd doppelganger
Instale dependências:
pip install -r requirements.txt
Para criar um novo arquivo .env , execute o seguinte comando em seu terminal:
cp .env.example .env Abra o arquivo .env recém -criado e atualize as seguintes variáveis com seus próprios valores:
* APP_ID : Substitua your_app_id_here pelo seu ID do aplicativo real.
* WEBHOOK_SECRET : Substitua your_webhook_secret_here pelo seu segredo real.
* OLLAMA_MODEL : Substitua your_chosen_llm_model_here pelo modelo LLM escolhido (por exemplo, "llama3.2"). Nota: Deve ser um modelo suportado por Ollama (consulte: https://ollama.com/library para modelos suportados)
* NGROK_DOMAIN : Substitua your_ngrok_domain_here pelo seu domínio NGROK Se você tiver um 4. Coloque a chave privada baixada na raiz do projeto e nomeie rsa.pem .
Inicie o aplicativo Flask:
python3 app.pyO aplicativo começará a ser executado em http: // localhost: 4000
Vamos usar o NGrok por sua simplicidade
Opção 1: Gerado URL público em uma nova janela do terminal, inicie o NGROK para criar um túnel seguro para o servidor local:
ngrok http 4000NGrok gerará um URL público (por exemplo, https://abc123.ngrok.io)
Anexar /webhook ao URL, por exemplo, https://abc123.ngrok.io -> https://abc123.ngrok.io/webhook
Em outra janela do terminal, comece o ollama
ollama run < an OLLAMA model here >Opção 2: Usando script de shell com seu próprio domínio NGROK
Verifique se as variáveis de ambiente estão todas definidas.
./run-dev.shDepois de instalado, o aplicativo será automaticamente:
Você pode ajustar o limite de similaridade modificando a variável SIMILARITY_THRESHOLD no script. O padrão é definido como 0,5.
rsa.pem está presente e formatado corretamente. As contribuições são bem -vindas! Sinta -se à vontade para enviar uma solicitação de tração.
Este projeto está licenciado sob a licença do MIT.