def __init__(
        self,
        client: NotDiamond,
        metric: Metric = None,
        timeout: int = 10,
        api_key: str = None,
        *args,
        **kwargs,
    ):
        """
        Initialize a NotDiamondSelector. Users should instantiate and configure a NotDiamond client as needed before
        creating this selector. The constructor will raise errors re: required client fields.
        """
        # Not needed - we will route using our own client based on the query prompt
        # Add @property for _llm here
        _encap_selector = LLMSingleSelector.from_defaults(llm=MockLLM())
        self._llm = None
        self._prompt = _encap_selector._prompt

        if not getattr(client, "llm_configs", None):
            raise ValueError(
                "NotDiamond client must have llm_configs before creating a NotDiamondSelector."
            )

        if metric and not isinstance(metric, Metric):
            raise ValueError(f"Invalid metric - needed type Metric but got {metric}")
        self._metric = metric or Metric("accuracy")

        self._client = client
        self._llms = [
            self._llm_config_to_client(llm_config)
            for llm_config in self._client.llm_configs
        ]
        self._timeout = timeout
        super().__init__(_encap_selector._llm, _encap_selector._prompt, *args, **kwargs)

        Initialize a NotDiamondSelector. Users should instantiate and configure a NotDiamond client as needed before
        creating this selector. The constructor will raise errors re: required client fields.
        
llama-index-integrations/selectors/llama-index-selectors-notdiamond/llama_index/selectors/notdiamond/base.py