Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Next »

Overview

This Knowledge Base Skill gives the Digital Person the ability to answer end-user questions based on a customer’s knowledge base. The Knowledge base Skill data is provided in a JSON file with expected questions from the users and corresponding responses. If there is a match the Digital person will pick one of the responses from the list randomly.

This skill is:

  • Built and owned by Soul Machines Ltd.

  • Only supported in English.

Limitations

  1. The Skill does not validate the JSON file. So an invalid JSON file can result in the Skill or project not working as expected.

  2. Knowledge Base Skill does not work with other fallback skills like Elegant Failure and Skill - Site Search. However, Elegant Failure is supported as part of the Knowledge Base Skill.

Skill Demo

KnowledgeBaseSkill_Demo.mp4

Creating Knowledge Base JSON File

Use the https://knowledgebase-ui.prod.soulmachines.cloud/ tool to create or edit your Knowledge Base. Learn more here.

The JSON file must be in its raw form or hosted on any static site.

  • It needs to be publicly accessible, no login or other steps involved

  • It needs to directly serve the .json file as raw text. Not formatted to look nice or served up in a viewer.

The knowledge base data is a JSON file containing an array of questions and answers. The format of the data is as follows:

  1. "intent" - Used as a unique identifier for each JSON object.

  2. "examples" - This is an array of strings that contain examples of different phrasings for the question.

  3. "metadata" - This contains an array of strings that are the responses to the question. If more than one value is found for a given intent, the skill will randomly pick one of the responses to reply with.

[
  {
    "intent": "WhatIsSoulMachines",
    "examples": [
      "what is soul machines",
      "tell me about soul machines",
      "who is soul machines",
      "who are soul machines",
      "what are soul machines",
      "what is soul machine",
      "who is soul machine",
      "who are soul machine",
      "what are soul machine",
      "tell me about soul machine",
      "explain soul machines to me"
    ],
    "metadata": [
      "Soul Machines is the world leader in humanizing AI to create astonishing Digital People. A little secret, they actually created me.",
      "Soul Machines is my creator"
    ]
  },
  {
    "intent": "HowAreYou",
    "examples": [
      "Hoe are you",
      "thow are you doing",
      "are you doing good today",
      "how are you feeling",
      "how are you going",
      "how are u",
      "how are you going today",
      "how do you feel today",
      "how do you do"
    ],
    "metadata": [
      "I'm good",
      "Great!"
    ]
  }
]

If there is not an exact match, a Natural Language Understanding (NLU) process will attempt to find the closest intent based on the examples. If no match is found, it will reply back with a configurable No Match Response.

Displaying Content cards

In the metadata section of the JSON file, you can either add an array of strings (what the Digital Person will speak when the request comes in), or an array of objects which contain both the spoken text as well as any variables for cards that may be needed. The format of the enhanced metadata response looks as below.

Note that all “variables” should contain a “public” entry under it. Below the “public” level, you can include any number of additional variables, then refer to the name (“pic” in this example). This enhancement supports cards and commands now. See Displaying Content Cards for the list of available cards and their corresponding variable requirements.

{
  "intent": "ShowImage",
  "examples": [
    "show me an image"  ],
  "metadata": [
    {
      "text": "@ShowCards(pic) Here is an image",
      "variables": {
        "public": {
           "pic": {
             "component": "image",
             "data": {
               "url": "https://www.soulmachines.com/wp-content/uploads/SM_NavBarLogo_DarkGray.png"}
          }
        }
      }
    }
  ]
}

Session persistence in Web Widget

KnowledgeBase now supports responding to page changes on a website when used in conjunction with the Web Widget. As the end-user navigates between different pages on the website, it sends a PageMetadata event to the skill which has a pageUrl variable attached. The KnowledgeBase data file uses the pageUrl as the text to look up in the example section.

In your KnowledgeBase data Json file, you should add URL patterns if you want them to be triggered. For example:

