Blog

Goodbye LUIS (Microsoft Language Understanding Service)   GOODBYE!

But MSFT was kind enough to have a replacement, CLU, which is a great improvement

Brad Crain

Microsoft Language Understanding (LUIS) is a natural language processing (NLP) service that allows developers to build custom language models for their applications. LUIS only provides the intelligence to understand the input text for a client application - such as a chatbot - and doesn't perform any actions.

LUIS has worked well for our bot solution but unfortunately Microsoft is retiring LUIS.  The replacement is Microsoft’s Azure AI Language service "Conversational language understanding (CLU) ", a cloud-based service that provides Natural Language Processing (NLP) features allowing users to build a custom natural language understanding model for predicting intents and entities in conversational utterances.  Microsoft states that LUIS required more examples to generalize certain concepts in intents and entities, while CLU's more advanced machine learning reduces the burden on customers by requiring significantly less data. If this is indeed true that will be a needed improvement. In this blog post, I will provide an overview of my work using LUIS and later posts will discuss the results of the migration from LUIS to CLU, as well as my work with OpenAI.

I started using LUIS years ago when building targeted chatbots - Insurance quoting & enrolling chatbots, COVID vaccine chatbots - which I deployed on websites and Facebook.  For our bot solution – which included a bot authoring product and a bot runtime - I used LUIS for NLP, Microsoft Bot Framework as an enabler for the bot runtime, Cosmos DB (formerly known as Document DB) for storage, and Node.js as my platform. The solution was deployed on Azure and still is up-and-chatting/running.

eBotSpot architecture overview

Developers train their own models using LUIS's machine learning capabilities. With LUIS, an intent represents the user’s intention, usually a task or action they want to perform and hence are requesting of the chatbot. User intents are expressed through an utterance (written text or voice).  Within an utterance there may be an entity that is specific to the utterance/request such as “What is the weather now in Seattle?” with Seattle as an entity of type Location. I used LUIS’s admin feature to define the intents I needed, specified different entities and phrase and then provided numerous examples utterances. Using the LUIS application was easy, however, it is time consuming to use as one needs to input numerous examples utterances to make it reliable.  Microsoft did offer tools to ingest content so that would certainly be a time saver (note – I didn’t use the tools)

Using LUIS to define example utterances for a specific intent

My LUIS experience was slightly better when Microsoft started adding prebuilt language models – think of a list of populated intents with corresponding utterances, entities and phrases lists for specific domains --- as this saved a lot of time when I had a conversation scenario that was covered by one of these prebuilt domains.  Unfortunately, the number of prebuilt language models was limited.


Once my model was trained-up using LUIS it was then accessible in the bot runtime via an API call.  The API response time was very good.   The chatbot authoring application was used to specify how the chatbot responded to any recognized intents.

eBotSpot authoring application – defining chatbot responses to user intents.

Using Microsoft’s Bot Framework was chasing a moving target as the functionality was changing quite rapidly, isn’t that always the case?!  I was able to successfully use all of these technologies – LUIS, Bot Framework, and more – and the chatbots are still running reliably in Production on Azure.

LUIS has a more capabilities than described in this Post. The pricing was very reasonable – based on usage only - with no monthly commitment. Also, MSFT provides a low to no cost solution for Cosmos DB which is much appreciated by the developer community. 

LUIS will be retired in Oct 2025 so anyone using LUIS for AI (by the way, no new LUIS resources can be created as of April 2023) needs to migrate to a different solution fairly soon, this includes me as well. 

In summary, LUIS was trained to identify user utterances that match my set of intents, the eBotSpot authoring product was used to specify how the chatbot would respond to any of these intents, and the eBotSpot multi-tenant Azure deployed Bot runtime leveraged Microsoft’s Bot Framework and call the LUIS APIs as needed.  Shortly I will be migrating our LUIS project to Microsoft’s new Conversational Language understanding feature which is an offering of the Azure AI Service.

OpenAI's solution does not require labeled data like LUIS does but instead requires developers to fine-tune the pre-trained model on their specific use case. More on these OpenAI topics in later posts.