SIML 2.0 Draft Specification

SIML 2.0 Draft Specification

Postby Leslie » Fri Jul 21, 2017 9:13 pm

SIML 2.0 Draft Specification

Its been more than 3 years since we released SIML 1.0 and since then we've been working harder on a day to day basis to make it the de facto language for bot development. Usage of SIML in Syn Virtual Assistant proved by itself that SIML had grown mature enough to be used in a variety of applications. It handled all the scenarios swiftly and didn't require us to modify any core part of the SIML specification.

What makes SIML a go-to language for me at-least as a researcher has been its strict hybrid decision tree based response generation. Which ensures that a generated response has a great confidence backing it.

SIML also enables the end-users of your product to be able to edit SIML files (if not deployed via packages) to suit their needs. For example, your end users can add or edit existing Patterns within Models. This gives end-users a greater level of control over their application behavior.

With the arrival of OSCOVA however, we've brought Machine Learning (ML) into Bot development. Machine Learning is extremely important for any bot to truly understand the context behind user inputs and that is why we've invested heavily in developing a whole new architecture (OSCOVA).

Terminologies:

SimlBot refers to the SimlBot class in Syn.Bot Framework
OscovaBot refers to the OscovaBot class in Syn.Bot Framework.
SIML for OSCOVA and SIML Modern may be used interchangeably through out this post.

With SIML 2.0 draft specification we intend to create a common ground for both SIML Bot and OSCOVA Bot. SIML for OSCOVA will enable dynamic creation of Intents, Quick-Replies and will also provide an abstraction layer between Expressions and the target Intent.

For this, SIML will now come in 2 profiles:

1. SIML Classic - Can only be imported into SimlBot instance.
2. SIML Modern- Can only be imported into OscovaBot instance.

For both the profiles (SIML Classic and SIML Modern) we have written 2 new SIML interpreters from scratch. Patterns in SIML Classic will be evaluated after a response node is reached by the Hybrid Decision Tree whereas Expressions in SIML Modern are processed by the NLP and Machine Learning engine of OSCOVA.

SIML Modern Elements

SIML (Modern) would bring in the following new elements:

1. Dialog
2. Intent
3. Expression
4. Entity
5. Context
6. Prompt
7. Response
8. Action

Instead of <Concept> elements in SIML Classic, in SIML Modern developers will now use <Dialog> elements with its own properties and behavior.

Here's a simple example of SIML Modern with textual response.

SIML Code

<Dialog Name="CommonDialog">
<Intent Name="AgeIntent">
<Expression Value="my age is {62}"/>
<Entity Type="sys.number"/>
<Response Text="I see so you are $sys.number years old."/>
</Intent>
</Dialog>


Example of action abstraction via action IDs.

SIML Code

<Siml>
<Dialog Name="AppDialog">
<Intent Name="LaunchApp">
<Expression Value="launch @app"/>
<Action ID="open.app.action"/>
</Intent>
</Dialog>
</Siml>


The above SIML Modern codes are perfectly valid in current OscovaBot instance and can be loaded via the Import() method.

Click here for more information on SIML Modern

Shared Elements:

As both SIML Classic and SIML Modern share a common base interpreter in the background a lot of SIML 1.0 elements are now shared between both the profiles. To name a few here's a list of all the currently shared elements in SIML 2.0 Draft Specification

  • <Script>
  • <BotSettings>
  • <UserSettings>
  • <Bot>
  • <User>
  • <Text>
  • <Date>
  • <Math>
  • <Esc>
  • <Random>
  • <Bind>
  • <If>, <ElseIf> and <Else>
  • <While>
  • <Switch>, <Case>, <Default>
  • <Js>
  • <Filter>
  • <Random>

Click here for more information on shared SIML elements

Syn Bot Studio 2.0

We have revamped Syn Bot Studio to provide a swift development environment for both SIML Classic and SIML Modern. Developers will choose from 2 project types and start their development.

Both Classic and Modern projects will have their own Console setup to assist in development. Syn Bot Studio now uses case-sensitive elements within SIML Project file. When old projects are loaded, Bot Studio will automatically upgrade the format for you.

Project Analysis has been re-written from scratch for faster and line-by-line accurate analysis. With the click of a button Bot Studio will suggestion a list of optimizations you can make to your project. A lot of minor bugs have been fixed and we've cleaned the code-base of Syn Bot Studio for better performance.

Click here for more information on the new Syn Bot Studio

Changes to SIML 1.0: SIML Classic

In the course of time, as SIML got tested by thousands of developers and researchers worldwide. We've come to the realization that a few core components in the specification need to be tweaked.

We took this chance with SIML 2.0, an attempt to correct and enhance SIML 1.0 under the Classic profile. A major change is the replacement of Index attribute with the shorter At attribute. After nearly 2 years of debate we have finally chosen to deprecate the Index attribute to avoid confusion with generally programming concepts of indices starting at 0.

Another change is that Regex attribute and Element within Filter elements are now obsolete, instead developers will use the unified Pattern attribute within Filters. Also the <GotoMatch/> adapter is now obsolete as an "empty" <Goto/> tag would reflect the same behaviour.

Along with the aforementioned changes SimlBot will also have some breaking changes. Mostly refactoring and movement of properties to new locations.

Click here for more information on SIML Classic

Delivery:

How are we planning to deliver the new specification support across platforms?

Release of Syn.Bot Framework version 2.5.6)

SIML Modern will be available to all developers referencing version 2.5.6 and above version of Syn.Bot framework. Previous SIML 1.0 specification is not broken and your application using SimlBot should stay compatible. However, there are going to be some breaking changes in OscovaBot namely namespace, class, method name refactors and newer interface implementations. OSCOVA Quick-Replies can be created within SIML Modern document. Intent abstraction will be supported via Action IDs.

Along with the support for SIML Modern we have made loads improvements and have added many new features to OSCOVA.

Click here for more information on the upcoming Syn Bot Framework

Release of Syn Bot Studio version 2.0.0 BETA

In this phase Syn Bot Studio supporting SIML Classic and SIML Modern project will be made available and developers would be able to create their SIML projects from within Bot Studio. All projects created within Bot Studio can be imported to respective Bot architectures using custom SimlPackage and SimlProject classes.

More Walkthroughs in Developer Network

Although Syn.Bot framework has tons of features a lot of it hasn't been yet discussed in the Developer Network. The walkthroughs in Developer Network currently covers only 40% of the features we've added so far. Over time we intend to add more tutorials and sample codes in Syn Developer Network.

How are updates going to be deployed?

Our current deployment system involves 3 major versions per year on flagship frameworks. We will be deploying updates and bug-fixes on top of the current version at NuGet. Developers who are using any lower versions will be requested to update their project.

What does this mean for existing SIML 1.0 projects?

We made a promise on day-one, that whenever we update/upgrade the SIML specification we will ensure that your Bot project and its behavior stays intact. Although SIML 2.0 is not 100% compatible with SIML 1.0 the internal SIML interpreter is still backward compatible. This means your current project wouldn't need any logical changes to work with the new interpreter.

We look forward to your feedback and suggestions.
User avatar
Leslie
Lead Software Architect
 
Posts: 287
Joined: Fri Sep 14, 2012 12:20 pm

Return to Announcements

Who is online

Users browsing this forum: No registered users and 1 guest
cron