From dd20e0aaf4093c02f141c4317fde3ad382aae91f Mon Sep 17 00:00:00 2001 From: seymourtang Date: Tue, 30 Jun 2026 18:43:41 +0800 Subject: [PATCH] fix(agentkit): ensure URL is always included in Gemini and Vertex LLM configurations --- src/agora_agent/agentkit/vendors/mllm.py | 8 ++------ tests/custom/test_agentkit_vendors.py | 24 ++++++++++++++++++++++++ tests/custom/test_request_body.py | 2 ++ 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/agora_agent/agentkit/vendors/mllm.py b/src/agora_agent/agentkit/vendors/mllm.py index 6a260d8..f973a30 100644 --- a/src/agora_agent/agentkit/vendors/mllm.py +++ b/src/agora_agent/agentkit/vendors/mllm.py @@ -181,14 +181,12 @@ def to_config(self) -> Dict[str, Any]: config: Dict[str, Any] = { "vendor": "vertexai", + "url": self.options.url if self.options.url is not None else "", "project_id": self.options.project_id, "location": self.options.location, "adc_credentials_string": self.options.adc_credentials_string, "params": params, } - - if self.options.url is not None: - config["url"] = self.options.url if self.options.greeting_message is not None: config["greeting_message"] = self.options.greeting_message if self.options.input_modalities is not None: @@ -253,11 +251,9 @@ def to_config(self) -> Dict[str, Any]: config: Dict[str, Any] = { "vendor": "gemini", "api_key": self.options.api_key, + "url": self.options.url if self.options.url is not None else "", "params": params, } - - if self.options.url is not None: - config["url"] = self.options.url if self.options.greeting_message is not None: config["greeting_message"] = self.options.greeting_message if self.options.input_modalities is not None: diff --git a/tests/custom/test_agentkit_vendors.py b/tests/custom/test_agentkit_vendors.py index 8dd79c4..031acfb 100644 --- a/tests/custom/test_agentkit_vendors.py +++ b/tests/custom/test_agentkit_vendors.py @@ -119,6 +119,19 @@ def test_vertex_ai_explicit_fields_override_additional_params(): assert config["params"]["extra_key"] == "kept" +def test_vertex_ai_defaults_url_to_empty_string(): + from agora_agent.agentkit.vendors import VertexAI + + config = VertexAI( + model="gemini-live-2.5-flash", + project_id="project-id", + location="us-central1", + adc_credentials_string="{}", + ).to_config() + + assert config["url"] == "" + + def test_gemini_live_explicit_fields_override_additional_params(): from agora_agent.agentkit.vendors import GeminiLive @@ -135,6 +148,17 @@ def test_gemini_live_explicit_fields_override_additional_params(): assert config["params"]["extra_key"] == "kept" +def test_gemini_live_defaults_url_to_empty_string(): + from agora_agent.agentkit.vendors import GeminiLive + + config = GeminiLive( + api_key="key", + model="gemini-live-2.5-flash", + ).to_config() + + assert config["url"] == "" + + def test_llm_greeting_configs_interruptable_serializes(): config = OpenAI( api_key="openai-key", diff --git a/tests/custom/test_request_body.py b/tests/custom/test_request_body.py index 689dbfa..7e6d09a 100644 --- a/tests/custom/test_request_body.py +++ b/tests/custom/test_request_body.py @@ -1256,6 +1256,7 @@ def test_byok_gemini_live_mllm_params() -> None: props = build_properties(agent) assert props["mllm"]["vendor"] == "gemini" assert props["mllm"]["api_key"] == "gemini-key" + assert props["mllm"]["url"] == "" assert props["mllm"]["params"]["model"] == "gemini-live-2.5-flash" @@ -1270,6 +1271,7 @@ def test_byok_vertex_ai_mllm_params() -> None: ) props = build_properties(agent) assert props["mllm"]["vendor"] == "vertexai" + assert props["mllm"]["url"] == "" assert props["mllm"]["project_id"] == "my-project" assert props["mllm"]["location"] == "us-central1" assert props["mllm"]["adc_credentials_string"] == "{}"