diff --git a/src/google/adk/models/__init__.py b/src/google/adk/models/__init__.py index 5541bd563b..6756b20d2c 100644 --- a/src/google/adk/models/__init__.py +++ b/src/google/adk/models/__init__.py @@ -67,7 +67,10 @@ # Gemma 3 only (function-calling workarounds). Gemma 4+ resolves to Gemini. 'Gemma': ([r'gemma-.*'], 'gemma_llm'), 'ApigeeLlm': ([r'apigee\/.*'], 'apigee_llm'), - 'Claude': ([r'claude-3-.*', r'claude-.*-4.*'], 'anthropic_llm'), + 'Claude': ( + [r'claude-3-.*', r'claude-.*-4.*', r'claude-.*-5.*'], + 'anthropic_llm', + ), 'Gemma3Ollama': ([r'ollama/gemma3.*'], 'gemma_llm'), 'OpenAILlm': ( [r'gpt-.*', r'o\d+-.*'], diff --git a/src/google/adk/models/anthropic_llm.py b/src/google/adk/models/anthropic_llm.py index 49113c6e1f..d925b772c1 100644 --- a/src/google/adk/models/anthropic_llm.py +++ b/src/google/adk/models/anthropic_llm.py @@ -651,7 +651,7 @@ class AnthropicLlm(BaseLlm): @classmethod @override def supported_models(cls) -> list[str]: - return [r"claude-3-.*", r"claude-.*-4.*"] + return [r"claude-3-.*", r"claude-.*-4.*", r"claude-.*-5.*"] def _resolve_model_name(self, model: Optional[str]) -> str: if not model: diff --git a/tests/unittests/models/test_anthropic_llm.py b/tests/unittests/models/test_anthropic_llm.py index 0dafa12188..3404a69e26 100644 --- a/tests/unittests/models/test_anthropic_llm.py +++ b/tests/unittests/models/test_anthropic_llm.py @@ -142,9 +142,10 @@ def test_claude_anthropic_client_creation_with_full_resource_name(): def test_supported_models(): models = Claude.supported_models() - assert len(models) == 2 + assert len(models) == 3 assert models[0] == r"claude-3-.*" assert models[1] == r"claude-.*-4.*" + assert models[2] == r"claude-.*-5.*" function_declaration_test_cases = [ diff --git a/tests/unittests/models/test_models.py b/tests/unittests/models/test_models.py index 2d4febb553..0365e7a623 100644 --- a/tests/unittests/models/test_models.py +++ b/tests/unittests/models/test_models.py @@ -48,6 +48,15 @@ def test_match_gemini_family(model_name): 'claude-3-sonnet@20240229', 'claude-sonnet-4@20250514', 'claude-opus-4@20250514', + 'claude-sonnet-4-5', + 'claude-haiku-4-5', + 'claude-sonnet-4-6', + 'claude-opus-4-6', + 'claude-opus-4-7', + 'claude-opus-4-8', + 'claude-opus-5', + 'claude-sonnet-5', + 'claude-fable-5', ], ) def test_match_claude_family(model_name):