diff --git a/crates/bedrock/src/models.rs b/crates/bedrock/src/models.rs index a8d0614e5d..b93efd4b0e 100644 --- a/crates/bedrock/src/models.rs +++ b/crates/bedrock/src/models.rs @@ -7,8 +7,10 @@ use strum::EnumIter; pub enum Model { // Anthropic models (already included) #[default] - #[serde(rename = "claude-3-5-sonnet", alias = "claude-3-5-sonnet-latest")] + #[serde(rename = "claude-3-5-sonnet-v2", alias = "claude-3-5-sonnet-latest")] Claude3_5Sonnet, + #[serde(rename = "claude-3-7-sonnet", alias = "claude-3-7-sonnet-latest")] + Claude3_7Sonnet, #[serde(rename = "claude-3-opus", alias = "claude-3-opus-latest")] Claude3Opus, #[serde(rename = "claude-3-sonnet", alias = "claude-3-sonnet-latest")] @@ -64,7 +66,7 @@ pub enum Model { impl Model { pub fn from_id(id: &str) -> anyhow::Result { - if id.starts_with("claude-3-5-sonnet") { + if id.starts_with("claude-3-5-sonnet-v2") { Ok(Self::Claude3_5Sonnet) } else if id.starts_with("claude-3-opus") { Ok(Self::Claude3Opus) @@ -72,6 +74,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-3-7-sonnet") { + Ok(Self::Claude3_7Sonnet) } else { Err(anyhow!("invalid model id")) } @@ -83,6 +87,7 @@ impl Model { Model::Claude3Opus => "us.anthropic.claude-3-opus-20240229-v1:0", Model::Claude3Sonnet => "us.anthropic.claude-3-sonnet-20240229-v1:0", Model::Claude3_5Haiku => "us.anthropic.claude-3-5-haiku-20241022-v1:0", + Model::Claude3_7Sonnet => "us.anthropic.claude-3-7-sonnet-20250219-v1:0", Model::AmazonNovaLite => "us.amazon.nova-lite-v1:0", Model::AmazonNovaMicro => "us.amazon.nova-micro-v1:0", Model::AmazonNovaPro => "us.amazon.nova-pro-v1:0", @@ -120,10 +125,11 @@ impl Model { pub fn display_name(&self) -> &str { match self { - Self::Claude3_5Sonnet => "Claude 3.5 Sonnet", + Self::Claude3_5Sonnet => "Claude 3.5 Sonnet v2", Self::Claude3Opus => "Claude 3 Opus", Self::Claude3Sonnet => "Claude 3 Sonnet", Self::Claude3_5Haiku => "Claude 3.5 Haiku", + Self::Claude3_7Sonnet => "Claude 3.7 Sonnet", Self::AmazonNovaLite => "Amazon Nova Lite", Self::AmazonNovaMicro => "Amazon Nova Micro", Self::AmazonNovaPro => "Amazon Nova Pro", @@ -166,7 +172,8 @@ impl Model { Self::Claude3_5Sonnet | Self::Claude3Opus | Self::Claude3Sonnet - | Self::Claude3_5Haiku => 200_000, + | Self::Claude3_5Haiku + | Self::Claude3_7Sonnet => 200_000, Self::Custom { max_tokens, .. } => *max_tokens, _ => 200_000, } @@ -188,7 +195,8 @@ impl Model { Self::Claude3_5Sonnet | Self::Claude3Opus | Self::Claude3Sonnet - | Self::Claude3_5Haiku => 1.0, + | Self::Claude3_5Haiku + | Self::Claude3_7Sonnet => 1.0, Self::Custom { default_temperature, ..