Problème: Les responsables open source passent beaucoup de temps à gérer les problèmes et les demandes de tirage en double / liées (doppelgänger)
Solution: Doppelgänger compare les problèmes / PR récemment soumis à ceux existants pour signaler automatiquement les problèmes / PRS en double / liés (doppelgänger)
Sujets: Vector DB, github, open-source, recherche d'intégration, chiffon, scores de similitude
Cette application est une application GitHub qui compare automatiquement les problèmes nouvellement ouverts avec les problèmes existants, la fermeture et les commentaires des problèmes très similaires pour réduire la duplication. De plus, il commente des commentaires sur les PR en fonction du titre et de la description des points à considérer.
DoppelGanger Documentation
Chaque issue['title'] et issue['body'] est converti en représentation vectorielle en utilisant le minimm-l6-v2 .
Chaque vecteur est persisté dans ChromAdB et effectue une recherche de similitude en utilisant la recherche de similitude de cosinus intégrée de ChromAdb. Parallèlement à chaque vecteur, est issue_id et issue['title'] stocké à l'aide de l'argument metadata de ChromAdb.
SIMILARITY_THRESHOLD (c'est-à-dire la distance d dans laquelle nous considérons "similaire") est configurable et peut être réglé sur n'importe quelle décimale entre 0 et 1 [1].
Doppelganger fermera tout problème lorsque la distance du cosinus d entre le problème nouvellement soumis et le problème le plus similaire est supérieur à ce seuil. Sinon, si le problème nouvellement soumis est supérieur à (Similarty_Threshold * 0.5), il laissera un commentaire utile indiquant le problème le plus similaire / connexe.
[1] Distance du cosinus
Les problèmes et les demandes de traction sont stockés dans les collections ChromAdB par référentiel.
Cloner ce référentiel:
git clone https://github.com/dannyl1u/doppelganger.git
cd doppelganger
Installez les dépendances:
pip install -r requirements.txt
Pour créer un nouveau fichier .env , exécutez la commande suivante dans votre terminal:
cp .env.example .env Ouvrez le fichier .env nouvellement créé et mettez à jour les variables suivantes avec vos propres valeurs:
* APP_ID : remplacez your_app_id_here par votre ID d'application réel.
* WEBHOOK_SECRET : remplacez your_webhook_secret_here par votre secret webhook réel.
* OLLAMA_MODEL : Remplacez your_chosen_llm_model_here par le modèle LLM choisi (par exemple "llama3.2"). Remarque: il doit s'agir d'un modèle pris en charge sur Olllay (voir: https://ollama.com/library pour les modèles pris en charge)
* NGROK_DOMAIN : Remplacez your_ngrok_domain_here par votre domaine ngrok si vous en avez un 4. Placez la clé privée téléchargée dans la racine du projet et le nomz rsa.pem .
Démarrez l'application Flask:
python3 app.pyL'application commencera à fonctionner sur http: // localhost: 4000
Nous utiliserons Ngrok pour sa simplicité
Option 1: URL publique générée dans une nouvelle fenêtre de terminal, démarrez NGROK pour créer un tunnel sécurisé à votre serveur local:
ngrok http 4000Ngrok générera une URL publique (par exemple, https://abc123.ngrok.io)
Ajouter /webhook à l'URL, par exemple https://abc123.ngrok.io -> https://abc123.ngrok.io/webhook
Dans une autre fenêtre de terminal, démarrez Olllama
ollama run < an OLLAMA model here >Option 2: Utilisation du script shell avec votre propre domaine Ngrok
Assurez-vous que les variables d'environnement sont toutes définies.
./run-dev.shUne fois installé, l'application sera automatiquement:
Vous pouvez ajuster le seuil de similitude en modifiant la variable SIMILARITY_THRESHOLD dans le script. La valeur par défaut est définie sur 0,5.
rsa.pem est présent et correctement formaté. Les contributions sont les bienvenues! N'hésitez pas à soumettre une demande de traction.
Ce projet est autorisé sous la licence du MIT.