I worked in the eClub Summer Camp this summer again. My task was to develop system allowing creation of chatbots and use it to make chatbot helping customers to choose their new smartphone. The result is Alquist. This is blog, which I wrote with my colleague Jakub Konrád and my boss Jan Šedivý:
Intelligent chat bots are hot and we have decided to design our own during the eClub Summer Camp 2016. Bots are streamlining the user’s interaction to a messenger type of applications creating the same UI for many apps. They relieve users from the maze of id/passwords and downloading app for each service. The users just log in to their preferred messaging app, load the bot’s profile and start talking to it. Bots can also be huge money savers for companies. They don’t have to build expensive apps for their business, they just integrate bot to a messaging service and communicate and offer their services that way.
Our goal is to simplify bots development. With our framework a developer does not have to write the whole bot each time from scratch. The Alquist dialogue manager (ADM) is our solution. The design does not provide an interactive UI. The Alquist framework relies on standards such as YAML, JSON leaving large space for customization. We also expect that the NLU models will be developed from larger data sets. For NLU text processing of larger set are the standards much more suitable. The initial assumption is also to run the Alquist DM on premise. I will explain, why is it special and why should you care.
The first important feature is versatility. The dialogue is defined by nodes in the YAML file. The ADM executes dialogue by walking through nodes and jumps between them as bot’s creator defines. In each dialog note the developer has a choice of procedures showing a text, NLU processing, saving data into a context (that is how we call bot’s memory), comparing data from context or showing predefined answers as buttons etc. You can mix all of these nodes or add some of your own, creating a unique bot.
We also implemented a change of intent during the dialogue capability. What does it mean? If you have a bot talking about weather and news, you can change between these two topics anytime. During the news conversation, you can change the topic to weather by a single sentence with “weather” intent. Bot’s creator can define how intent triggers in which state will be processed to make step to the next node. This feature is great for more advanced projects.
In order for the bot to understand what you are saying, it uses natural language understanding (NLU). We currently use Alquist’s NLU implemented by Wit.ai. However, this is only a tempory solution we are developing our own tools. The main reason is to support other languages.
We are constantly developing, improving and adding new features into Alquist. Alquist is an open source project. You can view the whole Alquist’s code and documentation on Github https://github.com/AlquistManager. Don’t forget to try the actual demo at https://alquistmanager.github.io/alquist-client/?e=https://alquist.herokuapp.com.
Btw. Alquist is named after the character from R.U.R. by Karel Čapek.
Blog post was originally published on https://eclubprague.com/blog/alquist-dialogue-manager/.