class_docstr: Write me
      
code: def __init__(
      self,
      model,
      nb_actions,
      policy=None,
      test_policy=None,
      gamma=0.99,
      nb_steps_warmup=10,
      train_interval=1,
      delta_clip=np.inf,
      *args,
      **kwargs,
  ):
      super(SarsaAgent, self).__init__(*args, **kwargs)
  
      # Do not use defaults in constructor because that would mean that each instance shares the same
      # policy.
      if policy is None:
          policy = EpsGreedyQPolicy()
      if test_policy is None:
          test_policy = GreedyQPolicy()
  
      self.model = model
      self.nb_actions = nb_actions
      self.policy = policy
      self.test_policy = test_policy
      self.gamma = gamma
      self.nb_steps_warmup = nb_steps_warmup
      self.train_interval = train_interval
  
      self.delta_clip = delta_clip
      self.compiled = False
      self.actions = None
      self.observations = None
      self.rewards = None
  
imports: import collections
  import numpy
  from keras.callbacks import History
  from keras.models import Model
  from keras.layers import Input, Lambda
  import keras.backend
  from rl.core import Agent
  from rl.agents.dqn import mean_q
  from rl.util import huber_loss
  from rl.policy import EpsGreedyQPolicy, GreedyQPolicy
  from rl.util import get_object_config
label_desc: Use image node_id 1 to create a new SARSAAgent object from inherited base classes: Agent with example: obj = SARSAAgent(model, nb_actions, policy, test_policy, gamma, nb_steps_warmup, train_interval, delta_clip)