diff --git a/tests/unit/vertexai/genai/replays/conftest.py b/tests/unit/vertexai/genai/replays/conftest.py index 7b7e41d0ce..94e0004316 100644 --- a/tests/unit/vertexai/genai/replays/conftest.py +++ b/tests/unit/vertexai/genai/replays/conftest.py @@ -25,6 +25,7 @@ from vertexai._genai import _agent_engines_utils from google.cloud import storage, bigquery from google.genai import _replay_api_client +from google.genai import types as genai_types from google.genai import client as google_genai_client_module from vertexai._genai import _gcs_utils from vertexai._genai import prompt_optimizer @@ -249,6 +250,13 @@ def client(use_vertex, replays_prefix, http_options, request): ) ) os.environ["GOOGLE_GENAI_REPLAYS_DIRECTORY"] = replays_root_directory + + if http_options is None: + http_options = genai_types.HttpOptions() + if http_options.headers is None: + http_options.headers = {} + http_options.headers["x-goog-vertex-sdk"] = "true" + replay_client = _replay_api_client.ReplayApiClient( mode=mode, replay_id=replay_id, diff --git a/vertexai/_genai/client.py b/vertexai/_genai/client.py index 8a9a9ff135..29f81d2e0f 100644 --- a/vertexai/_genai/client.py +++ b/vertexai/_genai/client.py @@ -41,19 +41,23 @@ _GENAI_MODULES_TELEMETRY_HEADER = "vertex-genai-modules" +genai_append_method = _api_client.append_library_version_headers -def _add_tracking_headers(headers: dict[str, str]) -> None: - """Appends Vertex Gen AI modules tracking information to the request headers.""" - tracking_label = f"{_GENAI_MODULES_TELEMETRY_HEADER}/{aip_version.__version__}" +def _add_tracking_headers(headers: dict[str, str]) -> None: + """Adds Vertex Gen AI tracking headers.""" + is_vertex = headers.get( + "x-goog-vertex-sdk" + ) == "true" or "vertex-genai-modules" in headers.get("user-agent", "") + if is_vertex: + tracking_label = f"{_GENAI_MODULES_TELEMETRY_HEADER}/{aip_version.__version__}" - user_agent = headers.get("user-agent", "") - if tracking_label not in user_agent: - headers["user-agent"] = f"{user_agent} {tracking_label}".strip() + headers["user-agent"] = tracking_label + headers["x-goog-api-client"] = tracking_label - api_client = headers.get("x-goog-api-client", "") - if tracking_label not in api_client: - headers["x-goog-api-client"] = f"{api_client} {tracking_label}".strip() + headers.pop("x-goog-vertex-sdk", None) + else: + genai_append_method(headers) _api_client.append_library_version_headers = _add_tracking_headers @@ -221,6 +225,11 @@ def __init__( self._debug_config = debug_config or genai_client.DebugConfig() if isinstance(http_options, dict): http_options = types.HttpOptions(**http_options) + if http_options is None: + http_options = types.HttpOptions() + if http_options.headers is None: + http_options.headers = {} + http_options.headers["x-goog-vertex-sdk"] = "true" self._api_client = genai_client.Client._get_api_client( vertexai=True,