Présentation du framework BOT Minette pour Python

Je n'ai pas pu trouver le framework de chatbot standard de facto pour Python, alors j'en ai créé un.

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

5 caractéristiques

1. Déplacez-vous immédiatement

Vous pouvez l'installer avec la commande pip, écrire juste quelques lignes de code et le bot de retour fonctionnera sans aucun paramètre de base de données ou de serveur d'applications.

2. Tous les canaux avec une architecture unifiée

Comprend des adaptateurs pour LINE et Clova. Vous pouvez développer immédiatement les compétences LINE BOT et Clova en ajoutant un code d'initialisation. De plus, la partie implémentée par l'utilisateur n'est pas affectée par la différence de canaux, de sorte que le développement peut se dérouler dans la même procédure pour les deux.

3. La gestion des utilisateurs contextuels et le planificateur de tâches sont des équipements standard

Les sessions (contextes) peuvent être utilisées à travers des remarques pour réaliser des scénarios de dialogue contextuels. De plus, les informations utilisateur sont automatiquement acquises et enregistrées sans que le développeur en soit conscient. De plus, comme il dispose d'un planificateur de tâches pour automatiser le traitement régulier, il peut être complété avec les ressources de l'application BOT sans paramétrer cron ou autre.

4. Aide à l'analyse du langage naturel (analyse morphologique)

Si l'environnement comprend MeCab, la parole de l'utilisateur peut être automatiquement analysée morphologiquement et le résultat peut être reçu. Il prend également en charge Pure Python Janome, et il peut également prendre en charge des services cloud tels que Google Cloud Platform en l'étendant par lui-même, afin que vous puissiez réaliser un dialogue avancé à l'aide de l'analyse du langage naturel dans n'importe quel environnement. Je vais.

5. Structure multi-compétences / multi-personnages

Nous développons et exploitons LINE BOT avec plus de 10 types de compétences (fonctions) appelées Ito BOT, et le savoir-faire cultivé ici se reflète dans l'architecture.

Installation

$ pip install minette

C'est OK avec un seul coup. La dernière version en cours de développement peut être installée à partir de ce qui suit.

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

Créer un BOT de retour Umu

Après avoir démarré le chatbot lui-même, lancez le discours de l'utilisateur et une réponse sera renvoyée.

echo.py


from minette import Minette, EchoDialogService

#Démarrez Minette à l'aide de la partie dialogue Umu-return (EchoDialogService)
bot = Minette(default_dialog_service=EchoDialogService)

#Démarrer le dialogue
while True:
    req = input("user> ")
    res = bot.chat(req)
    for message in res.messages:
        print("minette> " + message.text)
$ python echo.py
user>Bonjour
minette> You said:Bonjour
user>Est-ce que ça marche?
minette> You said:Est-ce que ça marche?

Très facile.

Créez des compétences personnalisées

La prochaine fois, en tant que compétence personnalisée, je créerai un BOT qui lancera deux dés quoi qu'il arrive.

dice.py


import random
from minette import Minette, DialogService


#Pièces interactives personnalisées
class DiceDialogService(DialogService):
    #Processus logique et stockage des résultats dans leur contexte
    def process_request(self, request, context, connection):
        context.data = {
            "dice1": random.randint(1, 6),
            "dice2": random.randint(1, 6)
        }

    #Assembler les données de réponse à l'aide d'informations contextuelles
    def compose_response(self, request, context, connection):
        return "Dice1:{} / Dice2:{}".format(
            str(context.data["dice1"]), str(context.data["dice2"]))


if __name__ == "__main__":
    #Démarrer BOT
    bot = Minette(default_dialog_service=DiceDialogService)
    #Démarrer le dialogue
    while True:
        req = input("user> ")
        res = bot.chat(req)
        for message in res.messages:
            print("minette> " + message.text)

Résultat d'exécution


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

En bref, «process_request» trouve deux nombres aléatoires de 1 à 6 et les stocke dans des données contextuelles avec les clés «dice1» et «dice2», respectivement. compose_response extrait ces valeurs et crée une instruction de réponse.

Je voudrais mettre tout le traitement de ce niveau dans compose_response, mais en séparant la compétence (fonction) et le personnage (personnalité), il est possible de maintenir la maintenabilité même dans un scénario de dialogue compliqué. Nous vous recommandons de les garder séparés.

