class_docstr: Initialize a new Inference Client.
  
  [`InferenceClient`] aims to provide a unified experience to perform inference. The client can be used
  seamlessly with either the (free) Inference API or self-hosted Inference Endpoints.
  
  Args:
      model (`str`, `optional`):
          The model to run inference with. Can be a model id hosted on the Hugging Face Hub, e.g. `bigcode/starcoder`
          or a URL to a deployed Inference Endpoint. Defaults to None, in which case a recommended model is
          automatically selected for the task.
      token (`str`, *optional*):
          Hugging Face token. Will default to the locally saved token. Pass `token=False` if you don't want to send
          your token to the server.
      timeout (`float`, `optional`):
          The maximum number of seconds to wait for a response from the server. Loading a new model in Inference
          API can take up to several minutes. Defaults to None, meaning it will loop until the server is available.
      headers (`Dict[str, str]`, `optional`):
          Additional headers to send to the server. By default only the authorization and user-agent headers are sent.
          Values in this dictionary will override the default values.
      cookies (`Dict[str, str]`, `optional`):
          Additional cookies to send to the server.
docstr: Provide input image and text labels to predict text labels for the image.
  
  Args:
      image (`Union[str, Path, bytes, BinaryIO]`):
          The input image to caption. It can be raw bytes, an image file, or a URL to an online image.
      labels (`List[str]`):
          List of string possible labels. There must be at least 2 labels.
      model (`str`, *optional*):
          The model to use for inference. Can be a model ID hosted on the Hugging Face Hub or a URL to a deployed
          Inference Endpoint. This parameter overrides the model defined at the instance level. Defaults to None.
  
  Returns:
      `List[Dict]`: List of classification outputs containing the predicted labels and their confidence.
  
  Raises:
      [`InferenceTimeoutError`]:
          If the model is unavailable or the request times out.
      `HTTPError`:
          If the request fails with an HTTP error status code other than HTTP 503.
  
  Example:
  ```py
  >>> from huggingface_hub import InferenceClient
  >>> client = InferenceClient()
  
  >>> client.zero_shot_image_classification(
  ...     "https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Cute_dog.jpg/320px-Cute_dog.jpg",
  ...     labels=["dog", "cat", "horse"],
  ... )
  [{"label": "dog", "score": 0.956}, ...]
  ```
docstr_tok: ["Provide","input","image","and","text","labels","to","predict","text","labels","for","the","image",".","Args",":","image","(","`","Union","[","str",",","Path",",","bytes",",","BinaryIO","]","`",")",":","The","input","image","to","caption",".","It","can","be","raw","bytes",",","an","image","file",",","or","a","URL","to","an","online","image",".","labels","(","`","List","[","str","]","`",")",":","List","of","string","possible","labels",".","There","must","be","at","least","2","labels",".","model","(","`","str","`",",","*","optional","*",")",":","The","model","to","use","for","inference",".","Can","be","a","model","ID","hosted","on","the","Hugging","Face","Hub","or","a","URL","to","a","deployed","Inference","Endpoint",".","This","parameter","overrides","the","model","defined","at","the","instance","level",".","Defaults","to","None",".","Returns",":","`","List","[","Dict","]","`",":","List","of","classification","outputs","containing","the","predicted","labels","and","their","confidence",".","Raises",":","[","`","InferenceTimeoutError","`","]",":","If","the","model","is","unavailable","or","the","request","times","out",".","`","HTTPError","`",":","If","the","request","fails","with","an","HTTP","error","status","code","other","than","HTTP","503",".","Example",":","``","`","py",">",">",">","from","huggingface_hub","import","InferenceClient",">",">",">","client","=","InferenceClient","(",")",">",">",">","client.zero_shot_image_classification","(","...","``","https",":","\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/4\/43\/Cute_dog.jpg\/320px-Cute_dog.jpg","''",",","...","labels=","[","``","dog","''",",","``","cat","''",",","``","horse","''","]",",","...",")","[","{","``","label","''",":","``","dog","''",",","``","score","''",":","0.956","}",",","...","]","``","`"]
code: def zero_shot_image_classification(
      self,
      image: ContentT,
      labels: List[str],
      *,
      model: Optional[str] = None,
  ) -> List[ClassificationOutput]:
      """
      Provide input image and text labels to predict text labels for the image.
  
      Args:
          image (`Union[str, Path, bytes, BinaryIO]`):
              The input image to caption. It can be raw bytes, an image file, or a URL to an online image.
          labels (`List[str]`):
              List of string possible labels. There must be at least 2 labels.
          model (`str`, *optional*):
              The model to use for inference. Can be a model ID hosted on the Hugging Face Hub or a URL to a deployed
              Inference Endpoint. This parameter overrides the model defined at the instance level. Defaults to None.
  
      Returns:
          `List[Dict]`: List of classification outputs containing the predicted labels and their confidence.
  
      Raises:
          [`InferenceTimeoutError`]:
              If the model is unavailable or the request times out.
          `HTTPError`:
              If the request fails with an HTTP error status code other than HTTP 503.
  
      Example:
      ```py
      >>> from huggingface_hub import InferenceClient
      >>> client = InferenceClient()
  
      >>> client.zero_shot_image_classification(
      ...     "https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Cute_dog.jpg/320px-Cute_dog.jpg",
      ...     labels=["dog", "cat", "horse"],
      ... )
      [{"label": "dog", "score": 0.956}, ...]
      ```
      """
      # Raise ValueError if input is less than 2 labels
      if len(labels) < 2:
          raise ValueError(
              "You must specify at least 2 classes to compare."
          )
  
      response = self.post(
          json={
              "image": _b64_encode(image),
              "parameters": {"candidate_labels": ",".join(labels)},
          },
          model=model,
          task="zero-shot-image-classification",
      )
      return _bytes_to_list(response)
  
imports: import logging
  import time
  import warnings
  from dataclasses import asdict
  from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Literal, Optional, Union, overload
  from requests import HTTPError
  from requests.structures import CaseInsensitiveDict
  from huggingface_hub.constants import ALL_INFERENCE_API_FRAMEWORKS, INFERENCE_ENDPOINT, MAIN_INFERENCE_API_FRAMEWORKS
  from huggingface_hub.inference._common import TASKS_EXPECTING_IMAGES, ContentT, InferenceTimeoutError, ModelStatus, _b64_encode, _b64_to_image, _bytes_to_dict, _bytes_to_image, _bytes_to_list, _fetch_recommended_models, _import_numpy, _is_tgi_server, _open_as_binary, _set_as_non_tgi, _stream_text_generation_response
  from huggingface_hub.inference._text_generation import TextGenerationParameters, TextGenerationRequest, TextGenerationResponse, TextGenerationStreamResponse, raise_text_generation_error
  from huggingface_hub.inference._types import ClassificationOutput, ConversationalOutput, FillMaskOutput, ImageSegmentationOutput, ObjectDetectionOutput, QuestionAnsweringOutput, TableQuestionAnsweringOutput, TokenClassificationOutput
  from huggingface_hub.utils import BadRequestError, build_hf_headers, get_session, hf_raise_for_status
label_desc: Use image node_id 36 for calling the InferenceClient obj's underlying member method code with example usage: obj.zero_shot_image_classification(image, labels) and returns: _bytes_to_list