def __init__(
        self,
        endpoint: str,
        auth: Optional[Any] = None,
        retries: Optional[int] = DEFAULT_RETRIES,
        backoff_factor: Optional[float] = DEFAULT_BACKOFF_FACTOR,
        timeout: Optional[Union[float, Tuple[float, float]]] = None,
        **kwargs: Any,
    ) -> None:
        """
        Initialize the BaseClient.

        Args:
            endpoint (str): The URL endpoint to send the request.
            auth (Optional[Any]): The authentication signer for the requests.
            retries (Optional[int]): The number of retry attempts for the request.
            backoff_factor (Optional[float]): The factor to determine the delay between retries.
            timeout (Optional[Union[float, Tuple[float, float]]]): The timeout setting for the HTTP request.
            **kwargs: Additional keyword arguments.

        """
        self.endpoint = endpoint
        self.retries = retries or DEFAULT_RETRIES
        self.backoff_factor = backoff_factor or DEFAULT_BACKOFF_FACTOR
        self.timeout = timeout or TIMEOUT
        self.kwargs = kwargs

        # Use default signer from ADS if `auth` not provided
        if not auth:
            try:
                from ads.common import auth as authutil

                auth = auth or authutil.default_signer()
            except ImportError as ex:
                raise ImportError(
                    "The authentication signer for the requests was not provided. "
                    "Use `auth` attribute to provide the signer. "
                    "The authentication methods supported for LlamaIndex are equivalent to those "
                    "used with other OCI services and follow the standard SDK authentication methods, "
                    "specifically API Key, session token, instance principal, and resource principal. "
                    "For more details, refer to the documentation: "
                    "`https://accelerated-data-science.readthedocs.io/en/latest/user_guide/cli/authentication.html`. "
                    "Alternatively you can use the `oracle-ads` package. "
                    "Please install it with `pip install oracle-ads` and follow the example provided here: "
                    "`https://accelerated-data-science.readthedocs.io/en/latest/user_guide/cli/authentication.html#authentication`."
                ) from ex

        # Validate auth object
        if not callable(auth.get("signer")):
            raise ValueError("Auth object must have a 'signer' callable attribute.")
        self.auth = OCIAuth(auth["signer"])

        logger.debug(
            f"Initialized {self.__class__.__name__} with endpoint={self.endpoint}, "
            f"retries={self.retries}, backoff_factor={self.backoff_factor}, timeout={self.timeout}"
        )

        Initialize the BaseClient.

        Args:
            endpoint (str): The URL endpoint to send the request.
            auth (Optional[Any]): The authentication signer for the requests.
            retries (Optional[int]): The number of retry attempts for the request.
            backoff_factor (Optional[float]): The factor to determine the delay between retries.
            timeout (Optional[Union[float, Tuple[float, float]]]): The timeout setting for the HTTP request.
            **kwargs: Additional keyword arguments.

        
llama-index-integrations/llms/llama-index-llms-oci-data-science/llama_index/llms/oci_data_science/client.py