diff --git a/src/google/adk/agents/llm_agent.py b/src/google/adk/agents/llm_agent.py index 35c529474e..d9972ffece 100644 --- a/src/google/adk/agents/llm_agent.py +++ b/src/google/adk/agents/llm_agent.py @@ -36,7 +36,6 @@ from pydantic import Field from pydantic import field_validator from pydantic import model_validator -from pydantic import PrivateAttr from typing_extensions import override from typing_extensions import TypeAlias @@ -256,14 +255,6 @@ class LlmAgent(BaseAgent, abc.ABC): LlmAgent.set_default_model. The built-in default is gemini-3.5-flash. """ - _resolved_model: Optional[tuple[str, BaseLlm]] = PrivateAttr(default=None) - """The model name last resolved by canonical_model, with its BaseLlm.""" - - _resolved_live_model: Optional[tuple[str, BaseLlm]] = PrivateAttr( - default=None - ) - """The model name last resolved by canonical_live_model, with its BaseLlm.""" - config_type: ClassVar[Type[BaseAgentConfig]] = LlmAgentConfig """The config type for this agent. @@ -640,11 +631,7 @@ def canonical_model(self) -> BaseLlm: if isinstance(self.model, BaseLlm): return self.model elif self.model: # model is non-empty str - resolved = self._resolved_model - if resolved is None or resolved[0] != self.model: - resolved = (self.model, LLMRegistry.new_llm(self.model)) - self._resolved_model = resolved - return resolved[1] + return LLMRegistry.new_llm(self.model) else: # find model from ancestors. ancestor_agent = self.parent_agent while ancestor_agent is not None: @@ -662,11 +649,7 @@ def canonical_live_model(self) -> BaseLlm: if isinstance(self.model, BaseLlm): return self.model elif self.model: # model is non-empty str - resolved = self._resolved_live_model - if resolved is None or resolved[0] != self.model: - resolved = (self.model, LLMRegistry.new_llm(self.model)) - self._resolved_live_model = resolved - return resolved[1] + return LLMRegistry.new_llm(self.model) else: # find model from ancestors. ancestor_agent = self.parent_agent while ancestor_agent is not None: diff --git a/tests/unittests/agents/test_llm_agent_fields.py b/tests/unittests/agents/test_llm_agent_fields.py index bc87106149..e0bb0d6bb3 100644 --- a/tests/unittests/agents/test_llm_agent_fields.py +++ b/tests/unittests/agents/test_llm_agent_fields.py @@ -101,31 +101,6 @@ def test_canonical_model_inherit(): assert sub_agent.canonical_model == parent_agent.canonical_model -def test_canonical_model_str_resolved_once(): - agent = LlmAgent(name='test_agent', model='gemini-pro') - - with mock.patch.object( - LLMRegistry, 'new_llm', wraps=LLMRegistry.new_llm - ) as new_llm: - first = agent.canonical_model - second = agent.canonical_model - third = agent.canonical_model - - assert new_llm.call_count == 1 - assert first is second is third - - -def test_canonical_model_str_resolved_again_after_reassignment(): - agent = LlmAgent(name='test_agent', model='gemini-pro') - first = agent.canonical_model - - agent.model = 'gemini-2.5-flash' - second = agent.canonical_model - - assert second is not first - assert second.model == 'gemini-2.5-flash' - - def test_canonical_model_str_not_stale_after_model_copy(): agent = LlmAgent(name='test_agent', model='gemini-pro') assert agent.canonical_model.model == 'gemini-pro' @@ -136,19 +111,6 @@ def test_canonical_model_str_not_stale_after_model_copy(): assert agent.canonical_model.model == 'gemini-pro' -def test_canonical_live_model_str_resolved_once(): - agent = LlmAgent(name='test_agent', model='gemini-pro') - - with mock.patch.object( - LLMRegistry, 'new_llm', wraps=LLMRegistry.new_llm - ) as new_llm: - first = agent.canonical_live_model - second = agent.canonical_live_model - - assert new_llm.call_count == 1 - assert first is second - - def test_canonical_live_model_default_fallback(): original_default = LlmAgent._default_live_model LlmAgent.set_default_live_model('gemini-2.0-flash')