bedrock: Add support for Claude Haiku 4.5 model (#41045)

Shardul Vaidya and Ona created

Release Notes:

- bedrock: Added support for Claude Haiku 4.5

---------

Co-authored-by: Ona <no-reply@ona.com>

Change summary

crates/bedrock/src/models.rs | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)

Detailed changes

crates/bedrock/src/models.rs 🔗

@@ -66,6 +66,8 @@ pub enum Model {
     Claude3Sonnet,
     #[serde(rename = "claude-3-5-haiku", alias = "claude-3-5-haiku-latest")]
     Claude3_5Haiku,
+    #[serde(rename = "claude-haiku-4-5", alias = "claude-haiku-4-5-latest")]
+    ClaudeHaiku4_5,
     Claude3_5Sonnet,
     Claude3Haiku,
     // Amazon Nova Models
@@ -147,6 +149,8 @@ impl Model {
             Ok(Self::Claude3Sonnet)
         } else if id.starts_with("claude-3-5-haiku") {
             Ok(Self::Claude3_5Haiku)
+        } else if id.starts_with("claude-haiku-4-5") {
+            Ok(Self::ClaudeHaiku4_5)
         } else if id.starts_with("claude-3-7-sonnet") {
             Ok(Self::Claude3_7Sonnet)
         } else if id.starts_with("claude-3-7-sonnet-thinking") {
@@ -180,6 +184,7 @@ impl Model {
             Model::Claude3Sonnet => "claude-3-sonnet",
             Model::Claude3Haiku => "claude-3-haiku",
             Model::Claude3_5Haiku => "claude-3-5-haiku",
+            Model::ClaudeHaiku4_5 => "claude-haiku-4-5",
             Model::Claude3_7Sonnet => "claude-3-7-sonnet",
             Model::Claude3_7SonnetThinking => "claude-3-7-sonnet-thinking",
             Model::AmazonNovaLite => "amazon-nova-lite",
@@ -246,6 +251,7 @@ impl Model {
             Model::Claude3Sonnet => "anthropic.claude-3-sonnet-20240229-v1:0",
             Model::Claude3Haiku => "anthropic.claude-3-haiku-20240307-v1:0",
             Model::Claude3_5Haiku => "anthropic.claude-3-5-haiku-20241022-v1:0",
+            Model::ClaudeHaiku4_5 => "anthropic.claude-haiku-4-5-20251001-v1:0",
             Model::Claude3_7Sonnet | Model::Claude3_7SonnetThinking => {
                 "anthropic.claude-3-7-sonnet-20250219-v1:0"
             }
@@ -309,6 +315,7 @@ impl Model {
             Self::Claude3Sonnet => "Claude 3 Sonnet",
             Self::Claude3Haiku => "Claude 3 Haiku",
             Self::Claude3_5Haiku => "Claude 3.5 Haiku",
+            Self::ClaudeHaiku4_5 => "Claude Haiku 4.5",
             Self::Claude3_7Sonnet => "Claude 3.7 Sonnet",
             Self::Claude3_7SonnetThinking => "Claude 3.7 Sonnet Thinking",
             Self::AmazonNovaLite => "Amazon Nova Lite",
@@ -363,6 +370,7 @@ impl Model {
             | Self::Claude3Opus
             | Self::Claude3Sonnet
             | Self::Claude3_5Haiku
+            | Self::ClaudeHaiku4_5
             | Self::Claude3_7Sonnet
             | Self::ClaudeSonnet4
             | Self::ClaudeOpus4
@@ -385,7 +393,7 @@ impl Model {
             Self::Claude3Opus | Self::Claude3Sonnet | Self::Claude3_5Haiku => 4_096,
             Self::Claude3_7Sonnet | Self::Claude3_7SonnetThinking => 128_000,
             Self::ClaudeSonnet4 | Self::ClaudeSonnet4Thinking => 64_000,
-            Self::ClaudeSonnet4_5 | Self::ClaudeSonnet4_5Thinking => 64_000,
+            Self::ClaudeSonnet4_5 | Self::ClaudeSonnet4_5Thinking | Self::ClaudeHaiku4_5 => 64_000,
             Self::ClaudeOpus4
             | Self::ClaudeOpus4Thinking
             | Self::ClaudeOpus4_1
@@ -404,6 +412,7 @@ impl Model {
             | Self::Claude3Opus
             | Self::Claude3Sonnet
             | Self::Claude3_5Haiku
+            | Self::ClaudeHaiku4_5
             | Self::Claude3_7Sonnet
             | Self::ClaudeOpus4
             | Self::ClaudeOpus4Thinking
@@ -438,7 +447,8 @@ impl Model {
             | Self::ClaudeSonnet4Thinking
             | Self::ClaudeSonnet4_5
             | Self::ClaudeSonnet4_5Thinking
-            | Self::Claude3_5Haiku => true,
+            | Self::Claude3_5Haiku
+            | Self::ClaudeHaiku4_5 => true,
 
             // Amazon Nova models (all support tool use)
             Self::AmazonNovaPremier
@@ -464,6 +474,7 @@ impl Model {
             // Nova models support only text caching
             // https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html#prompt-caching-models
             Self::Claude3_5Haiku
+            | Self::ClaudeHaiku4_5
             | Self::Claude3_7Sonnet
             | Self::Claude3_7SonnetThinking
             | Self::ClaudeSonnet4
@@ -500,7 +511,7 @@ impl Model {
                 min_total_token: 1024,
             }),
 
-            Self::Claude3_5Haiku => Some(BedrockModelCacheConfiguration {
+            Self::Claude3_5Haiku | Self::ClaudeHaiku4_5 => Some(BedrockModelCacheConfiguration {
                 max_cache_anchors: 4,
                 min_total_token: 2048,
             }),
@@ -569,6 +580,7 @@ impl Model {
             (
                 Model::AmazonNovaPremier
                 | Model::Claude3_5Haiku
+                | Model::ClaudeHaiku4_5
                 | Model::Claude3_5Sonnet
                 | Model::Claude3_5SonnetV2
                 | Model::Claude3_7Sonnet
@@ -606,6 +618,7 @@ impl Model {
             // Models available in EU
             (
                 Model::Claude3_5Sonnet
+                | Model::ClaudeHaiku4_5
                 | Model::Claude3_7Sonnet
                 | Model::Claude3_7SonnetThinking
                 | Model::ClaudeSonnet4
@@ -624,6 +637,7 @@ impl Model {
             (
                 Model::Claude3_5Sonnet
                 | Model::Claude3_5SonnetV2
+                | Model::ClaudeHaiku4_5
                 | Model::Claude3Haiku
                 | Model::Claude3Sonnet
                 | Model::Claude3_7Sonnet