From 6cb2d10a1dd2bdc5af6b8ebb58517840c2c3d283 Mon Sep 17 00:00:00 2001 From: Yifeng Lu Date: Thu, 12 Feb 2026 16:58:47 -0800 Subject: [PATCH] Add Claude Opus 4.6 (claude-opus-4-6) to Langfun LLM. PiperOrigin-RevId: 869447879 --- langfun/core/llms/__init__.py | 3 ++ langfun/core/llms/anthropic.py | 62 ++++++++++++++++++++++++++++++++++ langfun/core/llms/vertexai.py | 6 ++++ 3 files changed, 71 insertions(+) diff --git a/langfun/core/llms/__init__.py b/langfun/core/llms/__init__.py index 879a61a6..1f041f4d 100644 --- a/langfun/core/llms/__init__.py +++ b/langfun/core/llms/__init__.py @@ -166,6 +166,8 @@ # Anthropic models. +from langfun.core.llms.anthropic import Claude46 +from langfun.core.llms.anthropic import Claude46Opus from langfun.core.llms.anthropic import Claude45 from langfun.core.llms.anthropic import Claude45Haiku_20251001 from langfun.core.llms.anthropic import Claude45Sonnet_20250929 @@ -187,6 +189,7 @@ from langfun.core.llms.anthropic import Claude3Haiku_20240307 from langfun.core.llms.vertexai import VertexAIAnthropic +from langfun.core.llms.vertexai import VertexAIClaude46Opus from langfun.core.llms.vertexai import VertexAIClaude45Haiku_20251001 from langfun.core.llms.vertexai import VertexAIClaude45Sonnet_20250929 from langfun.core.llms.vertexai import VertexAIClaude45Opus_20251101 diff --git a/langfun/core/llms/anthropic.py b/langfun/core/llms/anthropic.py index 4b10bb59..dcdc791e 100644 --- a/langfun/core/llms/anthropic.py +++ b/langfun/core/llms/anthropic.py @@ -59,6 +59,31 @@ def max_tokens_per_minute(self) -> int: SUPPORTED_MODELS = [ + AnthropicModelInfo( + model_id='claude-opus-4-6', + provider='Anthropic', + in_service=True, + description='Claude 4.6 Opus model (02/05/2026).', + release_date=datetime.datetime(2026, 2, 5), + input_modalities=( + AnthropicModelInfo.INPUT_IMAGE_TYPES + + AnthropicModelInfo.INPUT_DOC_TYPES + ), + context_length=lf.ModelInfo.ContextLength( + max_input_tokens=1_000_000, + max_output_tokens=128_000, + ), + pricing=lf.ModelInfo.Pricing( + cost_per_1m_cached_input_tokens=0.5, + cost_per_1m_input_tokens=5, + cost_per_1m_output_tokens=25, + ), + rate_limits=AnthropicModelInfo.RateLimits( + max_requests_per_minute=2000, + max_input_tokens_per_minute=1_000_000, + max_output_tokens_per_minute=400_000, + ), + ), AnthropicModelInfo( model_id='claude-haiku-4-5-20251001', provider='Anthropic', @@ -326,6 +351,32 @@ def max_tokens_per_minute(self) -> int: max_output_tokens_per_minute=0, ), ), + AnthropicModelInfo( + model_id='claude-opus-4-6', + alias_for='claude-opus-4-6', + provider='VertexAI', + in_service=True, + description='Claude 4.6 Opus model served on VertexAI (02/05/2026).', + release_date=datetime.datetime(2026, 2, 5), + input_modalities=( + AnthropicModelInfo.INPUT_IMAGE_TYPES + + AnthropicModelInfo.INPUT_DOC_TYPES + ), + context_length=lf.ModelInfo.ContextLength( + max_input_tokens=1_000_000, + max_output_tokens=128_000, + ), + pricing=lf.ModelInfo.Pricing( + cost_per_1m_cached_input_tokens=0.5, + cost_per_1m_input_tokens=5, + cost_per_1m_output_tokens=25, + ), + rate_limits=AnthropicModelInfo.RateLimits( + max_requests_per_minute=100, + max_input_tokens_per_minute=1_000_000, + max_output_tokens_per_minute=80_000, + ), + ), AnthropicModelInfo( model_id='claude-opus-4-5@20251101', alias_for='claude-opus-4-5-20251101', @@ -868,6 +919,17 @@ def _error(self, status_code: int, content: str) -> lf.LMError: return super()._error(status_code, content) +class Claude46(Anthropic): + """Base class for Claude 4.6 models.""" + + +# pylint: disable=invalid-name +class Claude46Opus(Claude46): + """Claude 4.6 Opus model.""" + + model = 'claude-opus-4-6' + + class Claude45(Anthropic): """Base class for Claude 4.5 models.""" diff --git a/langfun/core/llms/vertexai.py b/langfun/core/llms/vertexai.py index e0e76f8a..d35c377f 100644 --- a/langfun/core/llms/vertexai.py +++ b/langfun/core/llms/vertexai.py @@ -457,6 +457,12 @@ def request( # pylint: disable=invalid-name +class VertexAIClaude46Opus(VertexAIAnthropic): + """Anthropic's Claude 4.6 Opus model on VertexAI.""" + + model = 'claude-opus-4-6' + + class VertexAIClaude45Haiku_20251001(VertexAIAnthropic): """Anthropic's Claude 4.5 Haiku model on VertexAI.""" model = 'claude-haiku-4-5@20251001'