Skip to content

Commit 92f172d

Browse files
committed
feat: add Claude Opus 4.8 model support
Mirrors the Opus 4.7 addition (#1101). Opus 4.8 keeps the 4.7 request surface (adaptive thinking, no prefill, no temperature/top_p/top_k), so it joins the same capability lists. Inference profile regions were verified live via get-inference-profile from an EU deployment: the eu profile does not cover eu-west-2 (unlike 4.7), and non-EU geos are left for maintainers to extend with scripts/cross_region_inference.
1 parent 6d7280f commit 92f172d

14 files changed

Lines changed: 90 additions & 1 deletion

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ npm ci
248248
- `logoPath`: Relative path under `frontend/public` that points to the image displayed at the top of the application drawer.
249249
The following model IDs are supported (please make sure that they are also enabled in the Bedrock console under Model access in your deployment region):
250250

251-
- **Claude Models:** `claude-v4-opus`, `claude-v4.1-opus`, `claude-v4.5-opus`, `claude-v4.6-opus`, `claude-v4.7-opus`, `claude-v4-sonnet`, `claude-v4.5-sonnet`, `claude-v4.6-sonnet`, `claude-v3.5-sonnet`, `claude-v3.5-sonnet-v2`, `claude-v3.7-sonnet`, `claude-v3.5-haiku`, `claude-v3-haiku`, `claude-v3-opus`
251+
- **Claude Models:** `claude-v4-opus`, `claude-v4.1-opus`, `claude-v4.5-opus`, `claude-v4.6-opus`, `claude-v4.7-opus`, `claude-v4.8-opus`, `claude-v4-sonnet`, `claude-v4.5-sonnet`, `claude-v4.6-sonnet`, `claude-v3.5-sonnet`, `claude-v3.5-sonnet-v2`, `claude-v3.7-sonnet`, `claude-v3.5-haiku`, `claude-v3-haiku`, `claude-v3-opus`
252252
- **Amazon Nova Models:** `amazon-nova-pro`, `amazon-nova-lite`, `amazon-nova-micro`
253253
- **Mistral Models:** `mistral-7b-instruct`, `mixtral-8x7b-instruct`, `mistral-large`, `mistral-large-2`
254254
- **DeepSeek Models:** `deepseek-r1`

backend/app/bedrock.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
"claude-v4.5-opus": "anthropic.claude-opus-4-5-20251101-v1:0",
6363
"claude-v4.6-opus": "anthropic.claude-opus-4-6-v1",
6464
"claude-v4.7-opus": "anthropic.claude-opus-4-7",
65+
"claude-v4.8-opus": "anthropic.claude-opus-4-8",
6566
"claude-v4-sonnet": "anthropic.claude-sonnet-4-20250514-v1:0",
6667
"claude-v4.5-sonnet": "anthropic.claude-sonnet-4-5-20250929-v1:0",
6768
"claude-v4.6-sonnet": "anthropic.claude-sonnet-4-6",
@@ -201,6 +202,12 @@
201202
"ap-northeast-1",
202203
]
203204
},
205+
"claude-v4.8-opus": {
206+
"supported_regions": [
207+
"eu-central-2",
208+
"eu-central-1",
209+
]
210+
},
204211
"claude-v4-sonnet": {
205212
"supported_regions": [
206213
"us-west-2",
@@ -297,6 +304,17 @@
297304
"ap-southeast-4": "au",
298305
}
299306
},
307+
"claude-v4.8-opus": {
308+
"supported_regions": {
309+
"eu-central-1": "eu",
310+
"eu-central-2": "eu",
311+
"eu-north-1": "eu",
312+
"eu-south-1": "eu",
313+
"eu-south-2": "eu",
314+
"eu-west-1": "eu",
315+
"eu-west-3": "eu",
316+
}
317+
},
300318
"claude-v4.6-opus": {
301319
"supported_regions": {
302320
"us-east-1": "us",
@@ -570,6 +588,7 @@ def is_adaptive_thinking_model(model: type_model_name) -> bool:
570588
"claude-v4.6-opus",
571589
"claude-v4.6-sonnet",
572590
"claude-v4.7-opus",
591+
"claude-v4.8-opus",
573592
]
574593

575594

@@ -579,6 +598,7 @@ def is_prefill_supported(model: type_model_name) -> bool:
579598
"claude-v4.6-opus",
580599
"claude-v4.6-sonnet",
581600
"claude-v4.7-opus",
601+
"claude-v4.8-opus",
582602
]
583603

