Payload and feedback logging in Watson OpenScale
For Watson OpenScale, all transactions that are sent to the deployed models must be logged as payload records in the Watson OpenScale data mart. The input and output payloads (requests and responses) need to be in the format that is required by Watson OpenScale as described in the specifications.
Watson OpenScale supports payload and feedback logging through the following methods:
Logging the payload with Python SDK
The following code sample shows how to log the payload by using the Python SDK:
authenticator = IAMAuthenticator(apikey=CLOUD_API_KEY)
subscription = : wos_client.subscriptions.get(subscription_id).result.to_dict()
payload_data_set_id = wos_client.data_sets.list(type=DataSetTypes.PAYLOAD_LOGGING,
target_target_id=subscription_id, target_target_type=TargetTypes.SUBSCRIPTION).result.data_sets[0].metadata.id
request_data = {
"fields": ["AGE", "BP", "CHOLESTEROL", "NA", "K"],
"values": [[28, "LOW", "HIGH", 0.61, 0.026]],
"meta": {
"fields": ["SEX"],
"values": [["F"]]
}
}
response_data = {
"fields": ["AGE", "BP", "CHOLESTEROL", "NA", "K", "probability", "prediction", "DRUG"],
"values": [[28, "LOW", "HIGH", 0.61, 0.026, [0.82, 0.07, 0.0, 0.05, 0.03], 0.0, "drugY"]]
}
request_data = <put your data here>
response_data = <put your data here>
wos_client.data_sets.store_records(data_set_id=payload_data_set_id, request_body=[PayloadRecord(
scoring_id=str(uuid.uuid4()),
request= request_data,
response= response_data,
response_time=460
)])
Previewing the payload logging table
You can preview the content of your payload logging table either by directly connecting to the database or by using the Python SDK, which is shown in the following sample output.
Logging the payload with the REST API
The following code sample shows how to log the payload by using the REST API:
PAYLOAD_STORING_HREF_PATTERN ='{}/v1/data_marts/{}/scoring_payloads'
endpoint = PAYLOAD_STORING_HREF_PATTERN.format(
AIOS_CREDENTIALS['url'],
AIOS_CREDENTIALS['data_mart_id'])
deployment_uid = subscription.get_details()['entity']['deployments'][0]['deployment_id']
payload = [{'binding_id': binding_uid,
'deployment_id': deployment_uid,
'subscription_id': subscription.uid,
'scoring_id': scoring_uid,
'response': response_data,
'request': request_data}]
headers = {'Authorization': 'Bearer '+ token}
req_response = requests.post(endpoint,
json=payload,
headers = headers)
Next steps
After you set up payload logging, you can continue configuring monitors by entering model details. For more information, see Provide model details.