Source code for azure.ai.personalizer.aio._patch

# ------------------------------------
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# ------------------------------------
"""Customize generated code here.

Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize
"""
# pylint: disable=too-many-lines
from typing import Awaitable
import sys
import datetime
from typing import List, Union, Any, IO, AsyncIterator, Optional, AsyncIterable
from azure.core.credentials import AzureKeyCredential
from azure.core.credentials_async import AsyncTokenCredential
from azure.core.pipeline.policies import AzureKeyCredentialPolicy, AsyncBearerTokenCredentialPolicy
from azure.core.tracing.decorator import distributed_trace
from azure.core.tracing.decorator_async import distributed_trace_async
from azure.core.rest import AsyncHttpResponse, HttpRequest

from ._client import PersonalizerClient as PersonalizerClientGenerated

if sys.version_info >= (3, 9):
    from collections.abc import MutableMapping
else:
    from typing import MutableMapping  # type: ignore  # pylint: disable=ungrouped-imports
JSON = MutableMapping[str, Any]  # pylint: disable=unsubscriptable-object

__all__: List[str] = [
    "PersonalizerClient",
    "PersonalizerAdministrationClient",
]  # Add all objects you want publicly available to users at this package level


def _authentication_policy(credential, **kwargs):
    if credential is None:
        raise ValueError("Parameter 'credential' must not be None.")
    if isinstance(credential, AzureKeyCredential):
        authentication_policy = AzureKeyCredentialPolicy(
            name="Ocp-Apim-Subscription-Key", credential=credential, **kwargs
        )
    elif hasattr(credential, "get_token"):
        authentication_policy = AsyncBearerTokenCredentialPolicy(
            credential, *kwargs.pop("credential_scopes", ["https://cognitiveservices.azure.com/.default"]), **kwargs
        )
    else:
        raise TypeError(
            "Unsupported credential: {}. Use an instance of AzureKeyCredential "
            "or a token credential from azure.identity".format(type(credential))
        )
    return authentication_policy


