Table des matières
Auteurs originaux: @Hamelsmu, @ Inc0, @jlewi
Bot étiquette de l'étiquetteInstallez cette application à partir du marché GitHub
Une application GitHub alimentée par l'apprentissage automatique, écrite en python. Une discussion sur la motivation de la création de cette application est décrite dans cet article de blog.
Lorsqu'un problème est ouvert, le bot prévoit si l'étiquette doit être une feature request , bug ou question et applique automatiquement une étiquette le cas échéant. Voici une capture d'écran du bot en action:
Plus d'exemples peuvent être consultés sur la page d'accueil de notre application. Il convient de noter que le bot ne peut appliquer aucune étiquette dans des circonstances où la prédiction est incertaine. Voir la section Avertissement pour plus de mises en garde.
Pour utiliser le code dans ce référentiel, vous devrez enregistrer votre propre application GitHub et installer cette application sur les référentiels souhaités et stocker des secrets d'authentification.
Tout d'abord, parcourez la section Prérequis de ce guide de démarrage, sauf la section "Ruby Programming Language" car nous utiliserons Python à la place comme client qui interface avec l'API GitHub.
Deuxièmement, configurez votre environnement de développement. Assurez-vous de créer un secret Webhook, même si cette étape est facultative.
Ensuite, configurez une base de données Postgres. Vous pouvez le faire gratuitement sur Heroku. Instructions détaillées (volé sans vergogne à partir d'ici):
Enfin, vous devez créer des variables d'environnement pour tous les secrets, qui est décrit ci-dessous.
PRIVATE_KEY : il s'agit de la clé privée que vous utilisez pour vous authentifier en tant qu'application avec l'API GitHub.WEBHOOK_SECRET : Ceci est utilisé pour vérifier que les charges utiles reçues par votre application sont en fait de GitHub. Ceci est décrit ici.DATABASE_URL : Il s'agit de l'URL qui contient les informations de connexion pour votre base de données PostgreSQL, généralement dans le formulaire: postgres://<username>:<password>@<url>:5432/<database_name>APP_ID : Il s'agit d'un identifiant unique qui vous est fourni par GitHub lorsque vous enregistrez votre application.FLASK_ENV : Ceci est généralement défini sur production ou development . Vous voudrez utiliser deployment pour les tests locaux.PORT : Ceci est le port sur lequel votre application servira. Notez que si vous déploiez à Heroku, Heroku remplacera cette variable avec leur propre valeur lors de la création de votre application. Pour le développement local, vous voudrez que cela corresponde au port de Port.APP_URL : Il s'agit de l'URL de la page d'accueil de votre application qui est fournie aux utilisateurs en tant que lien dans les commentaires du problème. Vous pouvez le définir sur une valeur arbitraire pour le développement local.Remarque: Si vous utilisez ZSH, le plugin Dotenv peut être utile pour gérer les variables d'environnement.
Installez les dépendances : installez les exigences.txt dans un environnement virtuel. Si vous utilisez PIPENV, installez les dépendances nécessaires de PipFile.loc en tapant pipenv install à la racine de ce référentiel.
Exécutez l'application FLASK : Exécutez python flask_app/app.py à partir de la racine de ce référentiel. Pour que cela fonctionne, vous devez correctement définir les variables d'environnement comme décrit dans la section Variables d'environnement.
Facultatif - Exécutez l'application en tant que conteneur Docker . Un conteneur Docker qui sert un bot étiquette à problèmes peut être construit avec le bash script/bootstrap commande de commande à partir de la racine de ce référentiel. Ce script construit une image Docker nommée hamelsmu/mlapp , qui est également disponible sur DockerHub. Si vous souhaitez exécuter le conteneur Docker localement pour les tests, vous devez transmettre les variables d'environnement nécessaires au conteneur Docker à l'exécution, ainsi que d'exposer les ports nécessaires pour l'application. Voir la section Références pour plus de ressources sur l'utilisation de Docker.
Les actifs de ce dépôt vous permettent de déployer sur Heroku (plus facile) ou un cluster Kubernetes (plus avancé).
Dans Heroku, les secrets peuvent être transmis en tant que variables de configuration. De plus, cette documentation décrit comment vous pouvez définir des secrets dans Kubernetes. Assurez-vous de définir la variable d'environnement FLASK_ENV en production si vous allez déployer l'application publiquement.
Nous accueillons toutes les formes de contributions. Nous sommes particulièrement intéressés par ce qui suit:
Les auteurs de ce projet souhaitent ajouter les fonctionnalités suivantes dans un avenir proche:
Le code de ce dépôt et le ou les didacticiels associés assument la familiarité avec Docker. Ce billet de blog offre une introduction douce à Docker pour les scientifiques des données.
Besoin d'inspiration pour d'autres produits de données que vous pouvez construire en utilisant l'apprentissage automatique et les ensembles de données GitHub publics? Voir ces exemples:
Excellent cours sur Flask: Harvardx CS50 Web.
MOOCS par Fastai pour l'apprentissage automatique et l'apprentissage en profondeur.
Le bot étiquette des problèmes est à des fins éducatives et de démonstration uniquement. Notre objectif était de fournir un exemple de travail minimal à la communauté avec le moins de complexité possible. Par conséquent, nous pensons que le modèle démontré a une grande place de l'amélioration. En outre, cette application ne fonctionne que sur les référentiels publics et ne fera rien si je ne fera pas d'installation sur un dépôt privé.