class_docstr: Assigns the `update_kl()` and other KL-related methods to a TFPolicy.
  
  This is used in Algorithms to update the KL coefficient after each
  learning step based on `config.kl_target` and the measured KL value
  (from the train_batch).
code: def update_kl(self, sampled_kl):
      # Update the current KL value based on the recently measured value.
      # Increase.
      if sampled_kl > 2.0 * self.kl_target:
          self.kl_coeff_val *= 1.5
      # Decrease.
      elif sampled_kl < 0.5 * self.kl_target:
          self.kl_coeff_val *= 0.5
      # No change.
      else:
          return self.kl_coeff_val
  
      # Make sure, new value is also stored in graph/tf variable.
      self._set_kl_coeff(self.kl_coeff_val)
  
      # Return the current KL value.
      return self.kl_coeff_val
  
imports: import logging
  from typing import Dict, List
  import numpy
  from ray.rllib.models.modelv2 import ModelV2
  from ray.rllib.policy.eager_tf_policy import EagerTFPolicy
  from ray.rllib.policy.eager_tf_policy_v2 import EagerTFPolicyV2
  from ray.rllib.policy.policy import Policy, PolicyState
  from ray.rllib.policy.sample_batch import SampleBatch
  from ray.rllib.policy.tf_policy import TFPolicy
  from ray.rllib.utils.annotations import DeveloperAPI, override
  from ray.rllib.utils.framework import get_variable, try_import_tf
  from ray.rllib.utils.schedules import PiecewiseSchedule
  from ray.rllib.utils.tf_utils import make_tf_callable
  from ray.rllib.utils.typing import AlgorithmConfigDict, LocalOptimizer, ModelGradients, TensorType
label_desc: Use image node_id 2 for calling the KLCoeffMixin obj's underlying member method code with example usage: obj.update_kl(sampled_kl) and returns: self, self