[docs]class PersonalizerAdministrationClient: # pylint: disable=too-many-public-methods """This client contains the operations that apply to Azure Personalizer. Operations allowed by the client are viewing and editing the properties, policy, model, running evaluations. :param endpoint: Supported Cognitive Services endpoint. Required. :type endpoint: str :param credential: Credential needed for the client to connect to Azure. Required. :type credential: ~azure.core.credentials.AzureKeyCredential or ~azure.core.credentials_async.AsyncTokenCredential :keyword api_version: Api Version. Default value is "2022-09-01-preview". Note that overriding this default value may result in unsupported behavior. :paramtype api_version: str """ def __init__( self, endpoint: str, credential: Union[AzureKeyCredential, AsyncTokenCredential], **kwargs: Any ) -> None: self._client = PersonalizerClientGenerated( endpoint=endpoint.rstrip("/"), credential=credential, # type: ignore authentication_policy=kwargs.pop("authentication_policy", _authentication_policy(credential, **kwargs)), **kwargs )
[docs] @distributed_trace_async async def export_model(self, *, signed: bool = False, **kwargs: Any) -> AsyncIterator[bytes]: """Model. Get the model file generated by Personalizer service. :keyword signed: True if requesting signed model zip archive, false otherwise. Default value is False. :paramtype signed: bool :return: Async iterator of the response bytes :rtype: AsyncIterator[bytes] :raises ~azure.core.exceptions.HttpResponseError: """ return await self._client.get_model(signed=signed, **kwargs)
[docs] @distributed_trace_async async def import_model(self, body: IO, **kwargs: Any) -> None: # pylint: disable=inconsistent-return-statements """Model File. Replace the existing model file for the Personalizer service. :param body: The digitally signed model file obtained from getting the model. Required. :type body: IO :return: None :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ return await self._client.import_model(body, **kwargs)
[docs] @distributed_trace_async async def reset_model(self, **kwargs: Any) -> None: # pylint: disable=inconsistent-return-statements """Reset Model. Resets the model file generated by Personalizer service. :return: None :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ await self._client.reset_model(**kwargs)
[docs] @distributed_trace_async async def get_model_properties(self, **kwargs: Any) -> JSON: """Model Properties. Get properties of the model file generated by Personalizer service. :return: JSON object :rtype: JSON :raises ~azure.core.exceptions.HttpResponseError: Example: .. code-block:: python # response body for status code(s): 200 response == { "creationTime": "2020-02-20 00:00:00", # Optional. Creation time of the model. "lastModifiedTime": "2020-02-20 00:00:00" # Optional. Last time the model was modified. } """ return await self._client.get_model_properties(**kwargs)
[docs] @distributed_trace_async async def get_log_properties(self, **kwargs: Any) -> JSON: """Log Properties. Get properties of the Personalizer logs. :return: JSON object :rtype: JSON :raises ~azure.core.exceptions.HttpResponseError: Example: .. code-block:: python # response body for status code(s): 200 response == { "dateRange": { "from": "2020-02-20 00:00:00", # Optional. Start date for the range. "to": "2020-02-20 00:00:00" # Optional. End date for the range. } } """ return await self._client.get_log_properties(**kwargs)
[docs] @distributed_trace_async async def delete_logs(self, **kwargs: Any) -> None: # pylint: disable=inconsistent-return-statements """Logs. Delete all logs of Rank and Reward calls stored by Personalizer. :return: None :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ return await self._client.delete_log(**kwargs)
[docs] @distributed_trace_async async def get_policy(self, **kwargs: Any) -> JSON: """Policy. Get the Learning Settings currently used by the Personalizer service. :return: JSON object :rtype: JSON :raises ~azure.core.exceptions.HttpResponseError: Example: .. code-block:: python # response body for status code(s): 200 response == { "arguments": "str", # Arguments of the learning settings. Required. "name": "str" # Name of the learning settings. Required. } """ return await self._client.get_policy(**kwargs)
[docs] @distributed_trace_async async def update_policy(self, policy: Union[JSON, IO], **kwargs: Any) -> JSON: """Update Policy. Update the Learning Settings that the Personalizer service will use to train models. :param policy: The learning settings. Required. :type policy: JSON or IO :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str :return: JSON object :rtype: JSON :raises ~azure.core.exceptions.HttpResponseError: Example: .. code-block:: python # JSON input template you can fill out and use as your body input. policy = { "arguments": "str", # Arguments of the learning settings. Required. "name": "str" # Name of the learning settings. Required. } # response body for status code(s): 200 response == { "arguments": "str", # Arguments of the learning settings. Required. "name": "str" # Name of the learning settings. Required. } """ return await self._client.update_policy(policy, **kwargs)
[docs] @distributed_trace_async async def reset_policy(self, **kwargs: Any) -> JSON: """Reset Policy. Resets the learning settings of the Personalizer service to default. :return: JSON object :rtype: JSON :raises ~azure.core.exceptions.HttpResponseError: Example: .. code-block:: python # response body for status code(s): 200 response == { "arguments": "str", # Arguments of the learning settings. Required. "name": "str" # Name of the learning settings. Required. } """ return await self._client.reset_policy(**kwargs)
[docs] @distributed_trace_async async def get_service_configuration(self, **kwargs: Any) -> JSON: """Service Configuration. Get the Personalizer service configuration. :return: JSON object :rtype: JSON :raises ~azure.core.exceptions.HttpResponseError: Example: .. code-block:: python # response body for status code(s): 200 response == { "defaultReward": 0.0, # The reward given if a reward is not received within the specified wait time. Required. "explorationPercentage": 0.0, # The percentage of rank responses that will use exploration. Required. "logRetentionDays": 0, # Number of days historical logs are to be maintained. -1 implies the logs will never be deleted. Required. "modelExportFrequency": "1 day, 0:00:00", # Personalizer will start using the most updated trained model for online ranks automatically every specified time period."nFor example, PT5M (5 mins). For information about the time format,"nsee http://en.wikipedia.org/wiki/ISO_8601#Durations. Required. "modelRetrainDays": 0, # Default value is 0. Number of days of historical logs used when a model retrain is triggered. Required. "rewardAggregation": "str", # The function used to process rewards, if multiple reward scores are received before rewardWaitTime is over. Required. "rewardWaitTime": "1 day, 0:00:00", # The time span waited until a request is marked with the default reward"nand should be between 5 seconds and 2 days."nFor example, PT5M (5 mins). For information about the time format,"nsee http://en.wikipedia.org/wiki/ISO_8601#Durations. Required. "autoOptimizationFrequency": "1 day, 0:00:00", # Optional. Frequency of automatic optimization. Only relevant if IsAutoOptimizationEnabled is true."nFor example, PT5M (5 mins). For information about the time format,"n""r""nsee http://en.wikipedia.org/wiki/ISO_8601#Durations. "autoOptimizationStartDate": "2020-02-20 00:00:00", # Optional. Date when the first automatic optimization evaluation must be performed. Only relevant if IsAutoOptimizationEnabled is true. "isAutoOptimizationEnabled": bool, # Optional. Flag indicating whether Personalizer will automatically optimize Learning Settings by running Offline Evaluations periodically. "lastConfigurationEditDate": "2020-02-20 00:00:00", # Optional. Last time model training configuration was updated. "latestApprenticeModeMetrics": { "lastProcessedEventTime": "2020-02-20 00:00:00", # Required. "numberOfEvents": 0, # Required. "numberOfImitatedEvents": 0, # Required. "startTime": "2020-02-20 00:00:00", # Required. "sumOfImitatedRewards": 0.0, # Required. "sumOfRewards": 0.0, # Required. "lastBatchMetrics": { "numberOfEvents": 0, # Required. "numberOfImitatedEvents": 0, # Required. "sumOfImitatedRewards": 0.0, # Required. "sumOfRewards": 0.0 # Required. } }, "learningMode": "str", # Optional. Learning Modes for Personalizer. Known values are: "Online", "Apprentice", and "LoggingOnly". "logMirrorEnabled": bool, # Optional. Flag indicates whether log mirroring is enabled. "logMirrorSasUri": "str" # Optional. Azure storage account container SAS URI for log mirroring. } """ return await self._client.get_service_configuration(**kwargs)
[docs] @distributed_trace_async async def update_service_configuration(self, config: Union[JSON, IO], **kwargs: Any) -> JSON: """Update Service Configuration. Update the Personalizer service configuration. :param config: The personalizer service configuration. Required. :type config: JSON or IO :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str :return: JSON object :rtype: JSON :raises ~azure.core.exceptions.HttpResponseError: Example: .. code-block:: python # JSON input template you can fill out and use as your body input. config = { "defaultReward": 0.0, # The reward given if a reward is not received within the specified wait time. Required. "explorationPercentage": 0.0, # The percentage of rank responses that will use exploration. Required. "logRetentionDays": 0, # Number of days historical logs are to be maintained. -1 implies the logs will never be deleted. Required. "modelExportFrequency": "1 day, 0:00:00", # Personalizer will start using the most updated trained model for online ranks automatically every specified time period."nFor example, PT5M (5 mins). For information about the time format,"nsee http://en.wikipedia.org/wiki/ISO_8601#Durations. Required. "modelRetrainDays": 0, # Default value is 0. Number of days of historical logs used when a model retrain is triggered. Required. "rewardAggregation": "str", # The function used to process rewards, if multiple reward scores are received before rewardWaitTime is over. Required. "rewardWaitTime": "1 day, 0:00:00", # The time span waited until a request is marked with the default reward"nand should be between 5 seconds and 2 days."nFor example, PT5M (5 mins). For information about the time format,"nsee http://en.wikipedia.org/wiki/ISO_8601#Durations. Required. "autoOptimizationFrequency": "1 day, 0:00:00", # Optional. Frequency of automatic optimization. Only relevant if IsAutoOptimizationEnabled is true."nFor example, PT5M (5 mins). For information about the time format,"n""r""nsee http://en.wikipedia.org/wiki/ISO_8601#Durations. "autoOptimizationStartDate": "2020-02-20 00:00:00", # Optional. Date when the first automatic optimization evaluation must be performed. Only relevant if IsAutoOptimizationEnabled is true. "isAutoOptimizationEnabled": bool, # Optional. Flag indicating whether Personalizer will automatically optimize Learning Settings by running Offline Evaluations periodically. "lastConfigurationEditDate": "2020-02-20 00:00:00", # Optional. Last time model training configuration was updated. "latestApprenticeModeMetrics": { "lastProcessedEventTime": "2020-02-20 00:00:00", # Required. "numberOfEvents": 0, # Required. "numberOfImitatedEvents": 0, # Required. "startTime": "2020-02-20 00:00:00", # Required. "sumOfImitatedRewards": 0.0, # Required. "sumOfRewards": 0.0, # Required. "lastBatchMetrics": { "numberOfEvents": 0, # Required. "numberOfImitatedEvents": 0, # Required. "sumOfImitatedRewards": 0.0, # Required. "sumOfRewards": 0.0 # Required. } }, "learningMode": "str", # Optional. Learning Modes for Personalizer. Known values are: "Online", "Apprentice", and "LoggingOnly". "logMirrorEnabled": bool, # Optional. Flag indicates whether log mirroring is enabled. "logMirrorSasUri": "str" # Optional. Azure storage account container SAS URI for log mirroring. } # response body for status code(s): 200 response == { "defaultReward": 0.0, # The reward given if a reward is not received within the specified wait time. Required. "explorationPercentage": 0.0, # The percentage of rank responses that will use exploration. Required. "logRetentionDays": 0, # Number of days historical logs are to be maintained. -1 implies the logs will never be deleted. Required. "modelExportFrequency": "1 day, 0:00:00", # Personalizer will start using the most updated trained model for online ranks automatically every specified time period."nFor example, PT5M (5 mins). For information about the time format,"nsee http://en.wikipedia.org/wiki/ISO_8601#Durations. Required. "modelRetrainDays": 0, # Default value is 0. Number of days of historical logs used when a model retrain is triggered. Required. "rewardAggregation": "str", # The function used to process rewards, if multiple reward scores are received before rewardWaitTime is over. Required. "rewardWaitTime": "1 day, 0:00:00", # The time span waited until a request is marked with the default reward"nand should be between 5 seconds and 2 days."nFor example, PT5M (5 mins). For information about the time format,"nsee http://en.wikipedia.org/wiki/ISO_8601#Durations. Required. "autoOptimizationFrequency": "1 day, 0:00:00", # Optional. Frequency of automatic optimization. Only relevant if IsAutoOptimizationEnabled is true."nFor example, PT5M (5 mins). For information about the time format,"n""r""nsee http://en.wikipedia.org/wiki/ISO_8601#Durations. "autoOptimizationStartDate": "2020-02-20 00:00:00", # Optional. Date when the first automatic optimization evaluation must be performed. Only relevant if IsAutoOptimizationEnabled is true. "isAutoOptimizationEnabled": bool, # Optional. Flag indicating whether Personalizer will automatically optimize Learning Settings by running Offline Evaluations periodically. "lastConfigurationEditDate": "2020-02-20 00:00:00", # Optional. Last time model training configuration was updated. "latestApprenticeModeMetrics": { "lastProcessedEventTime": "2020-02-20 00:00:00", # Required. "numberOfEvents": 0, # Required. "numberOfImitatedEvents": 0, # Required. "startTime": "2020-02-20 00:00:00", # Required. "sumOfImitatedRewards": 0.0, # Required. "sumOfRewards": 0.0, # Required. "lastBatchMetrics": { "numberOfEvents": 0, # Required. "numberOfImitatedEvents": 0, # Required. "sumOfImitatedRewards": 0.0, # Required. "sumOfRewards": 0.0 # Required. } }, "learningMode": "str", # Optional. Learning Modes for Personalizer. Known values are: "Online", "Apprentice", and "LoggingOnly". "logMirrorEnabled": bool, # Optional. Flag indicates whether log mirroring is enabled. "logMirrorSasUri": "str" # Optional. Azure storage account container SAS URI for log mirroring. } """ return await self._client.update_service_configuration(config, **kwargs)
[docs] @distributed_trace_async async def apply_from_evaluation( # pylint: disable=inconsistent-return-statements self, body: Union[JSON, IO], **kwargs: Any ) -> None: """Apply Learning Settings and Model. Apply Learning Settings and model from a pre-existing Offline Evaluation, making them the current online Learning Settings and model and replacing the previous ones. :param body: Reference to the policy within the evaluation. Required. :type body: JSON or IO :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str :return: None :rtype: None :raises ~azure.core.exceptions.HttpResponseError: Example: .. code-block:: python # JSON input template you can fill out and use as your body input. body = { "evaluationId": "str", # Evaluation Id of the evaluation. Required. "policyName": "str" # Name of the learning settings. Required. } """ return await self._client.apply_from_evaluation(body, **kwargs)
[docs] @distributed_trace_async async def create_evaluation( # pylint: disable=inconsistent-return-statements self, evaluation_id: str, evaluation: Union[JSON, IO], **kwargs: Any ) -> None: """Create Offline Evaluation. Submit a new Offline Evaluation job. :param evaluation_id: Id of the Offline Evaluation to create. Required. :type evaluation_id: str :param evaluation: The Offline Evaluation job definition. Required. :type evaluation: JSON or IO :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str :return: None :rtype: None :raises ~azure.core.exceptions.HttpResponseError: Example: .. code-block:: python # JSON input template you can fill out and use as your body input. evaluation = { "endTime": "2020-02-20 00:00:00", # The end time of the evaluation. Required. "name": "str", # The name of the evaluation. Required. "startTime": "2020-02-20 00:00:00", # The start time of the evaluation. Required. "enablePolicyOptimization": bool, # Optional. True if the evaluation should explore for a more optimal learning settings. "policies": [ { "arguments": "str", # Arguments of the learning settings. Required. "name": "str" # Name of the learning settings. Required. } ] } """ await self._client.create_evaluation(evaluation_id, evaluation, **kwargs)
[docs] @distributed_trace_async async def get_evaluation( self, evaluation_id: str, *, start_time: datetime.datetime, end_time: datetime.datetime, interval_in_minutes: Optional[int] = None, window: Optional[str] = None, **kwargs: Any ) -> JSON: """Offline Evaluation. Get the Offline Evaluation associated with the Id. :param evaluation_id: Id of the Offline Evaluation. Required. :type evaluation_id: str :keyword start_time: Start of aggregation time interval. Required. :paramtype start_time: ~datetime.datetime :keyword end_time: End of aggregation time interval. Required. :paramtype end_time: ~datetime.datetime :keyword interval_in_minutes: "Time interval for aggregation of events in minutes. Allowed intervals: 5 minutes, 60 minutes, 360 minutes, 720 minutes and 1440 minutes. Defaults to 5 minutes. Default value is None. :paramtype interval_in_minutes: int :keyword window: Rolling or Expanding time. Rolling compatible with 60 minutes, 360 minutes, 720 minutes and 1440 minutes intervals. Expanding compatible with 5 minute time interval only. Defaults to Expanding. Known values are: "Expanding" and "Rolling". Default value is None. :paramtype window: str :return: JSON object :rtype: JSON :raises ~azure.core.exceptions.HttpResponseError: Example: .. code-block:: python # response body for status code(s): 200 response == { "creationTime": "2020-02-20 00:00:00", # The creation time of the evaluation. Required. "endTime": "2020-02-20 00:00:00", # The end time of the evaluation. Required. "evaluationType": "str", # The type of evaluation. Required. Known values are: "Manual" and "Auto". "id": "str", # The ID of the evaluation. Required. "name": "str", # The name of the evaluation. Required. "startTime": "2020-02-20 00:00:00", # The start time of the evaluation. Required. "status": "str", # The status of the job processing the evaluation. Required. Known values are: "Succeeded", "Running", "Failed", "NotSubmitted", "Timeout", "OptimalPolicyApplied", "OnlinePolicyRetained", and "Canceled". "content": { "endTime": "2020-02-20 00:00:00", # Optional. End time of the time series. "intervalInMinutes": 0, # Optional. Aggregation window. "startTime": "2020-02-20 00:00:00", # Optional. Start time of the time series. "value": [ { "arguments": "str", # Optional. The arguments of the Learning Settings. "name": "str", # Optional. The name of the Learning Settings. "policySource": "str", # Optional. The source of the Learning Settings. Known values are: "Online", "Baseline", "Random", "Custom", and "OfflineExperimentation". "slotId": "str", # Optional. Slot id. Empty for overall results and single slot results. "summary": { "confidenceInterval": [ 0.0 # Optional. Confidence interval. ], "expectedReward": 0.0 # Optional. Average reward. }, "timeseries": { "data": [ { "confidenceInterval": [ 0.0 # Optional. Confidence interval. ], "expectedReward": 0.0, # Optional. Average reward. "timeStamp": "2020-02-20 00:00:00" # Optional. Timestamp of the aggregation. } ] } } ] }, "description": "str", # Optional. Description of the evaluation job. "optimalPolicy": "str" # Optional. Optimal policy found by the evaluation job. } """ return await self._client.get_evaluation( evaluation_id, start_time=start_time, end_time=end_time, interval_in_minutes=interval_in_minutes, window=window, **kwargs )
[docs] @distributed_trace def list_evaluations( self, *, filter_expression: Optional[str] = None, top: Optional[int] = None, skip: int = 0, **kwargs: Any ) -> AsyncIterable[JSON]: """All Offline Evaluations. List of all Offline Evaluations. :keyword filter_expression: An expression to filter the evaluations against evaluation metadata. Only evaluations where the expression evaluates to true are included in the response. Here is an example, metadata=evaluationType eq 'Manual'. Default value is None. :paramtype filter_expression: str :keyword top: The maximum number of resources to return from the collection. Defaults to maximum value of integer. Default value is None. :paramtype top: int :keyword skip: An offset into the collection of the first resource to be returned. Defaults to 0. Default value is 0. :paramtype skip: int :return: An iterator like instance of JSON object :rtype: ~azure.core.async_paging.AsyncItemPaged[JSON] :raises ~azure.core.exceptions.HttpResponseError: Example: .. code-block:: python # response body for status code(s): 200 response == { "creationTime": "2020-02-20 00:00:00", # The creation time of the evaluation. Required. "endTime": "2020-02-20 00:00:00", # The end time of the evaluation. Required. "evaluationType": "str", # Type of evaluation. Required. Known values are: "Manual" and "Auto". "id": "str", # The ID of the evaluation. Required. "name": "str", # The name of the evaluation. Required. "startTime": "2020-02-20 00:00:00", # The start time of the evaluation. Required. "status": "str" # The status of the job processing the evaluation. Required. Known values are: "Succeeded", "Running", "Failed", "NotSubmitted", "Timeout", "OptimalPolicyApplied", "OnlinePolicyRetained", and "Canceled". } """ return self._client.list_evaluations(filter_expression=filter_expression, top=top, skip=skip, **kwargs)
[docs] @distributed_trace_async async def delete_evaluation( self, evaluation_id: str, **kwargs: Any ) -> None: # pylint: disable=inconsistent-return-statements """Offline Evaluation. Delete the Offline Evaluation associated with the Id. :param evaluation_id: Id of the Offline Evaluation to delete. Required. :type evaluation_id: str :return: None :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ await self._client.delete_evaluation(evaluation_id, **kwargs)
[docs] @distributed_trace_async async def create_feature_importance( # pylint: disable=inconsistent-return-statements self, feature_importance_id: str, feature_importance: Union[JSON, IO], **kwargs: Any ) -> None: """Create Feature Importance. Submit a new Feature Importance job. :param feature_importance_id: Id of the Feature Importance to create. Required. :type feature_importance_id: str :param feature_importance: The Feature Importance job definition. Required. :type feature_importance: JSON or IO :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str :return: None :rtype: None :raises ~azure.core.exceptions.HttpResponseError: Example: .. code-block:: python # JSON input template you can fill out and use as your body input. feature_importance = { "endTime": "2020-02-20 00:00:00", # The end time of the feature importance. Required. "name": "str", # The name of the feature importance. Required. "startTime": "2020-02-20 00:00:00" # The start time of the feature importance. Required. } """ await self._client.create_feature_importance(feature_importance_id, feature_importance, **kwargs)
[docs] @distributed_trace_async async def get_feature_importance(self, feature_importance_id: str, **kwargs: Any) -> JSON: """Feature Importance. Get the Feature Importance associated with the Id. :param feature_importance_id: Id of the Feature Importance. Required. :type feature_importance_id: str :return: JSON object :rtype: JSON :raises ~azure.core.exceptions.HttpResponseError: Example: .. code-block:: python # response body for status code(s): 200 response == { "creationTime": "2020-02-20 00:00:00", # Optional. The creation time of the feature importance. "description": "str", # Optional. Description of the feature importance job. "endTime": "2020-02-20 00:00:00", # Optional. The end time of the feature importance. "featureScores": [ { "featureName": "str", # Optional. Feature name. "namespace": "str", # Optional. Feature namespace. "score": 0.0 # Optional. Feature score. } ], "id": "str", # Optional. The ID of the feature importance. "name": "str", # Optional. The name of the feature importance. "startTime": "2020-02-20 00:00:00", # Optional. The start time of the feature importance. "status": "str" # Optional. The status of the job processing the feature importance. Known values are: "Succeeded", "Running", "Failed", "NotSubmitted", "Timeout", and "Canceled". } """ return await self._client.get_feature_importance(feature_importance_id, **kwargs)
[docs] @distributed_trace def list_feature_importances( self, *, top: Optional[int] = None, skip: int = 0, **kwargs: Any ) -> AsyncIterable[JSON]: """All Feature Importances. List of all Feature Importances. :keyword top: The maximum number of resources to return from the collection. Defaults to maximum value of integer. Default value is None. :paramtype top: int :keyword skip: An offset into the collection of the first resource to be returned. Defaults to 0. Default value is 0. :paramtype skip: int :return: An iterator like instance of JSON object :rtype: ~azure.core.async_paging.AsyncItemPaged[JSON] :raises ~azure.core.exceptions.HttpResponseError: Example: .. code-block:: python # response body for status code(s): 200 response == { "creationTime": "2020-02-20 00:00:00", # Required. "endTime": "2020-02-20 00:00:00", # Required. "id": "str", # Required. "name": "str", # Required. "startTime": "2020-02-20 00:00:00", # Required. "status": "str" # The status of the feature importance job. Required. Known values are: "Succeeded", "Running", "Failed", "NotSubmitted", "Timeout", and "Canceled". } """ return self._client.list_feature_importances(top=top, skip=skip, **kwargs)
[docs] @distributed_trace_async async def delete_feature_importance( # pylint: disable=inconsistent-return-statements self, feature_importance_id: str, **kwargs: Any ) -> None: """Feature Importance. Delete the Feature Importance associated with the Id. :param feature_importance_id: Id of the Feature Importance to delete. Required. :type feature_importance_id: str :return: None :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ await self._client.delete_feature_importance(feature_importance_id, **kwargs)
[docs] def send_request(self, request: HttpRequest, **kwargs: Any) -> Awaitable[AsyncHttpResponse]: """Runs the network request through the client's chained policies. >>> from azure.core.rest import HttpRequest >>> request = HttpRequest("GET", "https://www.example.org/") <HttpRequest [GET], url: 'https://www.example.org/'> >>> response = await client.send_request(request) <AsyncHttpResponse: 200 OK> For more information on this code flow, see https://aka.ms/azsdk/dpcodegen/python/send_request :param request: The network request you want to make. Required. :type request: ~azure.core.rest.HttpRequest :keyword bool stream: Whether the response payload will be streamed. Defaults to False. :return: The response of your network call. Does not do error handling on your response. :rtype: ~azure.core.rest.AsyncHttpResponse """ return self._client.send_request(request, **kwargs)
[docs] async def close(self) -> None: await self._client.close()
async def __aenter__(self) -> "PersonalizerAdministrationClient": await self._client.__aenter__() return self async def __aexit__(self, *exc_details) -> None: await self._client.__aexit__(*exc_details)
[docs]class PersonalizerClient: """Personalizer Service is an Azure Cognitive Service that makes it easy to target content and experiences without complex pre-analysis or cleanup of past data. Given a context and featurized content, the Personalizer Service returns which content item to show to users in rewardActionId. As rewards are sent in response to the use of rewardActionId, the reinforcement learning algorithm will improve the model and improve performance of future rank calls. :param endpoint: Supported Cognitive Services endpoint. Required. :type endpoint: str :param credential: Credential needed for the client to connect to Azure. Required. :type credential: ~azure.core.credentials.AzureKeyCredential or ~azure.core.credentials_async.AsyncTokenCredential :keyword api_version: Api Version. Default value is "2022-09-01-preview". Note that overriding this default value may result in unsupported behavior. :paramtype api_version: str """ def __init__( self, endpoint: str, credential: Union[AzureKeyCredential, AsyncTokenCredential], **kwargs: Any ) -> None: self._client = PersonalizerClientGenerated( endpoint=endpoint.rstrip("/"), credential=credential, # type: ignore authentication_policy=kwargs.pop("authentication_policy", _authentication_policy(credential, **kwargs)), **kwargs )
[docs] @distributed_trace_async async def rank(self, rank_request: Union[JSON, IO], **kwargs: Any) -> JSON: """Rank. Submit a Personalizer rank request. Receives a context and a list of actions. Returns which of the provided actions should be used by your application, in rewardActionId. :param rank_request: A Personalizer Rank request. Required. :type rank_request: JSON or IO :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str :return: JSON object :rtype: JSON :raises ~azure.core.exceptions.HttpResponseError: Example: .. code-block:: python # JSON input template you can fill out and use as your body input. rank_request = { "actions": [ { "features": [ {} # List of dictionaries containing features. Required. ], "id": "str" # Id of the action. Required. } ], "contextFeatures": [ {} # Optional. Features of the context used for Personalizer as a"ndictionary of dictionaries. This is determined by your application, and"ntypically includes features about the current user, their"ndevice, profile information, aggregated data about time and date, etc."nFeatures should not include personally identifiable information (PII),"nunique UserIDs, or precise timestamps. ], "deferActivation": False, # Optional. Default value is False. Send false if it is certain the rewardActionId in rank results will be shown to the user, therefore"nPersonalizer will expect a Reward call, otherwise it will assign the default"nReward to the event. Send true if it is possible the user will not see the action specified in the rank results,"n(e.g. because the page is rendering later, or the Rank results may be overridden by code further downstream)."nYou must call the Activate Event API if the event output is shown to users, otherwise Rewards will be ignored. "eventId": "str", # Optional. Optionally pass an eventId that uniquely identifies this Rank event."nIf null, the service generates a unique eventId. The eventId will be used for"nassociating this request with its reward, as well as seeding the pseudo-random"ngenerator when making a Personalizer call. "excludedActions": [ "str" # Optional. The set of action ids to exclude from ranking."nPersonalizer will consider the first non-excluded item in the array as the Baseline action when performing Offline Evaluations. ] } # response body for status code(s): 201 response == { "eventId": "str", # The eventId for the round trip from request to response. Required. "ranking": [ { "id": "str", # Optional. Id of the action. "probability": 0.0 # Optional. Probability of the action. } ], "rewardActionId": "str" # Optional. The action chosen by the Personalizer service."nThis is the action your application should display, and for which to report the reward."nThis might not be the first found in 'ranking'. } """ return await self._client.rank_single_slot(rank_request, **kwargs)
[docs] @distributed_trace_async async def reward( # pylint: disable=inconsistent-return-statements self, event_id: str, reward: Union[JSON, IO], **kwargs: Any ) -> None: """Reward. Report reward between 0 and 1 that resulted from using the action specified in rewardActionId, for the specified event. :param event_id: The event id this reward applies to. Required. :type event_id: str :param reward: The reward should be a floating point number, typically between 0 and 1. Required. :type reward: JSON or IO :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str :return: None :rtype: None :raises ~azure.core.exceptions.HttpResponseError: Example: .. code-block:: python # JSON input template you can fill out and use as your body input. reward = { "value": 0.0 # Reward to be assigned to an action. Value is a float calculated by your application, typically between 0 and 1, and must be between -1 and 1. Required. } """ return await self._client.reward_single_slot_event(event_id, reward, **kwargs)
[docs] @distributed_trace_async async def activate(self, event_id: str, **kwargs: Any) -> None: # pylint: disable=inconsistent-return-statements """Activate Event. Report that the specified event was actually used (e.g. by being displayed to the user) and a reward should be expected for it. :param event_id: The event ID to be activated. Required. :type event_id: str :return: None :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ return await self._client.activate_single_slot_event(event_id, **kwargs)
[docs] @distributed_trace_async async def rank_multi_slot(self, body: Union[JSON, IO], **kwargs: Any) -> JSON: """Rank (MultiSlot). Submit a Personalizer multi-slot rank request. Receives a context, a list of actions, and a list of slots. Returns which of the provided actions should be used in each slot, in each rewardActionId. :param body: A Personalizer multi-slot Rank request. Required. :type body: JSON or IO :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str :return: JSON object :rtype: JSON :raises ~azure.core.exceptions.HttpResponseError: Example: .. code-block:: python # JSON input template you can fill out and use as your body input. body = { "actions": [ { "features": [ {} # List of dictionaries containing features. Required. ], "id": "str" # Id of the action. Required. } ], "slots": [ { "baselineAction": "str", # The 'baseline action' ID for the slot."nThe BaselineAction is the Id of the Action your application would use in that slot if Personalizer didn't exist."nBaselineAction must be defined for every slot."nBaselineAction should never be part of ExcludedActions."nEach slot must have a unique BaselineAction which corresponds to an an action from the event's Actions list. Required. "id": "str", # Slot ID. Required. "excludedActions": [ "str" # Optional. List of excluded action Ids. ], "features": [ {} # Optional. List of dictionaries containing slot features. ] } ], "contextFeatures": [ {} # Optional. Features of the context used for Personalizer as a"ndictionary of dictionaries. This is determined by your application, and"ntypically includes features about the current user, their"ndevice, profile information, aggregated data about time and date, etc."nFeatures should not include personally identifiable information (PII),"nunique UserIDs, or precise timestamps. ], "deferActivation": False, # Optional. Default value is False. Send false if it is certain the rewardActionId in rank results will be shown to the user, therefore"nPersonalizer will expect a Reward call, otherwise it will assign the default"nReward to the event. Send true if it is possible the user will not see the action specified in the rank results,"n(e.g. because the page is rendering later, or the Rank results may be overridden by code further downstream)."nYou must call the Activate Event API if the event output is shown to users, otherwise Rewards will be ignored. "eventId": "str" # Optional. Optionally pass an eventId that uniquely identifies this Rank event."nIf null, the service generates a unique eventId. The eventId will be used for"nassociating this request with its reward, as well as seeding the pseudo-random"ngenerator when making a Personalizer call. } # response body for status code(s): 201 response == { "eventId": "str", # The eventId for the round trip from request to response. Required. "slots": [ { "id": "str", # Id is the slot ID. Required. "rewardActionId": "str" # Optional. RewardActionID is the action ID recommended by Personalizer. } ] } """ return await self._client.rank_multi_slot(body, **kwargs)
[docs] @distributed_trace_async async def reward_multi_slot( # pylint: disable=inconsistent-return-statements self, event_id: str, body: Union[JSON, IO], **kwargs: Any ) -> None: """Reward (MultiSlot). Report reward that resulted from using the action specified in rewardActionId for the slot. :param event_id: The event id this reward applies to. Required. :type event_id: str :param body: List of slot id and reward values. The reward should be a floating point number, typically between 0 and 1. Required. :type body: JSON or IO :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str :return: None :rtype: None :raises ~azure.core.exceptions.HttpResponseError: Example: .. code-block:: python # JSON input template you can fill out and use as your body input. body = { "reward": [ { "slotId": "str", # Slot id for which we are sending the reward. Required. "value": 0.0 # Reward to be assigned to slotId. Value should be between -1 and 1 inclusive. Required. } ] } """ return await self._client.reward_multi_slot_event(event_id, body, **kwargs)
[docs] @distributed_trace_async async def activate_multi_slot( self, event_id: str, **kwargs: Any ) -> None: # pylint: disable=inconsistent-return-statements """Activate Event (MultiSlot). Report that the specified event was actually used or displayed to the user and a rewards should be expected for it. :param event_id: The event ID this activation applies to. Required. :type event_id: str :return: None :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ return await self._client.activate_multi_slot_event(event_id, **kwargs)
[docs] def send_request(self, request: HttpRequest, **kwargs: Any) -> Awaitable[AsyncHttpResponse]: """Runs the network request through the client's chained policies. >>> from azure.core.rest import HttpRequest >>> request = HttpRequest("GET", "https://www.example.org/") <HttpRequest [GET], url: 'https://www.example.org/'> >>> response = await client.send_request(request) <AsyncHttpResponse: 200 OK> For more information on this code flow, see https://aka.ms/azsdk/dpcodegen/python/send_request :param request: The network request you want to make. Required. :type request: ~azure.core.rest.HttpRequest :keyword bool stream: Whether the response payload will be streamed. Defaults to False. :return: The response of your network call. Does not do error handling on your response. :rtype: ~azure.core.rest.AsyncHttpResponse """ return self._client.send_request(request, **kwargs)
[docs] async def close(self) -> None: await self._client.close()
async def __aenter__(self) -> "PersonalizerClient": await self._client.__aenter__() return self async def __aexit__(self, *exc_details) -> None: await self._client.__aexit__(*exc_details)
def patch_sdk(): """Do not remove from this file. `patch_sdk` is a last resort escape hatch that allows you to do customizations you can't accomplish using the techniques described in https://aka.ms/azsdk/python/dpcodegen/python/customize """