packages feed

amazonka-sagemaker-2.0: gen/Amazonka/SageMaker/Types/ClarifyInferenceConfig.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.SageMaker.Types.ClarifyInferenceConfig
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.SageMaker.Types.ClarifyInferenceConfig where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.SageMaker.Types.ClarifyFeatureType

-- | The inference configuration parameter for the model container.
--
-- /See:/ 'newClarifyInferenceConfig' smart constructor.
data ClarifyInferenceConfig = ClarifyInferenceConfig'
  { -- | A template string used to format a JSON record into an acceptable model
    -- container input. For example, a @ContentTemplate@ string
    -- @\'{\"myfeatures\":$features}\'@ will format a list of features
    -- @[1,2,3]@ into the record string @\'{\"myfeatures\":[1,2,3]}\'@.
    -- Required only when the model container input is in JSON Lines format.
    contentTemplate :: Prelude.Maybe Prelude.Text,
    -- | The names of the features. If provided, these are included in the
    -- endpoint response payload to help readability of the @InvokeEndpoint@
    -- output. See the
    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-invoke-endpoint.html#clarify-online-explainability-response Response>
    -- section under __Invoke the endpoint__ in the Developer Guide for more
    -- information.
    featureHeaders :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | A list of data types of the features (optional). Applicable only to NLP
    -- explainability. If provided, @FeatureTypes@ must have at least one
    -- @\'text\'@ string (for example, @[\'text\']@). If @FeatureTypes@ is not
    -- provided, the explainer infers the feature types based on the baseline
    -- data. The feature types are included in the endpoint response payload.
    -- For additional information see the
    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-invoke-endpoint.html#clarify-online-explainability-response response>
    -- section under __Invoke the endpoint__ in the Developer Guide for more
    -- information.
    featureTypes :: Prelude.Maybe (Prelude.NonEmpty ClarifyFeatureType),
    -- | Provides the JMESPath expression to extract the features from a model
    -- container input in JSON Lines format. For example, if
    -- @FeaturesAttribute@ is the JMESPath expression @\'myfeatures\'@, it
    -- extracts a list of features @[1,2,3]@ from request data
    -- @\'{\"myfeatures\":[1,2,3]}\'@.
    featuresAttribute :: Prelude.Maybe Prelude.Text,
    -- | A JMESPath expression used to locate the list of label headers in the
    -- model container output.
    --
    -- __Example__: If the model container output of a batch request is
    -- @\'{\"labels\":[\"cat\",\"dog\",\"fish\"],\"probability\":[0.6,0.3,0.1]}\'@,
    -- then set @LabelAttribute@ to @\'labels\'@ to extract the list of label
    -- headers @[\"cat\",\"dog\",\"fish\"]@
    labelAttribute :: Prelude.Maybe Prelude.Text,
    -- | For multiclass classification problems, the label headers are the names
    -- of the classes. Otherwise, the label header is the name of the predicted
    -- label. These are used to help readability for the output of the
    -- @InvokeEndpoint@ API. See the
    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-invoke-endpoint.html#clarify-online-explainability-response response>
    -- section under __Invoke the endpoint__ in the Developer Guide for more
    -- information. If there are no label headers in the model container
    -- output, provide them manually using this parameter.
    labelHeaders :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | A zero-based index used to extract a label header or list of label
    -- headers from model container output in CSV format.
    --
    -- __Example for a multiclass model:__ If the model container output
    -- consists of label headers followed by probabilities:
    -- @\'\"[\\\'cat\\\',\\\'dog\\\',\\\'fish\\\']\",\"[0.1,0.6,0.3]\"\'@, set
    -- @LabelIndex@ to @0@ to select the label headers
    -- @[\'cat\',\'dog\',\'fish\']@.
    labelIndex :: Prelude.Maybe Prelude.Natural,
    -- | The maximum payload size (MB) allowed of a request from the explainer to
    -- the model container. Defaults to @6@ MB.
    maxPayloadInMB :: Prelude.Maybe Prelude.Natural,
    -- | The maximum number of records in a request that the model container can
    -- process when querying the model container for the predictions of a
    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-create-endpoint.html#clarify-online-explainability-create-endpoint-synthetic synthetic dataset>.
    -- A record is a unit of input data that inference can be made on, for
    -- example, a single line in CSV data. If @MaxRecordCount@ is @1@, the
    -- model container expects one record per request. A value of 2 or greater
    -- means that the model expects batch requests, which can reduce overhead
    -- and speed up the inferencing process. If this parameter is not provided,
    -- the explainer will tune the record count per request according to the
    -- model container\'s capacity at runtime.
    maxRecordCount :: Prelude.Maybe Prelude.Natural,
    -- | A JMESPath expression used to extract the probability (or score) from
    -- the model container output if the model container is in JSON Lines
    -- format.
    --
    -- __Example__: If the model container output of a single request is
    -- @\'{\"predicted_label\":1,\"probability\":0.6}\'@, then set
    -- @ProbabilityAttribute@ to @\'probability\'@.
    probabilityAttribute :: Prelude.Maybe Prelude.Text,
    -- | A zero-based index used to extract a probability value (score) or list
    -- from model container output in CSV format. If this value is not
    -- provided, the entire model container output will be treated as a
    -- probability value (score) or list.
    --
    -- __Example for a single class model:__ If the model container output
    -- consists of a string-formatted prediction label followed by its
    -- probability: @\'1,0.6\'@, set @ProbabilityIndex@ to @1@ to select the
    -- probability value @0.6@.
    --
    -- __Example for a multiclass model:__ If the model container output
    -- consists of a string-formatted prediction label followed by its
    -- probability:
    -- @\'\"[\\\'cat\\\',\\\'dog\\\',\\\'fish\\\']\",\"[0.1,0.6,0.3]\"\'@, set
    -- @ProbabilityIndex@ to @1@ to select the probability values
    -- @[0.1,0.6,0.3]@.
    probabilityIndex :: Prelude.Maybe Prelude.Natural
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ClarifyInferenceConfig' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'contentTemplate', 'clarifyInferenceConfig_contentTemplate' - A template string used to format a JSON record into an acceptable model
-- container input. For example, a @ContentTemplate@ string
-- @\'{\"myfeatures\":$features}\'@ will format a list of features
-- @[1,2,3]@ into the record string @\'{\"myfeatures\":[1,2,3]}\'@.
-- Required only when the model container input is in JSON Lines format.
--
-- 'featureHeaders', 'clarifyInferenceConfig_featureHeaders' - The names of the features. If provided, these are included in the
-- endpoint response payload to help readability of the @InvokeEndpoint@
-- output. See the
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-invoke-endpoint.html#clarify-online-explainability-response Response>
-- section under __Invoke the endpoint__ in the Developer Guide for more
-- information.
--
-- 'featureTypes', 'clarifyInferenceConfig_featureTypes' - A list of data types of the features (optional). Applicable only to NLP
-- explainability. If provided, @FeatureTypes@ must have at least one
-- @\'text\'@ string (for example, @[\'text\']@). If @FeatureTypes@ is not
-- provided, the explainer infers the feature types based on the baseline
-- data. The feature types are included in the endpoint response payload.
-- For additional information see the
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-invoke-endpoint.html#clarify-online-explainability-response response>
-- section under __Invoke the endpoint__ in the Developer Guide for more
-- information.
--
-- 'featuresAttribute', 'clarifyInferenceConfig_featuresAttribute' - Provides the JMESPath expression to extract the features from a model
-- container input in JSON Lines format. For example, if
-- @FeaturesAttribute@ is the JMESPath expression @\'myfeatures\'@, it
-- extracts a list of features @[1,2,3]@ from request data
-- @\'{\"myfeatures\":[1,2,3]}\'@.
--
-- 'labelAttribute', 'clarifyInferenceConfig_labelAttribute' - A JMESPath expression used to locate the list of label headers in the
-- model container output.
--
-- __Example__: If the model container output of a batch request is
-- @\'{\"labels\":[\"cat\",\"dog\",\"fish\"],\"probability\":[0.6,0.3,0.1]}\'@,
-- then set @LabelAttribute@ to @\'labels\'@ to extract the list of label
-- headers @[\"cat\",\"dog\",\"fish\"]@
--
-- 'labelHeaders', 'clarifyInferenceConfig_labelHeaders' - For multiclass classification problems, the label headers are the names
-- of the classes. Otherwise, the label header is the name of the predicted
-- label. These are used to help readability for the output of the
-- @InvokeEndpoint@ API. See the
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-invoke-endpoint.html#clarify-online-explainability-response response>
-- section under __Invoke the endpoint__ in the Developer Guide for more
-- information. If there are no label headers in the model container
-- output, provide them manually using this parameter.
--
-- 'labelIndex', 'clarifyInferenceConfig_labelIndex' - A zero-based index used to extract a label header or list of label
-- headers from model container output in CSV format.
--
-- __Example for a multiclass model:__ If the model container output
-- consists of label headers followed by probabilities:
-- @\'\"[\\\'cat\\\',\\\'dog\\\',\\\'fish\\\']\",\"[0.1,0.6,0.3]\"\'@, set
-- @LabelIndex@ to @0@ to select the label headers
-- @[\'cat\',\'dog\',\'fish\']@.
--
-- 'maxPayloadInMB', 'clarifyInferenceConfig_maxPayloadInMB' - The maximum payload size (MB) allowed of a request from the explainer to
-- the model container. Defaults to @6@ MB.
--
-- 'maxRecordCount', 'clarifyInferenceConfig_maxRecordCount' - The maximum number of records in a request that the model container can
-- process when querying the model container for the predictions of a
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-create-endpoint.html#clarify-online-explainability-create-endpoint-synthetic synthetic dataset>.
-- A record is a unit of input data that inference can be made on, for
-- example, a single line in CSV data. If @MaxRecordCount@ is @1@, the
-- model container expects one record per request. A value of 2 or greater
-- means that the model expects batch requests, which can reduce overhead
-- and speed up the inferencing process. If this parameter is not provided,
-- the explainer will tune the record count per request according to the
-- model container\'s capacity at runtime.
--
-- 'probabilityAttribute', 'clarifyInferenceConfig_probabilityAttribute' - A JMESPath expression used to extract the probability (or score) from
-- the model container output if the model container is in JSON Lines
-- format.
--
-- __Example__: If the model container output of a single request is
-- @\'{\"predicted_label\":1,\"probability\":0.6}\'@, then set
-- @ProbabilityAttribute@ to @\'probability\'@.
--
-- 'probabilityIndex', 'clarifyInferenceConfig_probabilityIndex' - A zero-based index used to extract a probability value (score) or list
-- from model container output in CSV format. If this value is not
-- provided, the entire model container output will be treated as a
-- probability value (score) or list.
--
-- __Example for a single class model:__ If the model container output
-- consists of a string-formatted prediction label followed by its
-- probability: @\'1,0.6\'@, set @ProbabilityIndex@ to @1@ to select the
-- probability value @0.6@.
--
-- __Example for a multiclass model:__ If the model container output
-- consists of a string-formatted prediction label followed by its
-- probability:
-- @\'\"[\\\'cat\\\',\\\'dog\\\',\\\'fish\\\']\",\"[0.1,0.6,0.3]\"\'@, set
-- @ProbabilityIndex@ to @1@ to select the probability values
-- @[0.1,0.6,0.3]@.
newClarifyInferenceConfig ::
  ClarifyInferenceConfig
newClarifyInferenceConfig =
  ClarifyInferenceConfig'
    { contentTemplate =
        Prelude.Nothing,
      featureHeaders = Prelude.Nothing,
      featureTypes = Prelude.Nothing,
      featuresAttribute = Prelude.Nothing,
      labelAttribute = Prelude.Nothing,
      labelHeaders = Prelude.Nothing,
      labelIndex = Prelude.Nothing,
      maxPayloadInMB = Prelude.Nothing,
      maxRecordCount = Prelude.Nothing,
      probabilityAttribute = Prelude.Nothing,
      probabilityIndex = Prelude.Nothing
    }

-- | A template string used to format a JSON record into an acceptable model
-- container input. For example, a @ContentTemplate@ string
-- @\'{\"myfeatures\":$features}\'@ will format a list of features
-- @[1,2,3]@ into the record string @\'{\"myfeatures\":[1,2,3]}\'@.
-- Required only when the model container input is in JSON Lines format.
clarifyInferenceConfig_contentTemplate :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe Prelude.Text)
clarifyInferenceConfig_contentTemplate = Lens.lens (\ClarifyInferenceConfig' {contentTemplate} -> contentTemplate) (\s@ClarifyInferenceConfig' {} a -> s {contentTemplate = a} :: ClarifyInferenceConfig)

-- | The names of the features. If provided, these are included in the
-- endpoint response payload to help readability of the @InvokeEndpoint@
-- output. See the
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-invoke-endpoint.html#clarify-online-explainability-response Response>
-- section under __Invoke the endpoint__ in the Developer Guide for more
-- information.
clarifyInferenceConfig_featureHeaders :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
clarifyInferenceConfig_featureHeaders = Lens.lens (\ClarifyInferenceConfig' {featureHeaders} -> featureHeaders) (\s@ClarifyInferenceConfig' {} a -> s {featureHeaders = a} :: ClarifyInferenceConfig) Prelude.. Lens.mapping Lens.coerced

-- | A list of data types of the features (optional). Applicable only to NLP
-- explainability. If provided, @FeatureTypes@ must have at least one
-- @\'text\'@ string (for example, @[\'text\']@). If @FeatureTypes@ is not
-- provided, the explainer infers the feature types based on the baseline
-- data. The feature types are included in the endpoint response payload.
-- For additional information see the
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-invoke-endpoint.html#clarify-online-explainability-response response>
-- section under __Invoke the endpoint__ in the Developer Guide for more
-- information.
clarifyInferenceConfig_featureTypes :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe (Prelude.NonEmpty ClarifyFeatureType))
clarifyInferenceConfig_featureTypes = Lens.lens (\ClarifyInferenceConfig' {featureTypes} -> featureTypes) (\s@ClarifyInferenceConfig' {} a -> s {featureTypes = a} :: ClarifyInferenceConfig) Prelude.. Lens.mapping Lens.coerced

-- | Provides the JMESPath expression to extract the features from a model
-- container input in JSON Lines format. For example, if
-- @FeaturesAttribute@ is the JMESPath expression @\'myfeatures\'@, it
-- extracts a list of features @[1,2,3]@ from request data
-- @\'{\"myfeatures\":[1,2,3]}\'@.
clarifyInferenceConfig_featuresAttribute :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe Prelude.Text)
clarifyInferenceConfig_featuresAttribute = Lens.lens (\ClarifyInferenceConfig' {featuresAttribute} -> featuresAttribute) (\s@ClarifyInferenceConfig' {} a -> s {featuresAttribute = a} :: ClarifyInferenceConfig)

-- | A JMESPath expression used to locate the list of label headers in the
-- model container output.
--
-- __Example__: If the model container output of a batch request is
-- @\'{\"labels\":[\"cat\",\"dog\",\"fish\"],\"probability\":[0.6,0.3,0.1]}\'@,
-- then set @LabelAttribute@ to @\'labels\'@ to extract the list of label
-- headers @[\"cat\",\"dog\",\"fish\"]@
clarifyInferenceConfig_labelAttribute :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe Prelude.Text)
clarifyInferenceConfig_labelAttribute = Lens.lens (\ClarifyInferenceConfig' {labelAttribute} -> labelAttribute) (\s@ClarifyInferenceConfig' {} a -> s {labelAttribute = a} :: ClarifyInferenceConfig)

-- | For multiclass classification problems, the label headers are the names
-- of the classes. Otherwise, the label header is the name of the predicted
-- label. These are used to help readability for the output of the
-- @InvokeEndpoint@ API. See the
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-invoke-endpoint.html#clarify-online-explainability-response response>
-- section under __Invoke the endpoint__ in the Developer Guide for more
-- information. If there are no label headers in the model container
-- output, provide them manually using this parameter.
clarifyInferenceConfig_labelHeaders :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
clarifyInferenceConfig_labelHeaders = Lens.lens (\ClarifyInferenceConfig' {labelHeaders} -> labelHeaders) (\s@ClarifyInferenceConfig' {} a -> s {labelHeaders = a} :: ClarifyInferenceConfig) Prelude.. Lens.mapping Lens.coerced

-- | A zero-based index used to extract a label header or list of label
-- headers from model container output in CSV format.
--
-- __Example for a multiclass model:__ If the model container output
-- consists of label headers followed by probabilities:
-- @\'\"[\\\'cat\\\',\\\'dog\\\',\\\'fish\\\']\",\"[0.1,0.6,0.3]\"\'@, set
-- @LabelIndex@ to @0@ to select the label headers
-- @[\'cat\',\'dog\',\'fish\']@.
clarifyInferenceConfig_labelIndex :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe Prelude.Natural)
clarifyInferenceConfig_labelIndex = Lens.lens (\ClarifyInferenceConfig' {labelIndex} -> labelIndex) (\s@ClarifyInferenceConfig' {} a -> s {labelIndex = a} :: ClarifyInferenceConfig)

-- | The maximum payload size (MB) allowed of a request from the explainer to
-- the model container. Defaults to @6@ MB.
clarifyInferenceConfig_maxPayloadInMB :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe Prelude.Natural)
clarifyInferenceConfig_maxPayloadInMB = Lens.lens (\ClarifyInferenceConfig' {maxPayloadInMB} -> maxPayloadInMB) (\s@ClarifyInferenceConfig' {} a -> s {maxPayloadInMB = a} :: ClarifyInferenceConfig)

-- | The maximum number of records in a request that the model container can
-- process when querying the model container for the predictions of a
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-create-endpoint.html#clarify-online-explainability-create-endpoint-synthetic synthetic dataset>.
-- A record is a unit of input data that inference can be made on, for
-- example, a single line in CSV data. If @MaxRecordCount@ is @1@, the
-- model container expects one record per request. A value of 2 or greater
-- means that the model expects batch requests, which can reduce overhead
-- and speed up the inferencing process. If this parameter is not provided,
-- the explainer will tune the record count per request according to the
-- model container\'s capacity at runtime.
clarifyInferenceConfig_maxRecordCount :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe Prelude.Natural)
clarifyInferenceConfig_maxRecordCount = Lens.lens (\ClarifyInferenceConfig' {maxRecordCount} -> maxRecordCount) (\s@ClarifyInferenceConfig' {} a -> s {maxRecordCount = a} :: ClarifyInferenceConfig)

