Inhaltsverzeichnis
Originalautoren: @hamelsmu, @inc0, @jlewi
Ausgabeetikett BotInstallieren Sie diese App vom Github -Marktplatz
Eine GitHub -App, die von maschinellem Lernen betrieben wird, geschrieben in Python. In diesem Blog -Beitrag wird eine Diskussion über die Motivation zum Aufbau dieser App beschrieben.
Wenn ein Problem geöffnet wird, prognostiziert der Bot, ob das Etikett eine: feature request , bug oder question sein sollte, und wendet gegebenenfalls eine Beschriftung automatisch an. Hier ist ein Screenshot des Bots in Aktion:
Weitere Beispiele können auf der Homepage unserer App angezeigt werden. Es ist zu beachten, dass der Bot unter Umständen, unter denen die Vorhersage ungewiss ist, keine Etikett anwendet. Weitere Einschränkungen finden Sie im Abschnitt Haftungsausschlüsse.
Um den Code in diesem Repository zu verwenden, müssen Sie eine eigene GitHub -App registrieren und diese App in Ihren gewünschten Repositorys installieren und Authentifizierungsgeheimnisse speichern.
Gehen Sie zunächst durch den Abschnitt Voraussetzungen dieses Abschnitts mit dem Abschnitt "Erste Schritte" mit Ausnahme des Abschnitts "Ruby -Programmiersprache", da wir Python stattdessen als Client verwenden werden, der sich mit der Github -API befasst.
Zweitens stellen Sie Ihre Entwicklungsumgebung ein. Stellen Sie sicher, dass Sie ein Webhook -Geheimnis erstellen, obwohl dieser Schritt optional ist.
Richten Sie als nächstes eine Postgres -Datenbank ein. Sie können dies kostenlos auf Heroku tun. Detaillierte Anweisungen (von hier aus schamlos gestohlen):
Schließlich müssen Sie Umgebungsvariablen für alle nachstehend beschriebenen Geheimnisse erstellen.
PRIVATE_KEY : Dies ist der private Schlüssel, mit dem Sie sich als App mit der Github -API authentifizieren.WEBHOOK_SECRET : Dies wird verwendet, um zu überprüfen, ob von Ihrer App empfangene Nutzlasten tatsächlich von GitHub stammen. Dies wird hier beschrieben.DATABASE_URL : Dies ist die URL, die die Anmeldeinformationen für Ihre PostgreSQL -Datenbank enthält, normalerweise im Formular: postgres://<username>:<password>@<url>:5432/<database_name>APP_ID : Dies ist eine eindeutige Kennung, die Sie von GitHub zur Registrierung Ihrer App zur Verfügung gestellt haben.FLASK_ENV : Dies wird normalerweise entweder auf production oder development eingestellt. Sie möchten deployment für lokale Tests verwenden.PORT : Dies ist der Port, an dem Ihre App dient. Beachten Sie, dass Heroku diese Variable beim Erstellen Ihrer App mit ihrem eigenen Wert überschreibt, wenn Sie nach Heroku einsetzen. Für die lokale Entwicklung möchten Sie, dass dies dem Port Smee entspricht.APP_URL : Dies ist die URL für die Homepage Ihrer App, die den Benutzern als Link in Problemkommentaren zur Verfügung gestellt wird. Sie können dies auf einen willkürlichen Wert für die lokale Entwicklung setzen.Hinweis: Wenn Sie ZSH verwenden, kann das DOTenV -Plugin für die Verwaltung von Umgebungsvariablen nützlich sein.
Installieren Sie Abhängigkeiten : Installieren Sie die Anforderungen.txt in eine virtuelle Umgebung. Wenn Sie Pipenv verwenden, installieren Sie die erforderlichen Abhängigkeiten von PipFile.lock, indem Sie pipenv install im Root dieses Repositorys eingeben.
Führen Sie die Flask -App aus : Führen Sie python flask_app/app.py vom Stamm dieses Repositorys aus. Damit dies funktioniert, müssen Sie die Umgebungsvariablen wie im Abschnitt Umgebungsvariablen korrekt einstellen.
Optional - App als Docker -Container ausführen . Ein Docker-Container, der Ausgabe-Label-Bot dient, kann mit dem Befehls- bash script/bootstrap aus dem Stamm dieses Repositorys erstellt werden. Dieses Skript erstellt ein Docker -Bild mit dem Namen hamelsmu/mlapp , das auch auf DockerHub verfügbar ist. Wenn Sie den Docker -Container zum Testen lokal ausführen möchten, müssen Sie die erforderlichen Umgebungsvariablen zur Laufzeit an den Docker -Container weitergeben und die erforderlichen Ports für die App freilegen. Weitere Ressourcen zur Verwendung von Docker finden Sie im Abschnitt Referenzen.
Mit den Vermögenswerten in diesem Repo können Sie sich für Heroku (einfacher) oder einen Kubernetes -Cluster (fortgeschrittener) einsetzen.
In Heroku können Geheimnisse als Konfigurationsvariablen übergeben werden. Darüber hinaus beschreibt diese Dokumentation, wie Sie Geheimnisse in Kubernetes festlegen können. Stellen Sie sicher, dass Sie die Umgebungsvariable FLASK_ENV in production setzen, wenn Sie die App öffentlich bereitstellen möchten.
Wir begrüßen alle Formen von Beiträgen. Wir interessieren uns besonders für Folgendes:
Die Autoren dieses Projekts sind daran interessiert, in naher Zukunft die folgenden Funktionen hinzuzufügen:
Der Code in diesem Repo und zugehörigen Tutorial (en) vertraut mit Docker vertraut. Dieser Blog -Beitrag bietet Docker eine sanfte Einführung für Datenwissenschaftler.
Benötigen Sie Inspiration für andere Datenprodukte, die Sie mit maschinellem Lernen und öffentlichen Github -Datensätzen erstellen können? Siehe folgende Beispiele:
Ausgezeichneter Kurs auf Flask: Harvardx CS50 Web.
MOOCs von Fastai für maschinelles Lernen und tiefes Lernen.
Issue-Label Bot dient nur für Bildungs- und Demonstrationszwecke. Unser Ziel war es, der Community ein minimales Beispiel für die Gemeinschaft mit der geringsten Komplexität wie möglich zu geben. Daher glauben wir, dass das demonstrierte Modell einen großartigen Raum für die Verbesserung hat. Darüber hinaus arbeitet diese App nur in öffentlichen Repositorys und wird nichts tun, wenn er auf einem privaten Repo installiert wird.