Skip to main content

Conversational AI using only natural language

· 4 min read
Razvan Dinu

How do you think about designing and implementing a conversational AI bot? Let's say you have your sample dialogs from the Wizard of Woz simulations and have identified the happy paths. And let's take the initial greeting and write down our thought process.


First, we should define how the user expresses a greeting, e.g., "hi", "Hello!" or "Hey there!". Next, we should define the conversation flow, i.e. the bot should express greetings as well, e.g., "Hello there!", and then ask the user how they feel, e.g., "How are you feeling today?". When the user is feeling good, e.g., "I'm feeling good" or "good", the bot should express a positive emotion too, e.g., "Great!". Otherwise, when the user expresses feeling bad, the bot should express empathy, e.g., "I'm sorry to hear that...".


In an ideal world, the above description should be enough for a "smart" system to build the bot, or at least the greeting part. Powerful models like GPT-3, take precisely this kind of input and follow the instructions, but we have limited control over how they behave. So, let's try something else.

In conversation design, there is a technique called Jenga. The goal is to take out as many words as possible without altering the meaning. Let's apply this technique to the paragraph above. We've greyed out the unnecessary words and highlighted, with various colors, certain words, depending on the role they have:


First, we should define how the user expresses a greeting, e.g., "hi" , "Hello!" or "Hey there!" . Next, we should define the conversation flow , i.e., the bot should express greetings as well , e.g., "Hello there!" , and then ask the user how they feel ,e.g., "How are you feeling today?" . When the user is feeling good , e.g., "I'm feeling good" or "good" , the bot should express a positive emotion too ,e.g., "Great!" . Otherwise, when the user expresses feeling bad , the bot should express empathy ,e.g., "I'm sorry to hear that..." .

Next, let's rearrange these words in a slightly different way:

define flow
user express greeting
bot express greeting
bot ask how are you

when user express feeling good
bot express positive emotion
else when user express feeling bad
bot express empathy

define user express greeting
"hi"
"Hello!"
"Hey there!"

define user express feeling good
"I'm feeling good"
"good"

define user express feeling bad
"Not so good..."

define bot express greeting
"Hey there!"

define bot ask how are you
"How are you feeling today?"

define bot express positive emotion
"Great!"

define bot express empathy
"I'm sorry to hear that..."

Et voilà! The above is a perfectly valid Colang model which can be executed and deployed live. You can use the chat on the bottom right to give it a try.

Both the initial paragraph and the colang model have exactly 88 words, so we could argue that the effort of writing a colang model is similar to writing the natural way we would think about the bot in the first place. The ultimate goal for Colang is not to be yet another language that you have to learn, but rather a standardized way of structuring a conversational AI model using plain natural language.

How do you think about your conversational AI bots when you start designing them?