The MLSolution API provides methods for handling Predictive Intelligence predictions and retrieving solution objects for all capabilities: similarity, classification, and clustering).

This API provides methods commonly used among all solution capabilities and methods unique to classification and clustering solutions.
  • Common methods used for all solution objects:
    • getCapability()
    • getVersion()
    • isActive()
    • predict()
  • Methods only used for classification and regression solutions:
    • applyPrediction()
  • Methods only used for clustering solutions:
    • getClusterAssignments()
    • getClusterForRecord()
    • getClusterInfo()

The MLSolution API requires the Predictive Intelligence plugin (com.glide.platform_ml) and is provided within the sn_ml namespace.

The methods in this object are instantiated using MLSolutionFactory.

MLSolution - applyPrediction(GlideRecord now_GR)

Gets the prediction result for a classification solution and applies it to the input GlideRecord if the confidence value is higher than the threshold.

Table 1. Parameters
Name Type Description
now_GR GlideRecord GlideRecord object containing values on which to run a prediction and apply the results.
Table 2. Returns
Type Description
Boolean

Flag that indicates whether the prediction was applied:

  • true: Prediction applied
  • false: Prediction rejected

Example

var mlSolution = sn_ml.MLSolutionFactory.getSolution("ml_incident_categorization");

var inputGR = new GlideRecord("incident");
inputGR.get("0ef47232db801300864adfea5e961912");

mlSolution.applyPrediction(inputGR);

MLSolution - getCapability()

Gets the capability information of a trained solution.

Table 3. Parameters
Name Type Description
None
Table 4. Returns
Type Description
String Type of trained solution.
Possible values:
  • Similarity
  • Classification
  • Clustering

Example

var mlSolution = sn_ml.MLSolutionFactory.getSolution("ml_x_global_clustering");

// configure optional parameters
var options = {};
options.group_by = 'network';
options.cluster_id = 1;
options.top_n_per_cluster = 3;

if (mlSolution.getCapability() == 'clustering') {
	var results = mlSolution.getClusterAssignments(options);
	// pretty print JSON results
	gs.print(JSON.stringify(JSON.parse(results), null, 2));
}

MLSolution - getClusterAssignments(Object options)

Gets assignments for a clustering solution.

Table 6. Returns
Type Description
Object JSON array containing cluster information in increasing order by cluster_id:
  • cluster_id: String. Unique cluster number within a solution of clusters.
  • rec_display_id: String. Record type and number.
  • rec_sys_id: String. Record sys_id.
  • group_by: If grouped, name of the segmentation field associated with this cluster.

Example

var mlSolution = sn_ml.MLSolutionFactory.getSolution("ml_x_global_clustering");

// configure optional parameters
var options = {};
options.group_by = 'network';
options.cluster_id = '1';
// returns top 3 results per cluster
options.top_n_per_cluster = 3;

var results = mlSolution.getClusterAssignments(options);

Output:

[{"cluster_id":"1","rec_display_id":"Incident: INC0014483","rec_sys_id":"04e33e7adb401300864adfea5e961900","group_by":"network"},
 {"cluster_id":"1","rec_display_id":"Incident: INC0011133","rec_sys_id":"5bd23af2db401300864adfea5e96194d","group_by":"network"}]

MLSolution - getClusterForRecord(GlideRecord now_GR)

Gets the cluster information for a clustering solution.

Table 7. Parameters
Name Type Description
now_GR GlideRecord Name of the input GlideRecord.
Table 8. Returns
Type Description
String The cluster_id from the Cluster Summary [ml_cluster_summary] table if the record belongs to a cluster. Empty string returns if the record does not belong to a cluster.

Example

var mlSolution = sn_ml.MLSolutionFactory.getSolution("solution_name");
var now_GR = new GlideRecord('incident');
if (mlSolution.getCapability() == 'clustering') {
var clusterId = mlSolution.getClusterForRecord(now_GR);
}

MLSolution - getClusterInfo(Object options)

Gets information for a specified clustering solution.

Table 9. Parameters
Name Type Description
options Object Optional. Narrows down the returned results by group and level within a clustering solution.

Default: Return cluster memberships for all clusters.

options.group_by String Optional. Identifies the segmentation field for which to retrieve cluster memberships, for example, assignment_group.

This field provides the same grouping as options provided in the Use Group By check box in the Clustering Definition form. The information provided varies based on the table selected in the Table field. For more information, see Create and train a clustering solution .

