julienleicher

• 3 minutes de lecture

pytlas, une librairie python pour créer son propre assistant

Depuis que je suis développeur, et je ne pense pas être le seul dans ce cas, j’ai toujours rêvé d’avoir un assistant capable de me comprendre, m’aider dans les tâches quotidiennes et m’informer quand j’en ai besoin.

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.

Bannière pytlas

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 ? :

Traitement d'une commande par pytlas

  1. L’utilisateur envoie le texte va t-il faire beau demain sur Paris
  2. L’interpréteur traite cette phrase et ressort l’intention get_forecast avec les paramètres date = 2018-09-20 et lieu = Paris
  3. 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
  4. 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
  5. 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
  6. 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 demander à l'interpréteur d'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.