Skip to content

Commit c8d9117

Browse files
adambaloghclaude
andauthored
Add Claude Opus 5.5 to the model registry (#170)
Anthropic released Opus 5.5 (2026-09-22), which beats Opus 5 on agentic coding/knowledge-work benchmarks at 20% lower cost ($4/$20 vs $5/$25 per MTok). Registered under the Anthropic section with supports_temperature=False (adaptive thinking is always on, like every Opus 4.7+ model). Companion catalog PR: OpenGradient/chat-api (adds the model to the served catalog and hides the now-superseded Opus 5). Claude-Session: https://claude.ai/code/session_015GBZNoRJrk2hPkEdYhDVHB Co-authored-by: Claude <noreply@anthropic.com>
1 parent 8a5c49b commit c8d9117

4 files changed

Lines changed: 36 additions & 2 deletions

File tree

‎CLAUDE.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ Server configuration:
127127
`model_registry.py` is the source of truth; this list mirrors it. Model name
128128
prefixes determine routing:
129129
- **OpenAI**: gpt-6-astra, gpt-4.1, gpt-4.1-mini, gpt-5, gpt-5-mini, gpt-5.2, gpt-5.4, gpt-5.4-mini, gpt-5.4-nano, gpt-5.5, gpt-5.6-sol/terra/luna, o3; image generation: gpt-image-2.5-flare, gpt-image-2.5-sunburst, gpt-image-2
130-
- **Anthropic**: claude-sonnet-4-5/4-6, claude-sonnet-5, claude-haiku-4-5, claude-opus-4-5/4-6/4-7/4-8, claude-opus-5, claude-fable-5, claude-fable-5-1
130+
- **Anthropic**: claude-sonnet-4-5/4-6, claude-sonnet-5, claude-haiku-4-5, claude-opus-4-5/4-6/4-7/4-8, claude-opus-5, claude-opus-5-5, claude-fable-5, claude-fable-5-1
131131
- **Google**: gemini-3.8-flash, gemini-3.7-flash, gemini-3.6-flash, gemini-3.5-flash, gemini-3.5-flash-lite, gemini-2.5-flash, gemini-2.5-flash-lite, gemini-2.5-pro, gemini-3-flash-preview, gemini-3.1-pro-preview; image generation: gemini-2.5-flash-image, gemini-3.1-flash-image
132132
- **xAI**: grok-4.7, grok-4.6, grok-4.5, grok-4.3, grok-4.20-reasoning, grok-4.20-non-reasoning; image generation: grok-2-image, grok-imagine-image-2.0
133133
- **ByteDance** (BytePlus ModelArk, OpenAI-compatible, ap-southeast): seed-1.6, seed-1.8, seed-2.0-lite, deepseek-v4-flash, deepseek-v4-pro, glm-5.2 (Z.ai's model served via a ModelArk deployment endpoint); image generation: seedream-4.0, seedream-5.0-lite, seedance-4.5, seedance-5.0

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ The gateway solves this by running inside a hardware-isolated Nitro Enclave wher
3434
| Provider | Models |
3535
|----------|--------|
3636
| OpenAI | gpt-6-astra, gpt-4.1, gpt-4.1-mini, gpt-5, gpt-5-mini, gpt-5.2, gpt-5.4, gpt-5.5, gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, o3 |
37-
| Anthropic | claude-fable-5-1, claude-fable-5, claude-opus-5, claude-opus-4-8, claude-opus-4-7, claude-opus-4-6, claude-opus-4-5, claude-sonnet-5, claude-sonnet-4-6, claude-sonnet-4-5, claude-haiku-4-5 |
37+
| Anthropic | claude-fable-5-1, claude-fable-5, claude-opus-5-5, claude-opus-5, claude-opus-4-8, claude-opus-4-7, claude-opus-4-6, claude-opus-4-5, claude-sonnet-5, claude-sonnet-4-6, claude-sonnet-4-5, claude-haiku-4-5 |
3838
| Google | gemini-3.8-flash, gemini-3.7-flash, gemini-3.6-flash, gemini-3.5-flash, gemini-3.5-flash-lite, gemini-2.5-flash, gemini-2.5-flash-lite, gemini-2.5-pro, gemini-3-flash-preview, gemini-3.1-pro-preview |
3939
| xAI | grok-4.7, grok-4.6, grok-4.5, grok-4.3, grok-4.20-reasoning, grok-4.20-non-reasoning |
4040
| ByteDance | seed-1.6, seed-1.8, seed-2.0-lite, dola-seed-2.0-mini, deepseek-v4-flash, deepseek-v4-pro, glm-5.2 |

‎tee_gateway/model_registry.py‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,18 @@ class SupportedModel(Enum):
540540
output_price_usd=Decimal("0.000025"),
541541
supports_temperature=False,
542542
)
543+
# Claude Opus 5.5 — successor to Opus 5, GA 2026-09-22. Leads on agentic
544+
# coding/knowledge-work benchmarks while costing 20% less than Opus 5
545+
# ($4/$20 vs $5/$25 per MTok). Adaptive-thinking-only (always on, can't be
546+
# disabled); like Opus 4.7+ it rejects the `temperature` field (HTTP 400),
547+
# so supports_temperature=False.
548+
CLAUDE_OPUS_5_5 = ModelConfig(
549+
provider="anthropic",
550+
api_name="claude-opus-5-5",
551+
input_price_usd=Decimal("0.000004"),
552+
output_price_usd=Decimal("0.00002"),
553+
supports_temperature=False,
554+
)
543555
# Claude Opus 5 — the current Opus, a drop-in upgrade at Opus 4.8's pricing
544556
# ($5/$25 per MTok). Adaptive-thinking-only; like Opus 4.7+ it rejects the
545557
# `temperature` field (HTTP 400), so supports_temperature=False.
@@ -1067,6 +1079,8 @@ class SupportedModel(Enum):
10671079
"claude-opus-4-7": SupportedModel.CLAUDE_OPUS_4_7,
10681080
"claude-opus-4-8": SupportedModel.CLAUDE_OPUS_4_8,
10691081
"claude-opus-5": SupportedModel.CLAUDE_OPUS_5,
1082+
"claude-opus-5-5": SupportedModel.CLAUDE_OPUS_5_5,
1083+
"claude-opus-5.5": SupportedModel.CLAUDE_OPUS_5_5,
10701084
"claude-fable-5": SupportedModel.CLAUDE_FABLE_5,
10711085
"claude-fable-5-1": SupportedModel.CLAUDE_FABLE_5_1,
10721086
"claude-fable-5.1": SupportedModel.CLAUDE_FABLE_5_1,

‎tests/test_pricing.py‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,19 @@ def test_claude_opus_5_resolves(self):
136136
# Adaptive-thinking-only; rejects the `temperature` field (HTTP 400)
137137
self.assertFalse(cfg.supports_temperature)
138138

139+
def test_claude_opus_5_5_resolves(self):
140+
cfg = get_model_config("claude-opus-5-5")
141+
self.assertEqual(cfg.provider, "anthropic")
142+
self.assertEqual(cfg.api_name, "claude-opus-5-5")
143+
self.assertEqual(cfg.input_price_usd, Decimal("0.000004"))
144+
self.assertEqual(cfg.output_price_usd, Decimal("0.00002"))
145+
# Adaptive-thinking-only; rejects the `temperature` field (HTTP 400)
146+
self.assertFalse(cfg.supports_temperature)
147+
148+
def test_claude_opus_5_5_dotted_alias_resolves(self):
149+
cfg = get_model_config("claude-opus-5.5")
150+
self.assertEqual(cfg, get_model_config("claude-opus-5-5"))
151+
139152
def test_claude_fable_5_resolves(self):
140153
cfg = get_model_config("claude-fable-5")
141154
self.assertEqual(cfg.provider, "anthropic")
@@ -820,6 +833,13 @@ def test_claude_opus_5_cost(self):
820833
# Same price tier as opus-4-5/4-6/4-7/4-8: 1000*0.000005 + 500*0.000025 = 0.0175 USD
821834
self.assertEqual(cost, 17_500_000_000_000_000)
822835

836+
def test_claude_opus_5_5_cost(self):
837+
cost = self._calc("claude-opus-5-5", 1000, 500)
838+
expected = _expected_cost_opg("claude-opus-5-5", 1000, 500)
839+
self.assertEqual(cost, expected)
840+
# 1000*0.000004 + 500*0.00002 = 0.004 + 0.01 = 0.014 USD = 1.4e16 wei
841+
self.assertEqual(cost, 14_000_000_000_000_000)
842+
823843
# ── Anthropic Fable ─────────────────────────────────────────────────────
824844

825845
def test_claude_fable_5_1_cost(self):

0 commit comments

Comments
 (0)