-- | A JMESPath expression used to extract the probability (or score) from
-- the model container output if the model container is in JSON Lines
-- format.
--
-- __Example__: If the model container output of a single request is
-- @\'{\"predicted_label\":1,\"probability\":0.6}\'@, then set
-- @ProbabilityAttribute@ to @\'probability\'@.
clarifyInferenceConfig_probabilityAttribute :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe Prelude.Text)
clarifyInferenceConfig_probabilityAttribute = Lens.lens (\ClarifyInferenceConfig' {probabilityAttribute} -> probabilityAttribute) (\s@ClarifyInferenceConfig' {} a -> s {probabilityAttribute = a} :: ClarifyInferenceConfig)

-- | A zero-based index used to extract a probability value (score) or list
-- from model container output in CSV format. If this value is not
-- provided, the entire model container output will be treated as a
-- probability value (score) or list.
--
-- __Example for a single class model:__ If the model container output
-- consists of a string-formatted prediction label followed by its
-- probability: @\'1,0.6\'@, set @ProbabilityIndex@ to @1@ to select the
-- probability value @0.6@.
--
-- __Example for a multiclass model:__ If the model container output
-- consists of a string-formatted prediction label followed by its
-- probability:
-- @\'\"[\\\'cat\\\',\\\'dog\\\',\\\'fish\\\']\",\"[0.1,0.6,0.3]\"\'@, set
-- @ProbabilityIndex@ to @1@ to select the probability values
-- @[0.1,0.6,0.3]@.
clarifyInferenceConfig_probabilityIndex :: Lens.Lens' ClarifyInferenceConfig (Prelude.Maybe Prelude.Natural)
clarifyInferenceConfig_probabilityIndex = Lens.lens (\ClarifyInferenceConfig' {probabilityIndex} -> probabilityIndex) (\s@ClarifyInferenceConfig' {} a -> s {probabilityIndex = a} :: ClarifyInferenceConfig)