De plus, en passant DiceDialogService comme argument default_dialog_service dans le processus de génération BOT ( Minette), lorsque BOT est exécuté, le processus sera passé à la partie implémentée cette fois.

Autres échantillons

Veuillez consulter le README sur Github pour un exemple de code du BOT traduit. https://github.com/uezo/minette-python

Architecture de Minette

Pour le développement BOT à l'aide de Minette, vérifions le diagramme d'architecture global pour voir ce que le développeur doit faire spécifiquement.

Architecture

Fondamentalement, le cœur du travail de développement consiste à mettre en œuvre les quatre méthodes suivantes.

--register_intents () Définit la partie dialogue (DialogService) à appeler en fonction de l'intention de parler (intention) --ʻExtract_intent () ʻExtraire les intentions et les entités du contenu vocal --process_request ()Traitement logique de l'application --` compose_response () ʻAssemble le message de réponse

Articles Similaires

Recommended Posts

Présentation du framework BOT Minette pour Python
Lancez le bot Discord Python pendant 24 heures.
Créer un LINE BOT avec Minette pour Python
Créez un Twitter BOT avec le SDK GoogleAppEngine pour Python
Voir python pour la première fois
À quoi sert le trait de soulignement Python (_)?
Commande pour le répertoire courant Python
J'ai essayé de créer un outil d'échafaudage pour le framework Web Python Bottle
MongoDB avec Python pour la première fois
Présentation de la fonction addModuleCleanup / doModuleCleanups de unittest
Pandas du débutant, par le débutant, pour le débutant [Python]
J'ai essayé le framework de test Python Tornado
30/10/2016 else pour Python3> pour:
python [pour moi]
Le moyen le plus rapide pour les débutants de maîtriser Python
[Python] J'ai essayé de remplacer le nom de la fonction par le nom de la fonction
L'histoire selon laquelle le coût d'apprentissage de Python est faible
Création d'un wrapper Python pour l'API Qiita
vprof - J'ai essayé d'utiliser le profileur pour Python
[Python] matplotlib: Formatez le diagramme de votre mémoire
Wagtail est le meilleur CMS pour Python! (Peut-être)
Utilisez Logger avec Python pour le moment
J'ai essayé la programmation python pour la première fois.
Essayez d'utiliser le framework Web Python Tornado Partie 1
Conseils pour accéder à l'API ATND avec Python
Python: préparez un sérialiseur pour l'instance de classe:
[Python] J'ai cherché le plus long Pokémon Shiritori
Traitement d'image? L'histoire du démarrage de Python pour
Utilisez le framework Python "cocotb" pour tester Verilog.
[Python] Prédire le loyer approprié pour les appartements
Code pour vérifier le fonctionnement de Python Matplot lib
Essayez d'utiliser le framework Web Python Tornado Partie 2
Appeler Polly à partir du kit SDK AWS pour Python
Notes de connaissances nécessaires pour comprendre le framework Python
Notes d'apprentissage pour la fonction migrations dans le framework Django (2)
[Recette du formateur] J'ai touché le flacon du framework Python.
Ce que je suis entré dans Python pour la première fois
J'ai essayé Python sur Mac pour la première fois.
Autour de l'installation du framework de gestion de projet Python Trac
Exécutez avec CentOS7 + Apache2.4 + Python3.6 pour le moment
[Python] Mesure et affiche le temps nécessaire au traitement
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 1 ~
HoloViews peut devenir la norme pour les outils de visualisation Python
J'ai essayé python pour la première fois avec heroku
Informations pour contrôler les moteurs avec Python sur RaspberryPi
Electron est la meilleure solution pour le développement multi-plateforme de Python
Notes d'apprentissage pour la fonction migrations dans le framework Django (3)
Programme Python qui recherche le même nom de fichier
[Pour jouer] Essayez de faire de Yuma un robot LINE (Python)
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 2 ~
Notes d'apprentissage pour la fonction migrations dans le framework Django (1)
mémo python (pour moi-même): À propos de l'environnement de développement virtualenv
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 3 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 4 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 5 ~
À propos de Python for loop
Trouvez le maximum de Python
Framework Web Django Python
Bases de Python ② pour déclaration