anthropic: Haiku 4.5 support (#40298)

versecafe created

Release Notes:

- Added Claude Haiku 4.5

<img width="1512" height="919" alt="Screenshot 2025-10-15 at 5 23 37 PM"
src="https://github.com/user-attachments/assets/fd3eb8e7-ddd8-4d38-a171-400949c0cef4"
/>

Change summary

crates/anthropic/src/anthropic.rs | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)

Detailed changes

crates/anthropic/src/anthropic.rs 🔗

@@ -91,6 +91,13 @@ pub enum Model {
     Claude3_7SonnetThinking,
     #[serde(rename = "claude-3-5-sonnet", alias = "claude-3-5-sonnet-latest")]
     Claude3_5Sonnet,
+    #[serde(rename = "claude-haiku-4-5", alias = "claude-haiku-4-5-latest")]
+    ClaudeHaiku4_5,
+    #[serde(
+        rename = "claude-haiku-4-5-thinking",
+        alias = "claude-haiku-4-5-thinking-latest"
+    )]
+    ClaudeHaiku4_5Thinking,
     #[serde(rename = "claude-3-5-haiku", alias = "claude-3-5-haiku-latest")]
     Claude3_5Haiku,
     #[serde(rename = "claude-3-opus", alias = "claude-3-opus-latest")]
@@ -168,6 +175,14 @@ impl Model {
             return Ok(Self::Claude3_5Sonnet);
         }
 
+        if id.starts_with("claude-haiku-4-5-thinking") {
+            return Ok(Self::ClaudeHaiku4_5Thinking);
+        }
+
+        if id.starts_with("claude-haiku-4-5") {
+            return Ok(Self::ClaudeHaiku4_5);
+        }
+
         if id.starts_with("claude-3-5-haiku") {
             return Ok(Self::Claude3_5Haiku);
         }
@@ -200,6 +215,8 @@ impl Model {
             Self::Claude3_5Sonnet => "claude-3-5-sonnet-latest",
             Self::Claude3_7Sonnet => "claude-3-7-sonnet-latest",
             Self::Claude3_7SonnetThinking => "claude-3-7-sonnet-thinking-latest",
+            Self::ClaudeHaiku4_5 => "claude-haiku-4-5-latest",
+            Self::ClaudeHaiku4_5Thinking => "claude-haiku-4-5-thinking-latest",
             Self::Claude3_5Haiku => "claude-3-5-haiku-latest",
             Self::Claude3Opus => "claude-3-opus-latest",
             Self::Claude3Sonnet => "claude-3-sonnet-20240229",
@@ -217,6 +234,7 @@ impl Model {
             Self::ClaudeSonnet4_5 | Self::ClaudeSonnet4_5Thinking => "claude-sonnet-4-5-20250929",
             Self::Claude3_5Sonnet => "claude-3-5-sonnet-latest",
             Self::Claude3_7Sonnet | Self::Claude3_7SonnetThinking => "claude-3-7-sonnet-latest",
+            Self::ClaudeHaiku4_5 | Self::ClaudeHaiku4_5Thinking => "claude-haiku-4-5-20251001",
             Self::Claude3_5Haiku => "claude-3-5-haiku-latest",
             Self::Claude3Opus => "claude-3-opus-latest",
             Self::Claude3Sonnet => "claude-3-sonnet-20240229",
@@ -238,6 +256,8 @@ impl Model {
             Self::Claude3_7Sonnet => "Claude 3.7 Sonnet",
             Self::Claude3_5Sonnet => "Claude 3.5 Sonnet",
             Self::Claude3_7SonnetThinking => "Claude 3.7 Sonnet Thinking",
+            Self::ClaudeHaiku4_5 => "Claude Haiku 4.5",
+            Self::ClaudeHaiku4_5Thinking => "Claude Haiku 4.5 Thinking",
             Self::Claude3_5Haiku => "Claude 3.5 Haiku",
             Self::Claude3Opus => "Claude 3 Opus",
             Self::Claude3Sonnet => "Claude 3 Sonnet",
@@ -259,6 +279,8 @@ impl Model {
             | Self::ClaudeSonnet4_5
             | Self::ClaudeSonnet4_5Thinking
             | Self::Claude3_5Sonnet
+            | Self::ClaudeHaiku4_5
+            | Self::ClaudeHaiku4_5Thinking
             | Self::Claude3_5Haiku
             | Self::Claude3_7Sonnet
             | Self::Claude3_7SonnetThinking
@@ -286,6 +308,8 @@ impl Model {
             | Self::ClaudeSonnet4_5
             | Self::ClaudeSonnet4_5Thinking
             | Self::Claude3_5Sonnet
+            | Self::ClaudeHaiku4_5
+            | Self::ClaudeHaiku4_5Thinking
             | Self::Claude3_5Haiku
             | Self::Claude3_7Sonnet
             | Self::Claude3_7SonnetThinking
@@ -310,6 +334,7 @@ impl Model {
             | Self::Claude3_7Sonnet
             | Self::Claude3_7SonnetThinking
             | Self::Claude3_5Haiku => 8_192,
+            Self::ClaudeHaiku4_5 | Self::ClaudeHaiku4_5Thinking => 64_000,
             Self::Claude3Opus | Self::Claude3Sonnet | Self::Claude3Haiku => 4_096,
             Self::Custom {
                 max_output_tokens, ..
@@ -330,6 +355,8 @@ impl Model {
             | Self::Claude3_5Sonnet
             | Self::Claude3_7Sonnet
             | Self::Claude3_7SonnetThinking
+            | Self::ClaudeHaiku4_5
+            | Self::ClaudeHaiku4_5Thinking
             | Self::Claude3_5Haiku
             | Self::Claude3Opus
             | Self::Claude3Sonnet
@@ -349,6 +376,7 @@ impl Model {
             | Self::ClaudeSonnet4_5
             | Self::Claude3_5Sonnet
             | Self::Claude3_7Sonnet
+            | Self::ClaudeHaiku4_5
             | Self::Claude3_5Haiku
             | Self::Claude3Opus
             | Self::Claude3Sonnet
@@ -357,6 +385,7 @@ impl Model {
             | Self::ClaudeOpus4_1Thinking
             | Self::ClaudeSonnet4Thinking
             | Self::ClaudeSonnet4_5Thinking
+            | Self::ClaudeHaiku4_5Thinking
             | Self::Claude3_7SonnetThinking => AnthropicModelMode::Thinking {
                 budget_tokens: Some(4_096),
             },