584604

@@ -588,6 +608,7 @@ def is_specify_both_temperature_and_top_p_supported(model: type_model_name) -> b
588608
"claude-v4.5-opus",
589609
"claude-v4.6-opus",
590610
"claude-v4.7-opus",
611+
"claude-v4.8-opus",
591612
"claude-v4.5-sonnet",
592613
"claude-v4.6-sonnet",
593614
"claude-v4.5-haiku",
@@ -598,20 +619,23 @@ def is_top_k_supported(model: type_model_name) -> bool:
598619
"""Claude Opus 4.7+ deprecates top_k parameter."""
599620
return model not in [
600621
"claude-v4.7-opus",
622+
"claude-v4.8-opus",
601623
]
602624

603625

604626
def is_top_p_supported(model: type_model_name) -> bool:
605627
"""Claude Opus 4.7+ deprecates top_p parameter."""
606628
return model not in [
607629
"claude-v4.7-opus",
630+
"claude-v4.8-opus",
608631
]
609632

610633

611634
def is_temperature_supported(model: type_model_name) -> bool:
612635
"""Claude Opus 4.7+ deprecates temperature parameter."""
613636
return model not in [
614637
"claude-v4.7-opus",
638+
"claude-v4.8-opus",
615639
]
616640

617641

@@ -625,6 +649,7 @@ def is_prompt_caching_supported(
625649
"claude-v4.5-opus",
626650
"claude-v4.6-opus",
627651
"claude-v4.7-opus",
652+
"claude-v4.8-opus",
628653
"claude-v4-sonnet",
629654
"claude-v4.5-sonnet",
630655
"claude-v4.6-sonnet",
@@ -641,6 +666,7 @@ def is_prompt_caching_supported(
641666
"claude-v4.5-opus",
642667
"claude-v4.6-opus",
643668
"claude-v4.7-opus",
669+
"claude-v4.8-opus",
644670
"claude-v4-sonnet",
645671
"claude-v4.5-sonnet",
646672
"claude-v4.6-sonnet",

backend/app/config.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,12 @@ class EmbeddingConfig(TypedDict):
8787
"cache_write_input": 0.00625,
8888
"cache_read_input": 0.0005,
8989
},
90+
"claude-v4.8-opus": {
91+
"input": 0.005,
92+
"output": 0.025,
93+
"cache_write_input": 0.00625,
94+
"cache_read_input": 0.0005,
95+
},
9096
"claude-v4-sonnet": {
9197
"input": 0.003,
9298
"output": 0.015,
@@ -190,6 +196,12 @@ class EmbeddingConfig(TypedDict):
190196
"cache_write_input": 0.00625,
191197
"cache_read_input": 0.0005,
192198
},
199+
"claude-v4.8-opus": {
200+
"input": 0.005,
201+
"output": 0.025,
202+
"cache_write_input": 0.00625,
203+
"cache_read_input": 0.0005,
204+
},
193205
"claude-v4-sonnet": {
194206
"input": 0.003,
195207
"output": 0.015,
@@ -286,6 +298,12 @@ class EmbeddingConfig(TypedDict):
286298
"cache_write_input": 0.00625,
287299
"cache_read_input": 0.0005,
288300
},
301+
"claude-v4.8-opus": {
302+
"input": 0.005,
303+
"output": 0.025,
304+
"cache_write_input": 0.00625,
305+
"cache_read_input": 0.0005,
306+
},
289307
"claude-v4-sonnet": {
290308
"input": 0.003,
291309
"output": 0.015,

backend/app/routes/schemas/conversation.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"claude-v4.5-opus",
1212
"claude-v4.6-opus",
1313
"claude-v4.7-opus",
14+
"claude-v4.8-opus",
1415
"claude-v4-sonnet",
1516
"claude-v4.5-sonnet",
1617
"claude-v4.6-sonnet",

frontend/src/constants/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ export const AVAILABLE_MODEL_KEYS = [
8787
'claude-v4.5-opus',
8888
'claude-v4.6-opus',
8989
'claude-v4.7-opus',
90+
'claude-v4.8-opus',
9091
'claude-v4-sonnet',
9192
'claude-v4.5-sonnet',
9293
'claude-v4.6-sonnet',

frontend/src/hooks/useModel.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,13 @@ const useModel = (botId?: string | null, activeModels?: ActiveModels) => {
111111
supportMediaType: CLAUDE_SUPPORTED_MEDIA_TYPES,
112112
supportReasoning: true,
113113
},
114+
{
115+
modelId: 'claude-v4.8-opus',
116+
label: t('model.claude-v4.8-opus.label'),
117+
description: t('model.claude-v4.8-opus.description'),
118+
supportMediaType: CLAUDE_SUPPORTED_MEDIA_TYPES,
119+
supportReasoning: true,
120+
},
114121
{
115122
modelId: 'claude-v4-sonnet',
116123
label: t('model.claude-v4-sonnet.label'),

frontend/src/i18n/en/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ const translation = {
4545
description:
4646
'High-capability Opus model built for coding, enterprise workflows, and long-running agentic tasks.',
4747
},
48+
'claude-v4.8-opus': {
49+
label: 'Claude 4.8 (Opus)',
50+
description:
51+
'Most capable Opus model, built for long-running agentic tasks, coding, and enterprise workflows.',
52+
},
4853
'claude-v4-sonnet': {
4954
label: 'Claude 4 (Sonnet)',
5055
description:

frontend/src/i18n/es/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ const translation = {
5656
description:
5757
'Modelo Opus de alta capacidad diseñado para codificación, flujos de trabajo empresariales y tareas de agente de larga duración.',
5858
},
59+
'claude-v4.8-opus': {
60+
label: 'Claude 4.8 (Opus)',
61+
description:
62+
'El modelo Opus más capaz, diseñado para tareas de agente de larga duración, codificación y flujos de trabajo empresariales.',
63+
},
5964
'claude-v3-opus': {
6065
label: 'Claude 3 (Opus)',
6166
description: 'Modelo potente para tareas altamente complejas.',

frontend/src/i18n/id/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ const translation = {
5656
description:
5757
'Model Opus berkemampuan tinggi yang dibuat untuk coding, alur kerja perusahaan, dan tugas agen jangka panjang.',
5858
},
59+
'claude-v4.8-opus': {
60+
label: 'Claude 4.8 (Opus)',
61+
description:
62+
'Model Opus paling mumpuni, dibuat untuk tugas agen jangka panjang, coding, dan alur kerja perusahaan.',
63+
},
5964
'claude-v3-opus': {
6065
label: 'Claude 3 (Opus)',
6166
description: 'Model yang kuat untuk tugas-tugas yang sangat kompleks.',

frontend/src/i18n/ja/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ const translation: typeof en = {
4848
description:
4949
'コーディング、エンタープライズワークフロー、長時間のエージェントタスク向けに構築された高性能Opusモデル。',
5050
},
51+
'claude-v4.8-opus': {
52+
label: 'Claude 4.8 (Opus)',
53+
description:
54+
'長時間のエージェントタスク、コーディング、エンタープライズワークフロー向けに構築された最も高性能なOpusモデル。',
55+
},
5156
'claude-v4-sonnet': {
5257
label: 'Claude 4 (Sonnet)',
5358
description:

0 commit comments

Comments
 (0)