Einführung in das BOT-Framework Minette für Python

Ich konnte das De-facto-Standard-Chatbot-Framework für Python nicht finden, also habe ich eines erstellt.

Minette for Python https://github.com/uezo/minette-python

5 Funktionen

1. Bewegen Sie sich sofort

Sie können es mit dem Befehl pip installieren, nur wenige Codezeilen schreiben und der Bot funktioniert ohne Datenbank- oder Anwendungsservereinstellungen.

2. Alle Kanäle mit einer einheitlichen Architektur

Enthält Adapter für LINE und Clova. Sie können LINE BOT- und Clova-Fähigkeiten sofort entwickeln, indem Sie Initialisierungscode hinzufügen. Da der vom Benutzer implementierte Teil nicht von den unterschiedlichen Kanälen betroffen ist, kann die Entwicklung für beide nach demselben Verfahren erfolgen.

3. Kontextbenutzerverwaltung und Aufgabenplanung sind Standardausrüstung

Sitzungen (Kontexte) können kommentarübergreifend verwendet werden, um kontextsensitive Dialogszenarien zu realisieren. Darüber hinaus werden Benutzerinformationen automatisch erfasst und gespeichert, ohne dass der Entwickler davon Kenntnis hat. Da es über einen Taskplaner zur Automatisierung der regulären Verarbeitung verfügt, kann es außerdem mit den Ressourcen der BOT-Anwendung abgeschlossen werden, ohne cron oder ähnliches festzulegen.

4. Unterstützung der Analyse natürlicher Sprache (morphologische Analyse)

Wenn die Umgebung MeCab enthält, kann die Sprache des Benutzers automatisch morphologisch analysiert und das Ergebnis empfangen werden. Es unterstützt auch Pure Python Janome und Cloud-Dienste wie Google Cloud Platform, indem es selbst erweitert wird, sodass Sie mithilfe der Analyse natürlicher Sprache in jeder Umgebung einen erweiterten Dialog realisieren können. Ich werde.

5. Multi-Skill / Multi-Charakter-Struktur

Wir entwickeln und betreiben einen LINE BOT namens Ito BOT, der über mehr als 10 Arten von Fähigkeiten (Funktionen) verfügt. Das hier gepflegte Know-how spiegelt sich in der Architektur wider.

Installation

$ pip install minette

Dies ist mit einem Schuss in Ordnung. Die neueste Version in der Entwicklung kann wie folgt installiert werden.

$ pip install git+https://github.com/uezo/minette-python

Erstellen eines Umu-Return-BOT

Nachdem Sie den Chatbot selbst gestartet haben, werfen Sie die Rede des Benutzers und eine Antwort wird zurückgegeben.

echo.py


from minette import Minette, EchoDialogService

#Starten Sie Minette mit dem Umu-Return-Dialogteil (EchoDialogService).
bot = Minette(default_dialog_service=EchoDialogService)

#Dialog starten
while True:
    req = input("user> ")
    res = bot.chat(req)
    for message in res.messages:
        print("minette> " + message.text)
$ python echo.py
user>Hallo
minette> You said:Hallo
user>Funktioniert es?
minette> You said:Funktioniert es?

Sehr leicht.

Erstellen Sie benutzerdefinierte Fähigkeiten

Das nächste Mal werde ich als benutzerdefinierte Fertigkeit einen BOT erstellen, der zwei Würfel wirft, egal was passiert.

dice.py


import random
from minette import Minette, DialogService


#Benutzerdefinierte interaktive Teile
class DiceDialogService(DialogService):
    #Verarbeiten Sie die Logik und speichern Sie die Ergebnisse im Kontext
    def process_request(self, request, context, connection):
        context.data = {
            "dice1": random.randint(1, 6),
            "dice2": random.randint(1, 6)
        }

    #Stellen Sie Antwortdaten mithilfe von Kontextinformationen zusammen
    def compose_response(self, request, context, connection):
        return "Dice1:{} / Dice2:{}".format(
            str(context.data["dice1"]), str(context.data["dice2"]))


if __name__ == "__main__":
    #Starten Sie BOT
    bot = Minette(default_dialog_service=DiceDialogService)
    #Dialog starten
    while True:
        req = input("user> ")
        res = bot.chat(req)
        for message in res.messages:
            print("minette> " + message.text)

Ausführungsergebnis


$ python dice.py
user> test
minette> Dice1:3 / Dice2:5
user> d
minette> Dice1:4 / Dice2:3

Kurz gesagt, process_request findet zwei Zufallszahlen von 1 bis 6 und speichert sie in context.data mit den Schlüsseln dice1 bzw. dice2. compose_response extrahiert diese Werte und erstellt eine Antwortanweisung.

Ich möchte die gesamte Verarbeitung dieses Levels in "compose_response" einfügen, aber durch die Trennung von Fähigkeit (Funktion) und Charakter (Persönlichkeit) ist es möglich, die Wartbarkeit auch in einem komplizierten Dialogszenario aufrechtzuerhalten. Wir empfehlen, dass Sie sie getrennt aufbewahren.

