anthropic: Remove deprecated models (#49522)

Ben Brandt created

Release Notes:

- anthropic: Removed models that have been deprecated from their API.

Change summary

crates/anthropic/src/anthropic.rs | 93 +-------------------------------
1 file changed, 3 insertions(+), 90 deletions(-)

Detailed changes

crates/anthropic/src/anthropic.rs 🔗

@@ -137,15 +137,6 @@ pub enum Model {
         alias = "claude-sonnet-4-6-1m-context-thinking-latest"
     )]
     ClaudeSonnet4_6_1mContextThinking,
-    #[serde(rename = "claude-3-7-sonnet", alias = "claude-3-7-sonnet-latest")]
-    Claude3_7Sonnet,
-    #[serde(
-        rename = "claude-3-7-sonnet-thinking",
-        alias = "claude-3-7-sonnet-thinking-latest"
-    )]
-    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(
@@ -153,12 +144,6 @@ pub enum Model {
         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")]
-    Claude3Opus,
-    #[serde(rename = "claude-3-sonnet", alias = "claude-3-sonnet-latest")]
-    Claude3Sonnet,
     #[serde(rename = "claude-3-haiku", alias = "claude-3-haiku-latest")]
     Claude3Haiku,
     #[serde(rename = "custom")]
@@ -182,7 +167,7 @@ pub enum Model {
 
 impl Model {
     pub fn default_fast() -> Self {
-        Self::Claude3_5Haiku
+        Self::ClaudeHaiku4_5
     }
 
     pub fn from_id(id: &str) -> Result<Self> {
@@ -266,18 +251,6 @@ impl Model {
             return Ok(Self::ClaudeSonnet4);
         }
 
-        if id.starts_with("claude-3-7-sonnet-thinking") {
-            return Ok(Self::Claude3_7SonnetThinking);
-        }
-
-        if id.starts_with("claude-3-7-sonnet") {
-            return Ok(Self::Claude3_7Sonnet);
-        }
-
-        if id.starts_with("claude-3-5-sonnet") {
-            return Ok(Self::Claude3_5Sonnet);
-        }
-
         if id.starts_with("claude-haiku-4-5-thinking") {
             return Ok(Self::ClaudeHaiku4_5Thinking);
         }
@@ -286,18 +259,6 @@ impl Model {
             return Ok(Self::ClaudeHaiku4_5);
         }
 
-        if id.starts_with("claude-3-5-haiku") {
-            return Ok(Self::Claude3_5Haiku);
-        }
-
-        if id.starts_with("claude-3-opus") {
-            return Ok(Self::Claude3Opus);
-        }
-
-        if id.starts_with("claude-3-sonnet") {
-            return Ok(Self::Claude3Sonnet);
-        }
-
         if id.starts_with("claude-3-haiku") {
             return Ok(Self::Claude3Haiku);
         }
@@ -331,14 +292,8 @@ impl Model {
             Self::ClaudeSonnet4_6_1mContextThinking => {
                 "claude-sonnet-4-6-1m-context-thinking-latest"
             }
-            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",
             Self::Claude3Haiku => "claude-3-haiku-20240307",
             Self::Custom { name, .. } => name,
         }
@@ -363,12 +318,7 @@ impl Model {
             | Self::ClaudeSonnet4_6Thinking
             | Self::ClaudeSonnet4_6_1mContext
             | Self::ClaudeSonnet4_6_1mContextThinking => "claude-sonnet-4-6",
-            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",
             Self::Claude3Haiku => "claude-3-haiku-20240307",
             Self::Custom { name, .. } => name,
         }
@@ -396,14 +346,8 @@ impl Model {
             Self::ClaudeSonnet4_6Thinking => "Claude Sonnet 4.6 Thinking",
             Self::ClaudeSonnet4_6_1mContext => "Claude Sonnet 4.6 (1M context)",
             Self::ClaudeSonnet4_6_1mContextThinking => "Claude Sonnet 4.6 Thinking (1M context)",
-            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",
             Self::Claude3Haiku => "Claude 3 Haiku",
             Self::Custom {
                 name, display_name, ..
@@ -433,12 +377,8 @@ impl Model {
             | Self::ClaudeSonnet4_6Thinking
             | Self::ClaudeSonnet4_6_1mContext
             | Self::ClaudeSonnet4_6_1mContextThinking
-            | Self::Claude3_5Sonnet
             | Self::ClaudeHaiku4_5
             | Self::ClaudeHaiku4_5Thinking
-            | Self::Claude3_5Haiku
-            | Self::Claude3_7Sonnet
-            | Self::Claude3_7SonnetThinking
             | Self::Claude3Haiku => Some(AnthropicModelCacheConfiguration {
                 min_total_token: 2_048,
                 should_speculate: true,
@@ -448,7 +388,6 @@ impl Model {
                 cache_configuration,
                 ..
             } => cache_configuration.clone(),
-            _ => None,
         }
     }
 
@@ -468,14 +407,8 @@ impl Model {
             | Self::ClaudeSonnet4_5Thinking
             | Self::ClaudeSonnet4_6
             | Self::ClaudeSonnet4_6Thinking
-            | Self::Claude3_5Sonnet
             | Self::ClaudeHaiku4_5
             | Self::ClaudeHaiku4_5Thinking
-            | Self::Claude3_5Haiku
-            | Self::Claude3_7Sonnet
-            | Self::Claude3_7SonnetThinking
-            | Self::Claude3Opus
-            | Self::Claude3Sonnet
             | Self::Claude3Haiku => 200_000,
             Self::ClaudeOpus4_6_1mContext
             | Self::ClaudeOpus4_6_1mContextThinking
@@ -489,7 +422,6 @@ impl Model {
 
     pub fn max_output_tokens(&self) -> u64 {
         match self {
-            Self::Claude3_5Sonnet | Self::Claude3_5Haiku => 8_192,
             Self::ClaudeOpus4
             | Self::ClaudeOpus4Thinking
             | Self::ClaudeOpus4_1
@@ -506,15 +438,13 @@ impl Model {
             | Self::ClaudeSonnet4_6Thinking
             | Self::ClaudeSonnet4_6_1mContext
             | Self::ClaudeSonnet4_6_1mContextThinking
-            | Self::Claude3_7Sonnet
-            | Self::Claude3_7SonnetThinking
             | Self::ClaudeHaiku4_5
             | Self::ClaudeHaiku4_5Thinking => 64_000,
             Self::ClaudeOpus4_6
             | Self::ClaudeOpus4_6Thinking
             | Self::ClaudeOpus4_6_1mContext
             | Self::ClaudeOpus4_6_1mContextThinking => 128_000,
-            Self::Claude3Opus | Self::Claude3Sonnet | Self::Claude3Haiku => 4_096,
+            Self::Claude3Haiku => 4_096,
             Self::Custom {
                 max_output_tokens, ..
             } => max_output_tokens.unwrap_or(4_096),
@@ -543,14 +473,8 @@ impl Model {
             | Self::ClaudeSonnet4_6Thinking
             | Self::ClaudeSonnet4_6_1mContext
             | Self::ClaudeSonnet4_6_1mContextThinking
-            | Self::Claude3_5Sonnet
-            | Self::Claude3_7Sonnet
-            | Self::Claude3_7SonnetThinking
             | Self::ClaudeHaiku4_5
             | Self::ClaudeHaiku4_5Thinking
-            | Self::Claude3_5Haiku
-            | Self::Claude3Opus
-            | Self::Claude3Sonnet
             | Self::Claude3Haiku => 1.0,
             Self::Custom {
                 default_temperature,
@@ -571,12 +495,7 @@ impl Model {
             | Self::ClaudeSonnet4_5_1mContext
             | Self::ClaudeSonnet4_6
             | Self::ClaudeSonnet4_6_1mContext
-            | Self::Claude3_5Sonnet
-            | Self::Claude3_7Sonnet
             | Self::ClaudeHaiku4_5
-            | Self::Claude3_5Haiku
-            | Self::Claude3Opus
-            | Self::Claude3Sonnet
             | Self::Claude3Haiku => AnthropicModelMode::Default,
             Self::ClaudeOpus4Thinking
             | Self::ClaudeOpus4_1Thinking
@@ -588,8 +507,7 @@ impl Model {
             | Self::ClaudeSonnet4_5_1mContextThinking
             | Self::ClaudeSonnet4_6Thinking
             | Self::ClaudeSonnet4_6_1mContextThinking
-            | Self::ClaudeHaiku4_5Thinking
-            | Self::Claude3_7SonnetThinking => AnthropicModelMode::Thinking {
+            | Self::ClaudeHaiku4_5Thinking => AnthropicModelMode::Thinking {
                 budget_tokens: Some(4_096),
             },
             Self::Custom { mode, .. } => mode.clone(),
@@ -608,11 +526,6 @@ impl Model {
             | Self::ClaudeSonnet4_6_1mContextThinking => {
                 headers.push(CONTEXT_1M_BETA_HEADER.to_string());
             }
-            Self::Claude3_7Sonnet | Self::Claude3_7SonnetThinking => {
-                // Try beta token-efficient tool use (supported in Claude 3.7 Sonnet only)
-                // https://docs.anthropic.com/en/docs/build-with-claude/tool-use/token-efficient-tool-use
-                headers.push("token-efficient-tools-2025-02-19".to_string());
-            }
             Self::Custom {
                 extra_beta_headers, ..
             } => {