{
  "intent": "home-page",
  "examples": ["https://www.abraxis.com","https://abraxis.com","https://www.abraxis.com/","https://abraxis.com/"],
  "metadata": ["Welcome to Abraxis.  This chat service is experimental."]
},
{
  "intent": "web-hosting-colo-page",
  "examples": ["https://www.abraxis.com/web_hosting_colo/*","https://abraxis.com/web_hosting_colo/*"],
  "metadata": ["We can host your website on our dedicated windows or Linux servers, offer Virtual Machines, dedicated servers or colocate your own server in our datacenter"]
}

You can use wild cards to match directory patterns so you can have the same response for everything within a category. For example, https://www.abraxis.com/web_hosting_colo/* would match any endpoint coming after the web_hosting_colo path. All the standard metadata responses are available.

Notes:

  1. Upon the initial page load, the DP will respond with the Welcome message for your corpus not the KnowledgeBase response if one happens to exist. This is by design so the end-user can be greeted consistently across the site.

  2. Due to browser security restrictions, page changes must initiate with action from the end user (i.e. clicking a link or a button) for the digital person to load automatically. If they manually type in a URL into the address bar, the browser will not load the DP by default, and it will be treated like a Welcome event if the end-user clicks on the DP to initiate the conversation.

Entity support

You can specify “entities” word varieties in the text. In the example below, the entity is in square brackets (i.e. [cats]) the entity can be any word. The main effect of this format for the example is it is more robust in recognising the pattern and you do not need as many examples to train the NLU.

{
  "intent": "AskAboutPets",
  "examples": [
    "Are [cats] good pets",
    "Are [dogs] good ets",
    "Are [parrots] good pets",
    "Are [hamsters] good pets"  ],
  ],
  "metadata": [
    "All pets are good if they make the owner happy"  ]
}

In the above example, if the user says any other word in place of “cats” the intent is matched and the Digital person will respond with one of the corresponding responses.

Best Practices

  1. Aim to add at least 10 phrases in the array for the best possible match for the question

  2. Get as many new people to test your Knowledge Base as you can so that you have a wide range of questions and answers. 

  3. Make sure your JSON file is validated before you configure the Knowledge Base skill.

Configurations

Provide the following information in the Knowledge Base Skill configuration screen in Digital DNA Studio. See Adding Skills to your Digital Person for detailed instructions:

Note: Provide a URL to the JSON file or enter the JSON data directly into the second field, if you provide both the JSON data will take precedence.

Field

Type

Description

URL Pointing to the JSON file Containing the Data

REQUIRED

TEXT

This should be a publicly available URL that points to a raw file containing the FAQ JSON data.
For example, the JSON file can be hosted on Google drive, like this.

JSON Data Pasted Directly In

REQUIRED

TEXT

This is the Knowledge Base JSON data pasted directly in.

If you supply both URL and JSON Data parameters, the JSON DATA parameter will win out.

Welcome Message to Greet the User When First Connecting

TEXT

Used to greet the user when the skill is used as a Base Conversation. 

This option is useful when this skill is used a Base Conversation

No Match Response

TEXT

This is an optional field to set the response from the Digital Person in case there is no match. The default is Sorry, I don't have an answer for that.

After Answer Response

TEXT

This is an optional field to set the response from the Digital Person after answering the question. The default is Anything else I can help you with?

Include a Pre-built Model?

DROPDOWN

Allows combining Knowledge Base skill with other fallback skills. Currently supports only Elegant failure.

How Strict Should I Be When Matching Phrases?

REQUIRED

DROPDOWN

How closely the user phrase needs to match the configured knowledge base. 

When used in conjunction with another open-ended skill, you should choose "Exact Match" or "Somewhat Flexible".  If the KB skill is used as a FALLBACK, you should choose "Very" or "Extremely".

This option is useful when used a skill in addition to a base conversation.

 

Content

  • No labels