May 25th, 2018

Using AI and Bots as an underpinning for modern UI

Developer Support
Cloud Solution Architects

In this post, Consultant/App. Dev. Manager Timothy Baillis explains how AI and Bots can improve modern UI designs.


It has been said that every great developer is inherently lazy- or at least inspired by boring or repetitive tasks. The idea that you can code a program to automate a task or overcome an obstacle is a powerful incentive to create. In the past, developers could rely on device and services to remain more constant or at least be easily updatable to continue to function. Now with the proliferation of services, devices, and applications it has become increasingly difficult to code once. There has been a great deal of effort put into finding solutions to this problem. Many of them relied on creating a layer of code that can be translated across devices or utilizing generic service interfaces. These strategies have been effective at reducing the amount of specific customization required but they still often require additional effort to implement across the wide number possible use cases. This is where the proliferation of AI and Bots can really bring a new way to deal with change. Specifically, I would like to talk about AI and Bots as the core of a modern developers Interface design, but it can also be used for other tasks: Better ingestion of raw data, easier formation of complex responses, updates through training not coding, maintenance by users not coders, and more.

Some of the tasks listed are also why AI and Bots make great tools for the foundation of a modern interface. Consider a hypothetical application with the following requirements:

  • Users must be able to interact with the application on Twitter, via Text, on Skype, as a phone app and as a desktop application
  • Users must be able to move between tasks without having to change context
  • The application must be updated regularly based on user feedback

Just these three requirements on a normal development project could add thousands of man hours of effort to the project and require a developer to be attached to the application permanently.

However, there is a modern way to deal with these requirements that also adds additional capability to the overall application. First, I will say there is a generic solution: AI on the back-end coupled with Bots on the front-end. I don’t mean the limited idea of a Bot as a human replacement. I would consider the Bot as the interface replacement. So, to illustrate the concept in a more concreate form I will suggest a specific solution. That solution would be LUIS.AI coupled with Microsoft Bot Framework.

From the Luis.AI site and Microsoft Bot Framework site is this diagram

clip_image002

  1. Employee starts the Application Bot (Bot Framework)
  2. Azure Active Directory validates the employee’s identity
  3. The employee can ask the Bot what type of queries are supported
  4. Cognitive Services(LUIS.AI) returns a FAQ
  5. The employee defines a valid query
  6. The Bot submits the query to Azure Search which returns information about the application data
  7. Application Insights gathers runtime telemetry to help development with Bot performance and usage

This diagram explores the specific instance of creating a QA based application for finding answers in a natural language query. In the example you can see there are two types of interfaces interacting with the full application like our requirements – a browser and a mobile app. In this case we have also added the idea of a secure logon, but that was not one of our requirements. The next part of the diagram is really the start of what makes this design so powerful.

It starts with the Bot Services; this engine can disassemble, in this case, a natural language query and break it into useable input (language tokens but could be other types of input). The Bot Framework use the information about what the user requested from a purely mechanical sense. We can now submit that information to the Cognitive Service (LUIS.AI) engine and get a trained interpretation of what the user wanted to do. So, for instance if the user said I want to know how to file a refund claim, clicked on a link that said refund, or navigated to a refund menu in an app. We can us the AI to interpret this input without building multiple logical baths to get to it. The AI is trained to understand that all 3 scenarios wanted the same request and can respond to our application to send the refund FAQ to the user. For the scope of this post the other services indicated are really outside the topic but I will address them briefly.

The application described here are leveraging additional Azure services that add even more benefit to the choice of using Bots and AI. First, Application Insights can be used to get additional telemetry data to understand how our application is performing in the real world. Next, Azure App Services is providing a way to host and create our application. Lastly, Azure Search service is providing a way to interact with additional data stored in an SQL database without having to write queries to do it.

This article has only touched the surface of the capabilities of this design and is really a starting point in thinking about how to return to being a lazy programmer that gets things done.


Premier Support for Developers provides strategic technology guidance, critical support coverage, and a range of essential services to help teams optimize development lifecycles and improve software quality.  Contact your Application Development Manager (ADM) or email us to learn more about what we can do for you.

Author

Developer Support
Cloud Solution Architects

Microsoft Developer Support helps software developers rapidly build and deploy quality applications for Microsoft platforms.

0 comments

Discussion are closed.