From 2996f415944dd618c289443bac4e382901ab575d Mon Sep 17 00:00:00 2001 From: PrathamAditya Date: Wed, 4 Feb 2026 21:24:30 +0530 Subject: [PATCH] fix(google): allow Vertex AI usage without API key when using ADC Gate API key validation behind use_vertexai=False so that GoogleAIChatCompletion can be initialized with Application Default Credentials (ADC) when using Vertex AI. Adds a unit test to verify that no API key is required when use_vertexai=True. Fixes #13483 --- .../services/google_ai_chat_completion.py | 2 +- ...st_google_ai_chat_completion_vertex_adc.py | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 python/tests/unit/connectors/ai/google/test_google_ai_chat_completion_vertex_adc.py diff --git a/python/semantic_kernel/connectors/ai/google/google_ai/services/google_ai_chat_completion.py b/python/semantic_kernel/connectors/ai/google/google_ai/services/google_ai_chat_completion.py index 04ac8ec9ef12..066117c320f5 100644 --- a/python/semantic_kernel/connectors/ai/google/google_ai/services/google_ai_chat_completion.py +++ b/python/semantic_kernel/connectors/ai/google/google_ai/services/google_ai_chat_completion.py @@ -119,7 +119,7 @@ def __init__( if not client: if google_ai_settings.use_vertexai and not google_ai_settings.cloud_project_id: raise ServiceInitializationError("Project ID must be provided when use_vertexai is True.") - if not google_ai_settings.api_key: + if not google_ai_settings.use_vertexai and not google_ai_settings.api_key: raise ServiceInitializationError("The API key is required when use_vertexai is False.") super().__init__( diff --git a/python/tests/unit/connectors/ai/google/test_google_ai_chat_completion_vertex_adc.py b/python/tests/unit/connectors/ai/google/test_google_ai_chat_completion_vertex_adc.py new file mode 100644 index 000000000000..fac3bdb86b9b --- /dev/null +++ b/python/tests/unit/connectors/ai/google/test_google_ai_chat_completion_vertex_adc.py @@ -0,0 +1,22 @@ +import pytest + +from semantic_kernel.connectors.ai.google.google_ai.google_ai_settings import GoogleAISettings +from semantic_kernel.connectors.ai.google.google_ai.services.google_ai_chat_completion import ( + GoogleAIChatCompletion, +) +from semantic_kernel.exceptions.service_exceptions import ServiceInitializationError + + +def test_vertexai_does_not_require_api_key_when_adc_is_used(): + """ + When use_vertexai=True, GoogleAIChatCompletion should NOT require an API key, + because authentication is handled via Application Default Credentials (ADC). + """ + + GoogleAIChatCompletion( + gemini_model_id="models/gemini-1.5-pro", + api_key=None, + use_vertexai=True, + project_id="test-project", + region="us-central1", + )