Source code for nv_ingest_api.util.nim

# SPDX-FileCopyrightText: Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES.
# All rights reserved.
# SPDX-License-Identifier: Apache-2.0

from typing import Tuple, Optional

from nv_ingest_api.internal.primitives.nim.nim_client import NimClient
from nv_ingest_api.internal.primitives.nim.nim_model_interface import ModelInterface

__all__ = ["create_inference_client"]


[docs] def create_inference_client( endpoints: Tuple[str, str], model_interface: ModelInterface, auth_token: Optional[str] = None, infer_protocol: Optional[str] = None, timeout: float = 120.0, max_retries: int = 5, ) -> NimClient: """ Create a NimClient for interfacing with a model inference server. Parameters ---------- endpoints : tuple A tuple containing the gRPC and HTTP endpoints. model_interface : ModelInterface The model interface implementation to use. auth_token : str, optional Authorization token for HTTP requests (default: None). infer_protocol : str, optional The protocol to use ("grpc" or "http"). If not specified, it is inferred from the endpoints. Returns ------- NimClient The initialized NimClient. Raises ------ ValueError If an invalid infer_protocol is specified. """ grpc_endpoint, http_endpoint = endpoints if (infer_protocol is None) and (grpc_endpoint and grpc_endpoint.strip()): infer_protocol = "grpc" elif infer_protocol is None and http_endpoint: infer_protocol = "http" if infer_protocol not in ["grpc", "http"]: raise ValueError("Invalid infer_protocol specified. Must be 'grpc' or 'http'.") return NimClient(model_interface, infer_protocol, endpoints, auth_token, timeout, max_retries)