about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/google/genai/client.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/google/genai/client.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are here HEAD master
Diffstat (limited to '.venv/lib/python3.12/site-packages/google/genai/client.py')
-rw-r--r--.venv/lib/python3.12/site-packages/google/genai/client.py281
1 files changed, 281 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/google/genai/client.py b/.venv/lib/python3.12/site-packages/google/genai/client.py
new file mode 100644
index 00000000..f29bfe72
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/google/genai/client.py
@@ -0,0 +1,281 @@
+# Copyright 2024 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+import os
+from typing import Optional, Union
+
+import google.auth
+import pydantic
+
+from ._api_client import ApiClient, HttpOptions, HttpOptionsDict
+from ._replay_api_client import ReplayApiClient
+from .batches import AsyncBatches, Batches
+from .caches import AsyncCaches, Caches
+from .chats import AsyncChats, Chats
+from .files import AsyncFiles, Files
+from .live import AsyncLive
+from .models import AsyncModels, Models
+from .tunings import AsyncTunings, Tunings
+
+
+class AsyncClient:
+  """Client for making asynchronous (non-blocking) requests."""
+
+  def __init__(self, api_client: ApiClient):
+
+    self._api_client = api_client
+    self._models = AsyncModels(self._api_client)
+    self._tunings = AsyncTunings(self._api_client)
+    self._caches = AsyncCaches(self._api_client)
+    self._batches = AsyncBatches(self._api_client)
+    self._files = AsyncFiles(self._api_client)
+    self._live = AsyncLive(self._api_client)
+
+  @property
+  def models(self) -> AsyncModels:
+    return self._models
+
+  @property
+  def tunings(self) -> AsyncTunings:
+    return self._tunings
+
+  @property
+  def caches(self) -> AsyncCaches:
+    return self._caches
+
+  @property
+  def batches(self) -> AsyncBatches:
+    return self._batches
+
+  @property
+  def chats(self) -> AsyncChats:
+    return AsyncChats(modules=self.models)
+
+  @property
+  def files(self) -> AsyncFiles:
+    return self._files
+
+  @property
+  def live(self) -> AsyncLive:
+    return self._live
+
+
+class DebugConfig(pydantic.BaseModel):
+  """Configuration options that change client network behavior when testing."""
+
+  client_mode: Optional[str] = pydantic.Field(
+      default_factory=lambda: os.getenv('GOOGLE_GENAI_CLIENT_MODE', None)
+  )
+
+  replays_directory: Optional[str] = pydantic.Field(
+      default_factory=lambda: os.getenv('GOOGLE_GENAI_REPLAYS_DIRECTORY', None)
+  )
+
+  replay_id: Optional[str] = pydantic.Field(
+      default_factory=lambda: os.getenv('GOOGLE_GENAI_REPLAY_ID', None)
+  )
+
+
+class Client:
+  """Client for making synchronous requests.
+
+  Use this client to make a request to the Gemini Developer API or Vertex AI
+  API and then wait for the response.
+
+  Attributes:
+    api_key: The `API key <https://ai.google.dev/gemini-api/docs/api-key>`_ to
+      use for authentication. Applies to the Gemini Developer API only.
+    vertexai: Indicates whether the client should use the Vertex AI
+      API endpoints. Defaults to False (uses Gemini Developer API endpoints).
+      Applies to the Vertex AI API only.
+    credentials: The credentials to use for authentication when calling the
+      Vertex AI APIs. Credentials can be obtained from environment variables and
+      default credentials. For more information, see
+      `Set up Application Default Credentials
+      <https://cloud.google.com/docs/authentication/provide-credentials-adc>`_.
+      Applies to the Vertex AI API only.
+    project: The `Google Cloud project ID <https://cloud.google.com/vertex-ai/docs/start/cloud-environment>`_ to
+      use for quota. Can be obtained from environment variables (for example,
+      ``GOOGLE_CLOUD_PROJECT``). Applies to the Vertex AI API only.
+    location: The `location <https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations>`_
+      to send API requests to (for example, ``us-central1``). Can be obtained
+      from environment variables. Applies to the Vertex AI API only.
+    debug_config: Config settings that control network behavior of the client.
+      This is typically used when running test code.
+    http_options: Http options to use for the client. Response_payload can't be
+      set when passing to the client constructor.
+
+  Usage for the Gemini Developer API:
+
+  .. code-block:: python
+
+    from google import genai
+
+    client = genai.Client(api_key='my-api-key')
+
+  Usage for the Vertex AI API:
+
+  .. code-block:: python
+
+    from google import genai
+
+    client = genai.Client(
+        vertexai=True, project='my-project-id', location='us-central1'
+    )
+  """
+
+  def __init__(
+      self,
+      *,
+      vertexai: Optional[bool] = None,
+      api_key: Optional[str] = None,
+      credentials: Optional[google.auth.credentials.Credentials] = None,
+      project: Optional[str] = None,
+      location: Optional[str] = None,
+      debug_config: Optional[DebugConfig] = None,
+      http_options: Optional[Union[HttpOptions, HttpOptionsDict]] = None,
+  ):
+    """Initializes the client.
+
+       Args:
+          vertexai (bool):
+              Indicates whether the client should use the Vertex AI
+              API endpoints. Defaults to False (uses Gemini Developer API
+              endpoints). Applies to the Vertex AI API only.
+          api_key (str):
+              The `API key
+              <https://ai.google.dev/gemini-api/docs/api-key>`_ to use for
+              authentication. Applies to the Gemini Developer API only.
+          credentials (google.auth.credentials.Credentials):
+              The credentials to
+              use for authentication when calling the Vertex AI APIs. Credentials
+              can be obtained from environment variables and default credentials.
+              For more information, see `Set up Application Default Credentials
+              <https://cloud.google.com/docs/authentication/provide-credentials-adc>`_.
+              Applies to the Vertex AI API only.
+          project (str):
+              The `Google Cloud project ID
+              <https://cloud.google.com/vertex-ai/docs/start/cloud-environment>`_ to
+              use for quota. Can be obtained from environment variables (for
+              example, ``GOOGLE_CLOUD_PROJECT``). Applies to the Vertex AI API only.
+          location (str):
+              The `location
+              <https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations>`_
+              to send API requests to (for example, ``us-central1``). Can be
+              obtained from environment variables. Applies to the Vertex AI API
+              only.
+          debug_config (DebugConfig):
+              Config settings that control network
+              behavior of the client. This is typically used when running test code.
+          http_options (Union[HttpOptions, HttpOptionsDict]):
+              Http options to use for the client. Response_payload can't be
+              set when passing to the client constructor.
+    """
+
+    self._debug_config = debug_config or DebugConfig()
+
+    # Throw ValueError if response_payload is set in http_options due to
+    # unpredictable behavior when running multiple coroutines through
+    # client.aio.
+    if http_options and 'response_payload' in http_options:
+      raise ValueError(
+          'Setting response_payload in http_options is not supported.'
+      )
+
+    self._api_client = self._get_api_client(
+        vertexai=vertexai,
+        api_key=api_key,
+        credentials=credentials,
+        project=project,
+        location=location,
+        debug_config=self._debug_config,
+        http_options=http_options,
+    )
+
+    self._aio = AsyncClient(self._api_client)
+    self._models = Models(self._api_client)
+    self._tunings = Tunings(self._api_client)
+    self._caches = Caches(self._api_client)
+    self._batches = Batches(self._api_client)
+    self._files = Files(self._api_client)
+
+  @staticmethod
+  def _get_api_client(
+      vertexai: Optional[bool] = None,
+      api_key: Optional[str] = None,
+      credentials: Optional[google.auth.credentials.Credentials] = None,
+      project: Optional[str] = None,
+      location: Optional[str] = None,
+      debug_config: Optional[DebugConfig] = None,
+      http_options: Optional[HttpOptions] = None,
+  ):
+    if debug_config and debug_config.client_mode in [
+        'record',
+        'replay',
+        'auto',
+    ]:
+      return ReplayApiClient(
+          mode=debug_config.client_mode,
+          replay_id=debug_config.replay_id,
+          replays_directory=debug_config.replays_directory,
+          vertexai=vertexai,
+          api_key=api_key,
+          credentials=credentials,
+          project=project,
+          location=location,
+          http_options=http_options,
+      )
+
+    return ApiClient(
+        vertexai=vertexai,
+        api_key=api_key,
+        credentials=credentials,
+        project=project,
+        location=location,
+        http_options=http_options,
+    )
+
+  @property
+  def chats(self) -> Chats:
+    return Chats(modules=self.models)
+
+  @property
+  def aio(self) -> AsyncClient:
+    return self._aio
+
+  @property
+  def models(self) -> Models:
+    return self._models
+
+  @property
+  def tunings(self) -> Tunings:
+    return self._tunings
+
+  @property
+  def caches(self) -> Caches:
+    return self._caches
+
+  @property
+  def batches(self) -> Batches:
+    return self._batches
+
+  @property
+  def files(self) -> Files:
+    return self._files
+
+  @property
+  def vertexai(self) -> bool:
+    """Returns whether the client is using the Vertex AI API."""
+    return self._api_client.vertexai or False