def __init__(
      self,
      model: language_model.LanguageModel,
      agent_name: str,
      clock: game_clock.GameClock,
      components: Sequence[component.Component] | None = None,
      update_interval: datetime.timedelta = datetime.timedelta(hours=1),
      verbose: bool = False,
      user_controlled: bool = False,
      print_colour: str = 'green',
  ):
    """A generative agent.

    Args:
      model: a language model
      agent_name: the name of the agent
      clock: the game clock is needed to know when is the current time
      components: components that contextualise the policies. The components
        state will be added to the agents state in the order they are passed
        here.
      update_interval: how often to update components. In game time according to
        the clock argument.
      verbose: whether to print chains of thought or not
      user_controlled: if True, would query user input for speech and action
      print_colour: which colour to use for printing
    """
    self._verbose = verbose
    self._print_colour = print_colour

    self._model = model

    self._agent_name = agent_name
    self._clock = clock
    self._user_controlled = user_controlled
    self._update_interval = update_interval

    self._conversation_prefix = ''
    self._state_lock = threading.Lock()

    self._components = {}
    for comp in components:
      self.add_component(comp)

    self._log = []
    self._last_chain_of_thought = None
    self._last_update = datetime.datetime.min
    self._update()
A generative agent.

    Args:
      model: a language model
      agent_name: the name of the agent
      clock: the game clock is needed to know when is the current time
      components: components that contextualise the policies. The components
        state will be added to the agents state in the order they are passed
        here.
      update_interval: how often to update components. In game time according to
        the clock argument.
      verbose: whether to print chains of thought or not
      user_controlled: if True, would query user input for speech and action
      print_colour: which colour to use for printing
    
concordia/agents/deprecated/deprecated_agent.py