Durch Übergeben von "DiceDialogService" als Argument "default_dialog_service" im BOT-Generierungsprozess ("Minette") wird der Prozess bei der Ausführung von BOT an den diesmal implementierten Teil übergeben.

Andere Proben

In der README-Datei auf Github finden Sie ein Codebeispiel für den übersetzten BOT. https://github.com/uezo/minette-python

Minette Architektur

Überprüfen Sie für die BOT-Entwicklung mit Minette das allgemeine Architekturdiagramm, um festzustellen, was der Entwickler speziell tun sollte.

Architecture

Grundsätzlich besteht der Kern der Entwicklungsarbeit darin, die folgenden vier Methoden zu implementieren.

--register_intents () Legt den Dialogteil (DialogService) fest, der entsprechend der Sprechabsicht (Absicht) aufgerufen werden soll. --extract_intent () Extrahiert Absichten und Entitäten aus dem Sprachinhalt --process_request ()Anwendungslogikverarbeitung --compose_response ()Stellen Sie die Antwortnachricht zusammen

Zusammenhängende Posts

Recommended Posts

Einführung in das BOT-Framework Minette für Python
Starten Sie den Discord Python-Bot 24 Stunden lang.
Erstellen Sie mit Minette für Python einen LINE BOT
Erstellen Sie einen Twitter-BOT mit dem GoogleAppEngine SDK für Python
Siehe Python zum ersten Mal
Wofür ist der Python-Unterstrich (_)?
Befehl für das aktuelle Verzeichnis Python
Ich habe versucht, ein Gerüstwerkzeug für Python Web Framework Bottle zu erstellen
MongoDB mit Python zum ersten Mal
Einführung der Funktion addModuleCleanup / doModuleCleanups von unittest
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
Ich habe das Python Tornado Testing Framework ausprobiert
2016-10-30 sonst für Python3> für:
Python [für mich]
Der schnellste Weg für Anfänger, um Python zu beherrschen
[Python] Ich habe versucht, den Funktionsnamen durch den Funktionsnamen zu ersetzen
Die Geschichte, dass die Lernkosten von Python niedrig sind
Erstellt einen Python-Wrapper für die Qiita-API
vprof - Ich habe versucht, den Profiler für Python zu verwenden
[Python] matplotlib: Formatieren Sie das Diagramm für Ihre Dissertation
Bachstelze ist das beste CMS für Python! (Vielleicht)
Verwenden Sie vorerst Logger mit Python
Ich habe zum ersten Mal versucht, Python zu programmieren.
Versuchen Sie es mit dem Python-Webframework Tornado Part 1
Tipps zum Erreichen der ATND-API mit Python
Python: Bereiten Sie einen Serializer für die Klasseninstanz vor:
[Python] Ich habe nach dem längsten Pokemon Shiritori gesucht
Bildverarbeitung? Die Geschichte, Python für zu starten
Verwenden Sie das Python-Framework "cocotb", um Verilog zu testen.
[Python] Prognostizieren Sie die richtige Miete für Wohnungen
Code zum Überprüfen des Betriebs von Python Matplot lib
Versuchen Sie es mit dem Python-Webframework Tornado Part 2
Rufen Sie Polly aus dem AWS SDK für Python auf
Wissensnotizen erforderlich, um das Python-Framework zu verstehen
Lernnotizen für die Migrationsfunktion im Django-Framework (2)
[Rezept des Trainers] Ich habe die Flasche des Python-Frameworks berührt.
Was ich zum ersten Mal in Python bekommen habe
Ich habe Python zum ersten Mal auf dem Mac ausprobiert.
Rund um die Installation des Python-Projektmanagement-Frameworks Trac
Führen Sie es vorerst mit CentOS7 + Apache2.4 + Python3.6 aus
[Python] Misst und zeigt die für die Verarbeitung erforderliche Zeit an
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 1 ~
HoloViews werden möglicherweise zum Standard für Python-Visualisierungstools
Ich habe Python zum ersten Mal mit Heroku ausprobiert
Informationen zur Steuerung von Motoren mit Python auf RaspberryPi
Electron ist die beste Lösung für die plattformübergreifende Entwicklung von Python
Lernnotizen für die Migrationsfunktion im Django-Framework (3)
Python-Programm, das nach demselben Dateinamen sucht
[Zum Spielen] Versuche Yuma zu einem LINE Bot zu machen (Python)
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 2 ~
Lernnotizen für die Migrationsfunktion im Django-Framework (1)
Python-Memo (für mich): Über die Entwicklungsumgebung virtualenv
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 3 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 4 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 5 ~
Über Python für Schleife
Finden Sie das maximale Python
Django Python Web Framework
Python-Grundlagen ② für Anweisung