options.cluster_id String Optional. Cluster ID of a trained solution in the Cluster Summary [ml_cluster_summary] table.
Table 10. Returns
Type Description
Object JSON array containing cluster information in increasing order by cluster_id:
  • cluster_id: String. Unique cluster number within a solution of clusters.
  • cluster_quality: String. Number from 0 to 100. Higher numbers indicate higher cluster density.
  • cluster_size: String. Number of records in a cluster.
  • group_by: If grouped, name of the segmentation field associated with this cluster.
  • cluster_concept: String. Set of words that describe the cluster in descending order of frequency.

Example

var mlSolution = sn_ml.MLSolutionFactory.getSolution("ml_x_global_clustering");

// configure optional parameters
var options = {};
options.group_by = 'network';
options.cluster_id = 1;

var results = mlSolution.getClusterInfo(options);

Output:

[ {"cluster_id":"1","cluster_quality":"56.6","cluster_size":"46","group_by":"SLA","cluster_concept":"issue occur capacity ..."},
  {"cluster_id":"2","cluster_quality":"55.47","cluster_size":"75","group_by":"SLA","cluster_concept":"clone instance request ..."},
... ]

MLSolution - getVersion()

Gets the version of the active solution.

Table 11. Parameters
Name Type Description
None
Table 12. Returns
Type Description
String Version of the active solution.

Example

var mlSolution = sn_ml.MLSolutionFactory.getSolution("solution_name");

var solutionVersion = mlSolution.getVersion();

MLSolution - isActive()

Determines if a solution is active.

Table 13. Parameters
Name Type Description
None
Table 14. Returns
Type Description
Boolean Flag that indicates whether the solution is active.
  • true: Solution active
  • false: Solution inactive

Example

var mlSolution = sn_ml.MLSolutionFactory.getSolution("solution_name");

var isActive = mlSolution.isActive();

MLSolution - predict(Object input, Object options)

Gets the prediction results from the prediction server given a GlideRecord or an array of key-value pairs.

You can use this method to call prediction with multiple input records because GlideRecord is an iterator.

Table 15. Parameters
Name Type Description
input Object GlideRecord or array of JSON objects containing field names and values as key-value pairs.
options Object Optional. JSON key-value pair with the following properties:
  • top_n: Number. If provided, returns the top results, up to the specified number of predictions.
  • apply_threshold: Boolean. Checks the threshold value for the solution and applies it to the result set. The threshold value is solution threshold for similarity or class-level threshold for classification. Default value is true.
  • custom_results_filter: String. Similarity solutions only. Specifies the allowed set from which results are returned using an encoded query.
Table 16. Returns
Type Description
Object JSON object containing the prediction results sorted by sys_id or record_number.
  • predictedValue: String. Value representing the prediction result.
  • predictedSysId: String. The sys_id of the predicted value. Results can be from any table on which information is being predicted.
  • confidence: Number. Value of the confidence associated with the prediction. For example, 53.84.
  • threshold: Number. Value of the configured threshold associated with the prediction.

Example

var mlSolution = sn_ml.MLSolutionFactory.getSolution("ml_incident_categorization");

// single GlideRecord input
var input = new GlideRecord("incident");
input.get("0ef47232db801300864adfea5e961912");

// configure optional parameters
var options = {};
options.top_n = 3;
options.apply_threshold = false;

var results = mlSolution.predict(input, options);
// pretty print JSON results
gs.print(JSON.stringify(JSON.parse(results), null, 2));

Example

var mlSolution = sn_ml.MLSolutionFactory.getSolution("ml_incident_categorization");

// multiple GlideRecord input
var input = new GlideRecord("incident");
input.addQuery("sys_created_onONLast week@javascript:gs.beginningOfLastWeek()@javascript:gs.endOfLastWeek()");
input.query();

// configure optional parameters
var options = {};
options.top_n = 3;
options.apply_threshold = false;

var results = mlSolution.predict(input, options);
// pretty print JSON results
gs.print(JSON.stringify(JSON.parse(results), null, 2));

Output:

{
    input_gr_sys_id1: [
                {
                    predictedValue : xxx,
                    predictedSysId : xx0,
                    confidence : xxx,
                    threshold : xxx

                }, 
                {
                    predictedValue : yyy,
                    predictedSysId : xx1,
                    confidence : xxx,
                    threshold : xxx
                }
        ],
    input_gr_sys_id2 : [
                {
                    predictedValue : xxx,
                    predictedSysId : xx0,
                    confidence : xxx,
                    threshold : xxx

                }, 
            ...
        ]
}

Example

var mlSolution = sn_ml.MLSolutionFactory.getSolution("ml_incident_categorization");

// key-value pairs input
var input = [{"short_description":"my email is not working"}, 
			{short_description:"need help with password"}];

// configure optional parameters
var options = {};
options.top_n = 3;
options.apply_threshold = false;

var results = mlSolution.predict(input, options);
// pretty print JSON results
gs.print(JSON.stringify(JSON.parse(results), null, 2));