instance Data.FromJSON ClarifyInferenceConfig where
  parseJSON =
    Data.withObject
      "ClarifyInferenceConfig"
      ( \x ->
          ClarifyInferenceConfig'
            Prelude.<$> (x Data..:? "ContentTemplate")
            Prelude.<*> (x Data..:? "FeatureHeaders")
            Prelude.<*> (x Data..:? "FeatureTypes")
            Prelude.<*> (x Data..:? "FeaturesAttribute")
            Prelude.<*> (x Data..:? "LabelAttribute")
            Prelude.<*> (x Data..:? "LabelHeaders")
            Prelude.<*> (x Data..:? "LabelIndex")
            Prelude.<*> (x Data..:? "MaxPayloadInMB")
            Prelude.<*> (x Data..:? "MaxRecordCount")
            Prelude.<*> (x Data..:? "ProbabilityAttribute")
            Prelude.<*> (x Data..:? "ProbabilityIndex")
      )

instance Prelude.Hashable ClarifyInferenceConfig where
  hashWithSalt _salt ClarifyInferenceConfig' {..} =
    _salt
      `Prelude.hashWithSalt` contentTemplate
      `Prelude.hashWithSalt` featureHeaders
      `Prelude.hashWithSalt` featureTypes
      `Prelude.hashWithSalt` featuresAttribute
      `Prelude.hashWithSalt` labelAttribute
      `Prelude.hashWithSalt` labelHeaders
      `Prelude.hashWithSalt` labelIndex
      `Prelude.hashWithSalt` maxPayloadInMB
      `Prelude.hashWithSalt` maxRecordCount
      `Prelude.hashWithSalt` probabilityAttribute
      `Prelude.hashWithSalt` probabilityIndex

