pytlas, une librairie python pour créer son propre assistant
Amazon, Google, Apple et compagnie l’ont bien compris et ont donc sortis chacun leur système. Des systèmes qui sont pour la plupart fermés et dépendants de leurs propres écosystèmes.
Hors je ne sais pas si vous êtes comme moi, mais si je choisi de placer un assistant au sein de ma maison, ce n’est pas pour qu’il communique à son gré avec les serveurs de grandes entreprises sans que je puisse vérifier ce qui se trame.
Et c’est pour cela que j’ai créé pytlas !
En quelques mots
Il s’agit d’une librairie python open-source totalement déconnectée que vous pouvez intégrer dans vos programmes et qui va vous permettre à partir de langage naturel, d’exécuter du code et donc des actions aussi variées que vous le souhaitez.
Pour ce faire, pytlas s’appuie sur des librairies python fantastiques :
- snips/nlu : permet de traduire du langage naturel en structure de données et d’extraire du sens des phrases une fois entraînée correctement
- transitions : permet de gérer la conversation au travers d’une machine à états
- pychatl : permet de définir plus simplement les jeux d’entraînement pour la partie compréhension
Le code est simple à comprendre, testé et facilement extensible.
Le fonctionnement
Sans rentrer dans les considérations techniques, c’est au final assez simple.
Voici ce qui se passe lorsque l’utilisateur demande le traitement de la phrase va t-il faire beau demain sur Paris ? :
- L’utilisateur envoie le texte va t-il faire beau demain sur Paris
- L’interpréteur traite cette phrase et ressort l’intention
get_forecast
avec les paramètresdate = 2018-09-20
etlieu = Paris
- L’agent, selon l’état actuel de la conversation, décide de ce qui sera fait avec ce nouveau message. Ici étant au repos, il passe directement à l’étape suivante
- Le skill enregistré pour l’intention
get_forecast
est appelé avec un objet requête contenant entre autre les paramètres extraits par l’interpréteur - Ce skill (notre code python donc) peut à tout moment demander à l’agent de présenter du contenu à l’utilisateur ou lui demander plus de précisions sur sa requête, l’API étant extrémement simple à utiliser
- La réponse est donnée à l’utilisateur
Il s’agit ici d’un cas très simple mais sachez que pytlas vous permet aussi de gérer des cas plus complexes lorsqu’il manque une information par exemple.
Prenons un autre exemple. Je demande à pytlas d’allumer la lumière (car j’ai configuré un skill qui me le permet). N’ayant pas précisé pour quelle(s) pièce(s), le skill me demande de préciser mes propos.
Je répond alors dans la cuisine et le salon et l’agent, étant dans un état particulier d’interrogation, va extraire les pièces cuisine
et salon
pour les envoyer au skill qui saura alors qu’il doit allumer les lumières de la cuisine et du salon.
Si vous souhaitez avoir un exemple du code requis pour un tel exemple, je vous invite à jeter un coup d’œil du côté des exemples très simples fournis.
La suite
Il ne s’agit pas (encore) d’un système complet. En effet pytlas n’est qu’une simple librairie qui parse du texte, exécute des actions et retourne du contenu à l’utilisateur, et le restera.
En revanche, je compte m’appuyer sur cette librairie pour proposer une console web permettant d’interagir avec son assistant ainsi q’un pod avec lequel on pourra communiquer de la même manière qu’avec un Google Home ou un Alexa.