def __init__(
      self,
      model: language_model.LanguageModel,
      memory: associative_memory.AssociativeMemory,
      agent_name: str,
      clock_now: Callable[[], datetime.datetime] | None = None,
      summarize: bool = True,
      verbose: bool = False,
  ):
    """Initialize somatic state component.

    Args:
      model: a language model
      memory: an associative memory
      agent_name: the name of the agent
      clock_now: time callback to use for the state.
      summarize: if True, the resulting state will be a one sentence summary,
        otherwise state it would be a concatenation of five separate
        characteristics
      verbose: whether to print the state after updating or not
    """
    self._model = model
    self._memory = memory
    self._state = ''
    self._agent_name = agent_name
    self._clock_now = clock_now
    self._summarize = summarize
    self._verbose = verbose
    self._last_update = datetime.datetime.min

    self._characteristic_names = [
        'level of hunger',
        'level of thirst',
        'level of fatigue',
        'level of pain',
        'level of feeling socially connected in life',
    ]

    self._characteristics = []

    extra_instructions = (
        'Be literal. Do not use any metaphorical language. '
        + 'When there is insufficient evidence to infer a '
        + 'specific answer then guess the most likely one. '
        + 'Never express uncertainty unless '
        + f'{self._agent_name} would be uncertain.'
    )

    for characteristic_name in self._characteristic_names:
      self._characteristics.append(
          characteristic.Characteristic(
              model=model,
              memory=self._memory,
              agent_name=self._agent_name,
              characteristic_name=characteristic_name,
              state_clock_now=self._clock_now,
              extra_instructions=extra_instructions,
          )
      )
Initialize somatic state component.

    Args:
      model: a language model
      memory: an associative memory
      agent_name: the name of the agent
      clock_now: time callback to use for the state.
      summarize: if True, the resulting state will be a one sentence summary,
        otherwise state it would be a concatenation of five separate
        characteristics
      verbose: whether to print the state after updating or not
    
concordia/components/agent/deprecated/to_be_deprecated/somatic_state.py