instance Prelude.NFData ClarifyInferenceConfig where
  rnf ClarifyInferenceConfig' {..} =
    Prelude.rnf contentTemplate
      `Prelude.seq` Prelude.rnf featureHeaders
      `Prelude.seq` Prelude.rnf featureTypes
      `Prelude.seq` Prelude.rnf featuresAttribute
      `Prelude.seq` Prelude.rnf labelAttribute
      `Prelude.seq` Prelude.rnf labelHeaders
      `Prelude.seq` Prelude.rnf labelIndex
      `Prelude.seq` Prelude.rnf maxPayloadInMB
      `Prelude.seq` Prelude.rnf maxRecordCount
      `Prelude.seq` Prelude.rnf probabilityAttribute
      `Prelude.seq` Prelude.rnf probabilityIndex

instance Data.ToJSON ClarifyInferenceConfig where
  toJSON ClarifyInferenceConfig' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("ContentTemplate" Data..=)
              Prelude.<$> contentTemplate,
            ("FeatureHeaders" Data..=)
              Prelude.<$> featureHeaders,
            ("FeatureTypes" Data..=) Prelude.<$> featureTypes,
            ("FeaturesAttribute" Data..=)
              Prelude.<$> featuresAttribute,
            ("LabelAttribute" Data..=)
              Prelude.<$> labelAttribute,
            ("LabelHeaders" Data..=) Prelude.<$> labelHeaders,
            ("LabelIndex" Data..=) Prelude.<$> labelIndex,
            ("MaxPayloadInMB" Data..=)
              Prelude.<$> maxPayloadInMB,
            ("MaxRecordCount" Data..=)
              Prelude.<$> maxRecordCount,
            ("ProbabilityAttribute" Data..=)
              Prelude.<$> probabilityAttribute,
            ("ProbabilityIndex" Data..=)
              Prelude.<$> probabilityIndex
          ]
      )