A Software Development Kit (SDK) that can run either Spark model web-assembly or Calling an HTTPS endpoint.
npm install @coherentglobal/spark-execute-sdk
or
yarn add @coherentglobal/spark-execute-sdk
const config = {
parallel: 1, // parallel (threads) to be used to run the model in parallel
sparkEndpoint: {
url: "https://excel.dev.coherent.global", // Spark Endpoint to be used to run model using Spark SaaS
tenant: "tenant", // Spark tenant name
authType: public | syntheticKey | bearerToken, // public endpoint don't require token / synthetic key
// If syntheticKey
syntheticKey: "apiKey" or generateSyntheticKey(), // value or a func - func call every time making API call, user will do cache
// If bearerToken
bearerToken: generateToken(), //a func - func call every time making API call, user will do cache
},
nodegenModels: [
{
versionId: "uuid",
type: "base64",
binary: Blob | Base64 | BinaryUnit | Func(versionId), // a binary zipped file or a function the will get the zipped file
preventCleanup: true | false, // prevent model from being unload (default: false)
instance: int, // number of model instance (default: 1)
metadata: {
// Spark Model Metadata
}
}
]
}
const config = {
sparkEndpoint: {
url: "https://excel.dev.coherent.global", // Spark Endpoint to be used to run model using Spark SaaS
tenant: "tenant", // Spark tenant name
authType: public | syntheticKey | bearerToken, // public endpoint don't require token / synthetic key
// If syntheticKey
syntheticKey: "apiKey" || generateSyntheticKey(), // value or a func - func call every time making API call, user will do cache
// If bearerToken
bearerToken: "token" || generateToken(), //a func - func call every time making API call, user will do cache
},
nodegenModels: [],
};
const config = {
nodegenModels: [
{
versionId: "uuid",
type: "base64",
binary: Blob | Base64 | BinaryUnit | Func(versionId), // a binary zipped file or a function the will get the zipped file
preventCleanup: true | false, // prevent model from being unload (default: false)
replica: int, // number of model instance (default: 1)
metadata: {
// Spark Model Metadata
},
},
],
};
Instantiate the Model Class.
const spark = new Spark(config);
Perform the calculation. The sdk will use the request_meta.version_uuid of input argument to locate the model
const response = await spark.execute(input).catch((err) => {
// Do something here
});
or
const response = await spark.execute(input, version_id).catch((err) => {
// Do something here
});
Perform the calculation with cancellationToken. The sdk will use the request_meta.version_uuid of input argument to locate the model
const execute = spark.executeWithCancellationToken(input)
// Cancel the execution (best effort)
execute.cancellationToken.cancel()
execute.response.then((result) => {
// Do something here
})
.catch((err) => {
// Do something here
// If error is instance of Spark.WasmRunnerErrors.ExecuteCancelled, meaning the request has been cancelled
});
or
const execute = spark.executeWithCancellationToken(input)
// Cancel the execution (best effort)
execute.cancellationToken.cancel()
execute.response.then((result) => {
// Do something here
})
.catch((err) => {
// Do something here
// If error is instance of Spark.WasmRunnerErrors.ExecuteCancelled, meaning the request has been cancelled
});
Note: The second parameter (version_id) is optional if version_id is already included on request_meta
{
"request_data": {
"inputs": {
"Input": 1
}
},
"request_meta": {
"version_id": "<model id>",
"transaction_date": "2022-09-19T04:17:17.142Z",
"call_purpose": "Spark - API Tester",
"source_system": "",
"correlation_id": "",
"requested_output": ""
}
}
DEMO LINK- https://codesandbox.io/s/autumn-hill-1342ln?file=/index.html