From 79820868935ba80a88fa97d621bf074ec6380774 Mon Sep 17 00:00:00 2001 From: Douwe Osinga Date: Tue, 2 Jun 2026 13:56:29 -0400 Subject: [PATCH] Pick the last canonical model (#9568) Co-authored-by: Douwe Osinga --- crates/goose/src/model.rs | 2 +- .../canonical/build_canonical_models.rs | 93 +- .../canonical/data/canonical_models.json | 1414 ++++++++++++++--- .../canonical/data/provider_metadata.json | 19 +- .../src/providers/canonical/name_builder.rs | 1 - 5 files changed, 1295 insertions(+), 234 deletions(-) diff --git a/crates/goose/src/model.rs b/crates/goose/src/model.rs index 8109705a..f5e687ea 100644 --- a/crates/goose/src/model.rs +++ b/crates/goose/src/model.rs @@ -878,7 +878,7 @@ mod tests { let config = ModelConfig::new_or_fail("gpt-4o").with_canonical_limits("openai"); assert_eq!(config.context_limit, Some(128_000)); - assert_eq!(config.max_tokens, Some(4_096)); + assert_eq!(config.max_tokens, Some(16_384)); assert_eq!(config.reasoning, Some(false)); } diff --git a/crates/goose/src/providers/canonical/build_canonical_models.rs b/crates/goose/src/providers/canonical/build_canonical_models.rs index 2e67d864..cea82f16 100644 --- a/crates/goose/src/providers/canonical/build_canonical_models.rs +++ b/crates/goose/src/providers/canonical/build_canonical_models.rs @@ -499,6 +499,20 @@ fn collect_provider_metadata( metadata_list } +fn pick_winning_variant(variants: &[(String, CanonicalModel)]) -> usize { + variants + .iter() + .enumerate() + .min_by(|(_, (id_a, a)), (_, (id_b, b))| { + id_a.len() + .cmp(&id_b.len()) + .then_with(|| b.last_updated.cmp(&a.last_updated)) + .then_with(|| b.release_date.cmp(&a.release_date)) + .then_with(|| id_a.cmp(id_b)) + }) + .map(|(idx, _)| idx) + .unwrap_or(0) +} async fn build_canonical_models() -> Result<()> { let json = fetch_models_dev().await?; @@ -523,10 +537,37 @@ async fn build_canonical_models() -> Result<()> { models.len() ); + let mut candidates: BTreeMap> = BTreeMap::new(); for (model_id, model_data) in models { let (model_name, canonical_model) = process_model(model_id, model_data, normalized_provider)?; - registry.register(normalized_provider, &model_name, canonical_model); + candidates + .entry(model_name) + .or_default() + .push((model_id.clone(), canonical_model)); + } + + for (canonical_key, mut variants) in candidates { + let winner = if variants.len() == 1 { + variants.pop().unwrap().1 + } else { + let chosen_idx = pick_winning_variant(&variants); + let chosen_id = variants[chosen_idx].0.clone(); + println!( + " ⚠ {} variants collide on key '{}/{}': [{}] — keeping '{}'", + variants.len(), + normalized_provider, + canonical_key, + variants + .iter() + .map(|(id, _)| id.as_str()) + .collect::>() + .join(", "), + chosen_id, + ); + variants.swap_remove(chosen_idx).1 + }; + registry.register(normalized_provider, &canonical_key, winner); total_models += 1; } } @@ -666,3 +707,53 @@ async fn main() -> Result<()> { Ok(()) } + +#[cfg(test)] +mod tests { + use super::*; + + fn variant(id: &str, release: Option<&str>, updated: Option<&str>) -> (String, CanonicalModel) { + ( + id.to_string(), + CanonicalModel { + id: format!("openai/{}", id), + name: id.to_string(), + family: None, + attachment: None, + reasoning: None, + tool_call: false, + temperature: None, + knowledge: None, + release_date: release.map(String::from), + last_updated: updated.map(String::from), + modalities: Modalities::default(), + open_weights: None, + cost: Pricing::default(), + limit: Limit::default(), + }, + ) + } + + #[test] + fn shortest_variant_wins() { + let variants = vec![ + variant("gpt-4o-2024-08-06", Some("2024-08-06"), Some("2024-08-06")), + variant("gpt-4o", Some("2024-05-13"), Some("2024-08-06")), + variant("gpt-4o-2024-11-20", Some("2024-11-20"), Some("2024-11-20")), + variant("gpt-4o-2024-05-13", Some("2024-05-13"), Some("2024-05-13")), + ]; + let idx = pick_winning_variant(&variants); + assert_eq!(variants[idx].0, "gpt-4o"); + + let variants = vec![ + variant( + "claude-haiku-4-5-20251001", + Some("2025-10-16"), + Some("2025-10-16"), + ), + variant("claude-haiku-4-5", Some("2025-10-16"), Some("2025-10-16")), + ]; + let idx = pick_winning_variant(&variants); + assert_eq!(variants[idx].0, "claude-haiku-4-5"); + } +} diff --git a/crates/goose/src/providers/canonical/data/canonical_models.json b/crates/goose/src/providers/canonical/data/canonical_models.json index 50e421a0..2f56789d 100644 --- a/crates/goose/src/providers/canonical/data/canonical_models.json +++ b/crates/goose/src/providers/canonical/data/canonical_models.json @@ -167,7 +167,7 @@ }, { "id": "302ai/claude-3.5-haiku", - "name": "claude-3-5-haiku-20241022", + "name": "claude-3-5-haiku-latest", "family": "claude-haiku", "attachment": true, "reasoning": false, @@ -320,7 +320,7 @@ }, { "id": "302ai/claude-opus-4.5", - "name": "claude-opus-4-5-20251101", + "name": "claude-opus-4-5", "family": "claude-opus", "attachment": true, "reasoning": true, @@ -2012,7 +2012,7 @@ }, { "id": "302ai/gpt-5.4-nano", - "name": "gpt-5.4-nano-2026-03-17", + "name": "gpt-5.4-nano", "family": "gpt-nano", "attachment": true, "reasoning": true, @@ -13718,7 +13718,7 @@ }, { "id": "anthropic/claude-3.5-haiku", - "name": "Claude Haiku 3.5", + "name": "Claude Haiku 3.5 (latest)", "family": "claude-haiku", "attachment": true, "reasoning": false, @@ -13916,7 +13916,7 @@ }, { "id": "anthropic/claude-opus-4.1", - "name": "Claude Opus 4.1", + "name": "Claude Opus 4.1 (latest)", "family": "claude-opus", "attachment": true, "reasoning": true, @@ -13949,15 +13949,15 @@ }, { "id": "anthropic/claude-opus-4.5", - "name": "Claude Opus 4.5", + "name": "Claude Opus 4.5 (latest)", "family": "claude-opus", "attachment": true, "reasoning": true, "tool_call": true, "temperature": true, "knowledge": "2025-03-31", - "release_date": "2025-11-01", - "last_updated": "2025-11-01", + "release_date": "2025-11-24", + "last_updated": "2025-11-24", "modalities": { "input": [ "text", @@ -14210,6 +14210,833 @@ "output": 64000 } }, + { + "id": "anyapi/anthropic/claude-haiku-4.5", + "name": "Claude Haiku 4.5 (latest)", + "family": "claude-haiku", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-02-28", + "release_date": "2025-10-15", + "last_updated": "2025-10-15", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 200000, + "output": 64000 + } + }, + { + "id": "anyapi/anthropic/claude-opus-4.6", + "name": "Claude Opus 4.6", + "family": "claude-opus", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-05-31", + "release_date": "2026-02-05", + "last_updated": "2026-03-13", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + { + "id": "anyapi/anthropic/claude-opus-4.7", + "name": "Claude Opus 4.7", + "family": "claude-opus", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": false, + "knowledge": "2026-01-31", + "release_date": "2026-04-16", + "last_updated": "2026-04-16", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 1000000, + "output": 128000 + } + }, + { + "id": "anyapi/anthropic/claude-sonnet-4.5", + "name": "Claude Sonnet 4.5 (latest)", + "family": "claude-sonnet", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-07-31", + "release_date": "2025-09-29", + "last_updated": "2025-09-29", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 200000, + "output": 64000 + } + }, + { + "id": "anyapi/anthropic/claude-sonnet-4.6", + "name": "Claude Sonnet 4.6", + "family": "claude-sonnet", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-08-31", + "release_date": "2026-02-17", + "last_updated": "2026-03-13", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 1000000, + "output": 64000 + } + }, + { + "id": "anyapi/cohere/command-r-plus-08", + "name": "Command R+", + "family": "command-r", + "attachment": false, + "reasoning": false, + "tool_call": true, + "temperature": true, + "knowledge": "2024-06-01", + "release_date": "2024-08-30", + "last_updated": "2024-08-30", + "modalities": { + "input": [ + "text" + ], + "output": [ + "text" + ] + }, + "open_weights": true, + "cost": {}, + "limit": { + "context": 128000, + "output": 4000 + } + }, + { + "id": "anyapi/deepseek/deepseek-chat", + "name": "DeepSeek Chat", + "family": "deepseek", + "attachment": true, + "reasoning": false, + "tool_call": true, + "temperature": true, + "knowledge": "2025-09", + "release_date": "2025-12-01", + "last_updated": "2026-02-28", + "modalities": { + "input": [ + "text" + ], + "output": [ + "text" + ] + }, + "open_weights": true, + "cost": {}, + "limit": { + "context": 1000000, + "output": 384000 + } + }, + { + "id": "anyapi/deepseek/deepseek-r1", + "name": "DeepSeek Reasoner", + "family": "deepseek-thinking", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-09", + "release_date": "2025-12-01", + "last_updated": "2026-02-28", + "modalities": { + "input": [ + "text" + ], + "output": [ + "text" + ] + }, + "open_weights": true, + "cost": {}, + "limit": { + "context": 1000000, + "output": 384000 + } + }, + { + "id": "anyapi/deepseek/deepseek-v4-flash", + "name": "DeepSeek V4 Flash", + "family": "deepseek-flash", + "attachment": false, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-05", + "release_date": "2026-04-24", + "last_updated": "2026-04-24", + "modalities": { + "input": [ + "text" + ], + "output": [ + "text" + ] + }, + "open_weights": true, + "cost": {}, + "limit": { + "context": 1000000, + "output": 384000 + } + }, + { + "id": "anyapi/deepseek/deepseek-v4-pro", + "name": "DeepSeek V4 Pro", + "family": "deepseek-thinking", + "attachment": false, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-05", + "release_date": "2026-04-24", + "last_updated": "2026-04-24", + "modalities": { + "input": [ + "text" + ], + "output": [ + "text" + ] + }, + "open_weights": true, + "cost": {}, + "limit": { + "context": 1000000, + "output": 384000 + } + }, + { + "id": "anyapi/google/gemini-2.5-flash", + "name": "Gemini 2.5 Flash", + "family": "gemini-flash", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-01", + "release_date": "2025-03-20", + "last_updated": "2025-06-05", + "modalities": { + "input": [ + "text", + "image", + "audio", + "video", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + { + "id": "anyapi/google/gemini-2.5-flash-lite", + "name": "Gemini 2.5 Flash-Lite", + "family": "gemini-flash-lite", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-01", + "release_date": "2025-06-17", + "last_updated": "2025-06-17", + "modalities": { + "input": [ + "text", + "image", + "audio", + "video", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + { + "id": "anyapi/google/gemini-2.5-pro", + "name": "Gemini 2.5 Pro", + "family": "gemini-pro", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-01", + "release_date": "2025-03-20", + "last_updated": "2025-06-05", + "modalities": { + "input": [ + "text", + "image", + "audio", + "video", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + { + "id": "anyapi/google/gemini-3-flash-preview", + "name": "Gemini 3 Flash Preview", + "family": "gemini-flash", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-01", + "release_date": "2025-12-17", + "last_updated": "2025-12-17", + "modalities": { + "input": [ + "text", + "image", + "video", + "audio", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + { + "id": "anyapi/google/gemini-3-pro-preview", + "name": "Gemini 3 Pro Preview", + "family": "gemini-pro", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-01", + "release_date": "2025-11-18", + "last_updated": "2025-11-18", + "modalities": { + "input": [ + "text", + "image", + "video", + "audio", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 1048576, + "output": 65536 + } + }, + { + "id": "anyapi/mistralai/devstral", + "name": "Devstral 2", + "family": "devstral", + "attachment": false, + "reasoning": false, + "tool_call": true, + "temperature": true, + "knowledge": "2025-12", + "release_date": "2025-12-09", + "last_updated": "2025-12-09", + "modalities": { + "input": [ + "text" + ], + "output": [ + "text" + ] + }, + "open_weights": true, + "cost": {}, + "limit": { + "context": 262144, + "output": 262144 + } + }, + { + "id": "anyapi/mistralai/mistral-large", + "name": "Mistral Large 3", + "family": "mistral-large", + "attachment": true, + "reasoning": false, + "tool_call": true, + "temperature": true, + "knowledge": "2024-11", + "release_date": "2024-11-01", + "last_updated": "2025-12-02", + "modalities": { + "input": [ + "text", + "image" + ], + "output": [ + "text" + ] + }, + "open_weights": true, + "cost": {}, + "limit": { + "context": 262144, + "output": 262144 + } + }, + { + "id": "anyapi/openai/gpt-4.1", + "name": "GPT-4.1", + "family": "gpt", + "attachment": true, + "reasoning": false, + "tool_call": true, + "temperature": true, + "knowledge": "2024-04", + "release_date": "2025-04-14", + "last_updated": "2025-04-14", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 1047576, + "output": 32768 + } + }, + { + "id": "anyapi/openai/gpt-4.1-mini", + "name": "GPT-4.1 mini", + "family": "gpt-mini", + "attachment": true, + "reasoning": false, + "tool_call": true, + "temperature": true, + "knowledge": "2024-04", + "release_date": "2025-04-14", + "last_updated": "2025-04-14", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 1047576, + "output": 32768 + } + }, + { + "id": "anyapi/openai/gpt-5", + "name": "GPT-5", + "family": "gpt", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": false, + "knowledge": "2024-09-30", + "release_date": "2025-08-07", + "last_updated": "2025-08-07", + "modalities": { + "input": [ + "text", + "image" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 400000, + "output": 128000 + } + }, + { + "id": "anyapi/openai/gpt-5-mini", + "name": "GPT-5 Mini", + "family": "gpt-mini", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": false, + "knowledge": "2024-05-30", + "release_date": "2025-08-07", + "last_updated": "2025-08-07", + "modalities": { + "input": [ + "text", + "image" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 400000, + "output": 128000 + } + }, + { + "id": "anyapi/openai/gpt-5.1", + "name": "GPT-5.1", + "family": "gpt", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": false, + "knowledge": "2024-09-30", + "release_date": "2025-11-13", + "last_updated": "2025-11-13", + "modalities": { + "input": [ + "text", + "image" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 400000, + "output": 128000 + } + }, + { + "id": "anyapi/openai/gpt-5.2", + "name": "GPT-5.2", + "family": "gpt", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": false, + "knowledge": "2025-08-31", + "release_date": "2025-12-11", + "last_updated": "2025-12-11", + "modalities": { + "input": [ + "text", + "image" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 400000, + "output": 128000 + } + }, + { + "id": "anyapi/openai/gpt-5.4", + "name": "GPT-5.4", + "family": "gpt", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": false, + "knowledge": "2025-08-31", + "release_date": "2026-03-05", + "last_updated": "2026-03-05", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 1050000, + "output": 128000 + } + }, + { + "id": "anyapi/openai/o3", + "name": "o3", + "family": "o", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": false, + "knowledge": "2024-05", + "release_date": "2025-04-16", + "last_updated": "2025-04-16", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 200000, + "output": 100000 + } + }, + { + "id": "anyapi/openai/o3-mini", + "name": "o3-mini", + "family": "o-mini", + "attachment": false, + "reasoning": true, + "tool_call": true, + "temperature": false, + "knowledge": "2024-05", + "release_date": "2024-12-20", + "last_updated": "2025-01-29", + "modalities": { + "input": [ + "text" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 200000, + "output": 100000 + } + }, + { + "id": "anyapi/openai/o4-mini", + "name": "o4-mini", + "family": "o-mini", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": false, + "knowledge": "2024-05", + "release_date": "2025-04-16", + "last_updated": "2025-04-16", + "modalities": { + "input": [ + "text", + "image" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 200000, + "output": 100000 + } + }, + { + "id": "anyapi/perplexity/sonar-pro", + "name": "Sonar Pro", + "family": "sonar-pro", + "attachment": true, + "reasoning": false, + "tool_call": false, + "temperature": true, + "knowledge": "2025-09-01", + "release_date": "2024-01-01", + "last_updated": "2025-09-01", + "modalities": { + "input": [ + "text", + "image" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 200000, + "output": 8192 + } + }, + { + "id": "anyapi/perplexity/sonar-reasoning-pro", + "name": "Sonar Reasoning Pro", + "family": "sonar-reasoning", + "attachment": true, + "reasoning": true, + "tool_call": false, + "temperature": true, + "knowledge": "2025-09-01", + "release_date": "2024-01-01", + "last_updated": "2025-09-01", + "modalities": { + "input": [ + "text", + "image" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 128000, + "output": 4096 + } + }, + { + "id": "anyapi/xai/grok-4.3", + "name": "Grok 4.3", + "family": "grok", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "release_date": "2026-04-17", + "last_updated": "2026-04-17", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": {}, + "limit": { + "context": 1000000, + "output": 30000 + } + }, { "id": "atomic-chat/Meta-Llama-3_1-8B-Instruct-GGUF", "name": "Meta Llama 3.1 8B Instruct (GGUF)", @@ -15224,15 +16051,15 @@ }, { "id": "azure-cognitive-services/deepseek-r1", - "name": "DeepSeek-R1-0528", + "name": "DeepSeek-R1", "family": "deepseek-thinking", "attachment": false, "reasoning": true, - "tool_call": true, + "tool_call": false, "temperature": true, "knowledge": "2024-07", - "release_date": "2025-05-28", - "last_updated": "2025-05-28", + "release_date": "2025-01-20", + "last_updated": "2025-01-20", "modalities": { "input": [ "text" @@ -15369,15 +16196,15 @@ }, { "id": "azure-cognitive-services/gpt-3.5-turbo", - "name": "GPT-3.5 Turbo 1106", + "name": "GPT-3.5 Turbo 0125", "family": "gpt", "attachment": false, "reasoning": false, "tool_call": false, "temperature": true, "knowledge": "2021-08", - "release_date": "2023-11-06", - "last_updated": "2023-11-06", + "release_date": "2024-01-25", + "last_updated": "2024-01-25", "modalities": { "input": [ "text" @@ -15388,8 +16215,8 @@ }, "open_weights": false, "cost": { - "input": 1.0, - "output": 2.0 + "input": 0.5, + "output": 1.5 }, "limit": { "context": 16384, @@ -17334,10 +18161,10 @@ }, { "id": "azure-cognitive-services/phi-4", - "name": "Phi-4-reasoning", + "name": "Phi-4", "family": "phi", "attachment": false, - "reasoning": true, + "reasoning": false, "tool_call": false, "temperature": true, "knowledge": "2023-10", @@ -17357,7 +18184,7 @@ "output": 0.5 }, "limit": { - "context": 32000, + "context": 128000, "output": 4096 } }, @@ -18107,15 +18934,15 @@ }, { "id": "azure/gpt-3.5-turbo", - "name": "GPT-3.5 Turbo 0301", + "name": "GPT-3.5 Turbo 0125", "family": "gpt", "attachment": false, "reasoning": false, "tool_call": false, "temperature": true, "knowledge": "2021-08", - "release_date": "2023-03-01", - "last_updated": "2023-03-01", + "release_date": "2024-01-25", + "last_updated": "2024-01-25", "modalities": { "input": [ "text" @@ -18126,12 +18953,12 @@ }, "open_weights": false, "cost": { - "input": 1.5, - "output": 2.0 + "input": 0.5, + "output": 1.5 }, "limit": { - "context": 4096, - "output": 4096 + "context": 16384, + "output": 16384 } }, { @@ -20281,10 +21108,10 @@ }, { "id": "azure/phi-4-mini", - "name": "Phi-4-mini-reasoning", + "name": "Phi-4-mini", "family": "phi", "attachment": false, - "reasoning": true, + "reasoning": false, "tool_call": true, "temperature": true, "knowledge": "2023-10", @@ -22712,11 +23539,13 @@ "tool_call": true, "knowledge": "2026-05", "release_date": "2026-05-12", - "last_updated": "2026-05-12", + "last_updated": "2026-06-02", "modalities": { "input": [ "text", - "image" + "image", + "audio", + "video" ], "output": [ "text" @@ -22726,7 +23555,7 @@ "cost": { "input": 0.5, "output": 2.0, - "cache_read": 0.05 + "cache_read": 0.15 }, "limit": { "context": 256000, @@ -34882,7 +35711,7 @@ }, "limit": { "context": 200000, - "output": 64000 + "output": 32000 } }, { @@ -34914,8 +35743,8 @@ "cache_write": 6.25 }, "limit": { - "context": 1000000, - "output": 128000 + "context": 200000, + "output": 32000 } }, { @@ -34947,8 +35776,8 @@ "cache_write": 6.25 }, "limit": { - "context": 1000000, - "output": 128000 + "context": 200000, + "output": 32000 } }, { @@ -34979,8 +35808,8 @@ "cache_write": 6.25 }, "limit": { - "context": 1000000, - "output": 128000 + "context": 200000, + "output": 64000 } }, { @@ -35012,8 +35841,8 @@ "cache_write": 3.75 }, "limit": { - "context": 200000, - "output": 64000 + "context": 216000, + "output": 16000 } }, { @@ -35046,7 +35875,7 @@ }, "limit": { "context": 200000, - "output": 64000 + "output": 32000 } }, { @@ -35078,8 +35907,8 @@ "cache_write": 3.75 }, "limit": { - "context": 1000000, - "output": 64000 + "context": 200000, + "output": 32000 } }, { @@ -35112,8 +35941,8 @@ "cache_read": 0.125 }, "limit": { - "context": 1048576, - "output": 65536 + "context": 128000, + "output": 64000 } }, { @@ -35146,8 +35975,8 @@ "cache_read": 0.05 }, "limit": { - "context": 1048576, - "output": 65536 + "context": 128000, + "output": 64000 } }, { @@ -35180,8 +36009,8 @@ "cache_read": 0.2 }, "limit": { - "context": 1048576, - "output": 65536 + "context": 200000, + "output": 64000 } }, { @@ -35214,8 +36043,8 @@ "cache_read": 0.15 }, "limit": { - "context": 1048576, - "output": 65536 + "context": 200000, + "output": 64000 } }, { @@ -35246,8 +36075,8 @@ "cache_read": 0.5 }, "limit": { - "context": 1047576, - "output": 32768 + "context": 128000, + "output": 16384 } }, { @@ -35277,8 +36106,8 @@ "cache_read": 0.025 }, "limit": { - "context": 400000, - "output": 128000 + "context": 264000, + "output": 64000 } }, { @@ -35404,7 +36233,7 @@ "cache_read": 0.25 }, "limit": { - "context": 1050000, + "context": 400000, "output": 128000 } }, @@ -35498,7 +36327,7 @@ "cache_read": 0.5 }, "limit": { - "context": 1050000, + "context": 400000, "output": 128000 } }, @@ -40788,15 +41617,15 @@ }, { "id": "groq/moonshotai/kimi-k2-instruct", - "name": "Kimi K2 Instruct 0905", + "name": "Kimi K2 Instruct", "family": "kimi", "attachment": false, "reasoning": false, "tool_call": true, "temperature": true, "knowledge": "2024-10", - "release_date": "2025-09-05", - "last_updated": "2026-05-27", + "release_date": "2025-07-14", + "last_updated": "2025-07-14", "modalities": { "input": [ "text" @@ -40808,11 +41637,10 @@ "open_weights": true, "cost": { "input": 1.0, - "output": 3.0, - "cache_read": 0.5 + "output": 3.0 }, "limit": { - "context": 262144, + "context": 131072, "output": 16384 } }, @@ -41340,7 +42168,7 @@ }, { "id": "helicone/claude-opus-4.1", - "name": "Anthropic: Claude Opus 4.1 (20250805)", + "name": "Anthropic: Claude Opus 4.1", "family": "claude-opus", "attachment": false, "reasoning": true, @@ -43523,10 +44351,10 @@ }, { "id": "helicone/sonar", - "name": "Perplexity Sonar Reasoning", - "family": "sonar-reasoning", + "name": "Perplexity Sonar", + "family": "sonar", "attachment": false, - "reasoning": true, + "reasoning": false, "tool_call": false, "temperature": true, "knowledge": "2025-01", @@ -43543,7 +44371,7 @@ "open_weights": false, "cost": { "input": 1.0, - "output": 5.0 + "output": 1.0 }, "limit": { "context": 127000, @@ -51337,17 +52165,16 @@ }, { "id": "kilo/mistralai/mistral-large", - "name": "Mistral: Mistral Large 3 2512", - "attachment": true, + "name": "Mistral Large", + "attachment": false, "reasoning": false, "tool_call": true, "temperature": true, - "release_date": "2024-11-01", - "last_updated": "2025-12-16", + "release_date": "2024-07-24", + "last_updated": "2025-12-02", "modalities": { "input": [ - "text", - "image" + "text" ], "output": [ "text" @@ -51355,12 +52182,12 @@ }, "open_weights": true, "cost": { - "input": 0.5, - "output": 1.5 + "input": 2.0, + "output": 6.0 }, "limit": { - "context": 262144, - "output": 52429 + "context": 128000, + "output": 25600 } }, { @@ -52195,13 +53022,13 @@ }, { "id": "kilo/openai/gpt-3.5-turbo", - "name": "OpenAI: GPT-3.5 Turbo (older v0613)", + "name": "OpenAI: GPT-3.5 Turbo", "attachment": false, "reasoning": false, "tool_call": true, "temperature": true, - "release_date": "2023-06-13", - "last_updated": "2023-06-13", + "release_date": "2023-03-01", + "last_updated": "2023-11-06", "modalities": { "input": [ "text" @@ -52212,11 +53039,11 @@ }, "open_weights": false, "cost": { - "input": 1.0, - "output": 2.0 + "input": 0.5, + "output": 1.5 }, "limit": { - "context": 4095, + "context": 16385, "output": 4096 } }, @@ -52475,7 +53302,7 @@ }, { "id": "kilo/openai/gpt-4o", - "name": "OpenAI: GPT-4o (2024-05-13)", + "name": "OpenAI: GPT-4o", "attachment": true, "reasoning": false, "tool_call": true, @@ -52494,12 +53321,13 @@ }, "open_weights": false, "cost": { - "input": 5.0, - "output": 15.0 + "input": 2.5, + "output": 10.0, + "cache_read": 1.25 }, "limit": { "context": 128000, - "output": 4096 + "output": 16384 } }, { @@ -54427,13 +55255,13 @@ }, { "id": "kilo/qwen/qwen3-235b-a22b", - "name": "Qwen: Qwen3 235B A22B Instruct 2507", + "name": "Qwen: Qwen3 235B A22B", "attachment": false, "reasoning": true, "tool_call": true, "temperature": true, - "release_date": "2025-04", - "last_updated": "2026-01", + "release_date": "2024-12-01", + "last_updated": "2026-03-15", "modalities": { "input": [ "text" @@ -54444,12 +55272,13 @@ }, "open_weights": true, "cost": { - "input": 0.071, - "output": 0.1 + "input": 0.455, + "output": 1.82, + "cache_read": 0.15 }, "limit": { - "context": 262144, - "output": 52429 + "context": 131072, + "output": 8192 } }, { @@ -57341,20 +58170,17 @@ }, { "id": "llmgateway/claude-3.7-sonnet", - "name": "Claude Sonnet 3.7", - "family": "claude-sonnet", - "attachment": true, + "name": "Claude 3.7 Sonnet", + "family": "claude", + "attachment": false, "reasoning": true, "tool_call": true, "temperature": true, - "knowledge": "2024-10-31", - "release_date": "2025-02-19", - "last_updated": "2025-02-19", + "release_date": "2025-02-24", + "last_updated": "2025-02-24", "modalities": { "input": [ - "text", - "image", - "pdf" + "text" ], "output": [ "text" @@ -57364,12 +58190,11 @@ "cost": { "input": 3.0, "output": 15.0, - "cache_read": 0.3, - "cache_write": 3.75 + "cache_read": 0.3 }, "limit": { "context": 200000, - "output": 64000 + "output": 8192 } }, { @@ -61098,7 +61923,7 @@ }, { "id": "llmgateway/mistral-large", - "name": "Mistral Large (latest)", + "name": "Mistral Large 3", "family": "mistral-large", "attachment": true, "reasoning": false, @@ -64663,7 +65488,7 @@ }, { "id": "merge-gateway/mistral/mistral-large", - "name": "Mistral Large (latest)", + "name": "Mistral Large 3", "family": "mistral-large", "attachment": true, "reasoning": false, @@ -64878,7 +65703,7 @@ }, { "id": "merge-gateway/openai/gpt-4o", - "name": "GPT-4o (2024-05-13)", + "name": "GPT-4o", "family": "gpt", "attachment": true, "reasoning": false, @@ -64886,11 +65711,12 @@ "temperature": true, "knowledge": "2023-09", "release_date": "2024-05-13", - "last_updated": "2024-05-13", + "last_updated": "2024-08-06", "modalities": { "input": [ "text", - "image" + "image", + "pdf" ], "output": [ "text" @@ -64898,12 +65724,13 @@ }, "open_weights": false, "cost": { - "input": 5.0, - "output": 15.0 + "input": 2.5, + "output": 10.0, + "cache_read": 1.25 }, "limit": { "context": 128000, - "output": 4096 + "output": 16384 } }, { @@ -66156,6 +66983,38 @@ "output": 131072 } }, + { + "id": "minimax-cn-coding-plan/MiniMax-M3", + "name": "MiniMax-M3", + "family": "minimax", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "release_date": "2026-06-01", + "last_updated": "2026-06-01", + "modalities": { + "input": [ + "text", + "image", + "video" + ], + "output": [ + "text" + ] + }, + "open_weights": true, + "cost": { + "input": 0.0, + "output": 0.0, + "cache_read": 0.0, + "cache_write": 0.0 + }, + "limit": { + "context": 512000, + "output": 128000 + } + }, { "id": "minimax-cn/MiniMax-M2", "name": "MiniMax-M2", @@ -66332,6 +67191,37 @@ "output": 131072 } }, + { + "id": "minimax-cn/MiniMax-M3", + "name": "MiniMax-M3", + "family": "minimax", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "release_date": "2026-06-01", + "last_updated": "2026-06-01", + "modalities": { + "input": [ + "text", + "image", + "video" + ], + "output": [ + "text" + ] + }, + "open_weights": true, + "cost": { + "input": 0.6, + "output": 2.4, + "cache_read": 0.12 + }, + "limit": { + "context": 512000, + "output": 128000 + } + }, { "id": "minimax-coding-plan/MiniMax-M2", "name": "MiniMax-M2", @@ -66508,6 +67398,38 @@ "output": 131072 } }, + { + "id": "minimax-coding-plan/MiniMax-M3", + "name": "MiniMax-M3", + "family": "minimax", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "release_date": "2026-06-01", + "last_updated": "2026-06-01", + "modalities": { + "input": [ + "text", + "image", + "video" + ], + "output": [ + "text" + ] + }, + "open_weights": true, + "cost": { + "input": 0.0, + "output": 0.0, + "cache_read": 0.0, + "cache_write": 0.0 + }, + "limit": { + "context": 512000, + "output": 128000 + } + }, { "id": "minimax/MiniMax-M2", "name": "MiniMax-M2", @@ -66684,6 +67606,37 @@ "output": 131072 } }, + { + "id": "minimax/MiniMax-M3", + "name": "MiniMax-M3", + "family": "minimax", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "release_date": "2026-06-01", + "last_updated": "2026-06-01", + "modalities": { + "input": [ + "text", + "image", + "video" + ], + "output": [ + "text" + ] + }, + "open_weights": true, + "cost": { + "input": 0.6, + "output": 2.4, + "cache_read": 0.12 + }, + "limit": { + "context": 512000, + "output": 128000 + } + }, { "id": "mistralai/codestral", "name": "Codestral (latest)", @@ -66773,15 +67726,15 @@ }, { "id": "mistralai/devstral-small", - "name": "Devstral Small 2505", + "name": "Devstral Small", "family": "devstral", "attachment": false, "reasoning": false, "tool_call": true, "temperature": true, "knowledge": "2025-05", - "release_date": "2025-05-07", - "last_updated": "2025-05-07", + "release_date": "2025-07-10", + "last_updated": "2025-07-10", "modalities": { "input": [ "text" @@ -66976,7 +67929,7 @@ }, { "id": "mistralai/mistral-large", - "name": "Mistral Large (latest)", + "name": "Mistral Large 3", "family": "mistral-large", "attachment": true, "reasoning": false, @@ -67006,7 +67959,7 @@ }, { "id": "mistralai/mistral-medium", - "name": "Mistral Medium (latest)", + "name": "Mistral Medium 3.5", "family": "mistral-medium", "attachment": true, "reasoning": true, @@ -67064,7 +68017,7 @@ }, { "id": "mistralai/mistral-small", - "name": "Mistral Small (latest)", + "name": "Mistral Small 4", "family": "mistral-small", "attachment": true, "reasoning": true, @@ -76369,12 +77322,12 @@ }, { "id": "nano-gpt/glm-4-air", - "name": "GLM 4 Air 0111", + "name": "GLM-4 Air", "attachment": false, "reasoning": false, "tool_call": false, - "release_date": "2025-01-11", - "last_updated": "2025-01-11", + "release_date": "2024-06-05", + "last_updated": "2024-06-05", "modalities": { "input": [ "text" @@ -76385,8 +77338,8 @@ }, "open_weights": false, "cost": { - "input": 0.1394, - "output": 0.1394 + "input": 0.2006, + "output": 0.2006 }, "limit": { "context": 128000, @@ -76473,12 +77426,12 @@ }, { "id": "nano-gpt/glm-4-plus", - "name": "GLM 4 Plus 0111", + "name": "GLM-4 Plus", "attachment": false, "reasoning": false, "tool_call": false, - "release_date": "2025-02-19", - "last_updated": "2025-02-19", + "release_date": "2024-08-01", + "last_updated": "2024-08-01", "modalities": { "input": [ "text" @@ -76489,8 +77442,8 @@ }, "open_weights": false, "cost": { - "input": 9.996, - "output": 9.996 + "input": 7.497, + "output": 7.497 }, "limit": { "context": 128000, @@ -79070,13 +80023,13 @@ }, { "id": "nano-gpt/openai/gpt-4o", - "name": "GPT-4o (2024-11-20)", + "name": "GPT-4o", "family": "gpt", "attachment": true, "reasoning": false, "tool_call": false, - "release_date": "2024-11-20", - "last_updated": "2024-11-20", + "release_date": "2024-05-13", + "last_updated": "2024-05-13", "modalities": { "input": [ "text", @@ -79088,8 +80041,8 @@ }, "open_weights": false, "cost": { - "input": 2.5, - "output": 10.0 + "input": 2.499, + "output": 9.996 }, "limit": { "context": 128000, @@ -79349,16 +80302,18 @@ }, { "id": "nano-gpt/openai/gpt-5.1", - "name": "GPT-5.1 (2025-11-13)", + "name": "GPT 5.1", "family": "gpt", - "attachment": false, - "reasoning": false, - "tool_call": false, + "attachment": true, + "reasoning": true, + "tool_call": true, "release_date": "2025-11-13", "last_updated": "2025-11-13", "modalities": { "input": [ - "text" + "text", + "image", + "pdf" ], "output": [ "text" @@ -79370,13 +80325,13 @@ "output": 10.0 }, "limit": { - "context": 1000000, - "output": 32768 + "context": 400000, + "output": 128000 } }, { "id": "nano-gpt/openai/gpt-5.1-chat", - "name": "GPT 5.1 Chat (Latest)", + "name": "GPT 5.1 Chat", "family": "gpt", "attachment": true, "reasoning": true, @@ -79399,7 +80354,7 @@ }, "limit": { "context": 400000, - "output": 16384 + "output": 128000 } }, { @@ -88733,14 +89688,14 @@ }, { "id": "nvidia/moonshotai/kimi-k2-instruct", - "name": "Kimi K2 0905", + "name": "Kimi K2 Instruct", "family": "kimi", "attachment": false, - "reasoning": false, + "reasoning": true, "tool_call": true, "temperature": true, - "knowledge": "2024-10", - "release_date": "2025-09-05", + "knowledge": "2024-01", + "release_date": "2025-01-01", "last_updated": "2025-09-05", "modalities": { "input": [ @@ -88750,14 +89705,14 @@ "text" ] }, - "open_weights": true, + "open_weights": false, "cost": { "input": 0.0, "output": 0.0 }, "limit": { - "context": 262144, - "output": 262144 + "context": 128000, + "output": 8192 } }, { @@ -91365,7 +92320,7 @@ }, { "id": "openai/gpt-4o", - "name": "GPT-4o (2024-05-13)", + "name": "GPT-4o", "family": "gpt", "attachment": true, "reasoning": false, @@ -91373,11 +92328,12 @@ "temperature": true, "knowledge": "2023-09", "release_date": "2024-05-13", - "last_updated": "2024-05-13", + "last_updated": "2024-08-06", "modalities": { "input": [ "text", - "image" + "image", + "pdf" ], "output": [ "text" @@ -91385,12 +92341,13 @@ }, "open_weights": false, "cost": { - "input": 5.0, - "output": 15.0 + "input": 2.5, + "output": 10.0, + "cache_read": 1.25 }, "limit": { "context": 128000, - "output": 4096 + "output": 16384 } }, { @@ -98914,7 +99871,7 @@ }, "open_weights": true, "cost": { - "input": 0.26, + "input": 0.279, "output": 1.2 }, "limit": { @@ -99107,34 +100064,33 @@ }, { "id": "openrouter/mistralai/mistral-large", - "name": "Mistral Large 3", + "name": "Mistral Large", "family": "mistral-large", "attachment": true, "reasoning": false, "tool_call": true, "temperature": true, - "knowledge": "2024-11", - "release_date": "2024-11-01", - "last_updated": "2025-12-02", + "knowledge": "2024-11-30", + "release_date": "2024-02-26", + "last_updated": "2024-02-26", "modalities": { "input": [ "text", - "image", "pdf" ], "output": [ "text" ] }, - "open_weights": true, + "open_weights": false, "cost": { - "input": 0.5, - "output": 1.5, - "cache_read": 0.05 + "input": 2.0, + "output": 6.0, + "cache_read": 0.2 }, "limit": { - "context": 262144, - "output": 262144 + "context": 128000, + "output": 128000 } }, { @@ -100447,7 +101403,7 @@ }, { "id": "openrouter/openai/gpt-4o", - "name": "GPT-4o (2024-05-13)", + "name": "GPT-4o", "family": "gpt", "attachment": true, "reasoning": false, @@ -100455,7 +101411,7 @@ "temperature": true, "knowledge": "2023-09", "release_date": "2024-05-13", - "last_updated": "2024-05-13", + "last_updated": "2024-08-06", "modalities": { "input": [ "text", @@ -100468,12 +101424,12 @@ }, "open_weights": false, "cost": { - "input": 5.0, - "output": 15.0 + "input": 2.5, + "output": 10.0 }, "limit": { "context": 128000, - "output": 4096 + "output": 16384 } }, { @@ -102540,15 +103496,15 @@ }, { "id": "openrouter/qwen/qwen3-235b-a22b", - "name": "Qwen3 235B A22B Instruct 2507", + "name": "Qwen3 235B A22B", "family": "qwen", "attachment": false, - "reasoning": false, + "reasoning": true, "tool_call": true, "temperature": true, - "knowledge": "2025-06-30", - "release_date": "2025-07-21", - "last_updated": "2025-07-21", + "knowledge": "2025-03-31", + "release_date": "2025-04-28", + "last_updated": "2025-04-28", "modalities": { "input": [ "text" @@ -102559,12 +103515,12 @@ }, "open_weights": true, "cost": { - "input": 0.071, - "output": 0.1 + "input": 0.455, + "output": 1.82 }, "limit": { - "context": 262144, - "output": 16384 + "context": 131072, + "output": 8192 } }, { @@ -102647,12 +103603,12 @@ }, "open_weights": true, "cost": { - "input": 0.09, - "output": 0.3 + "input": 0.0428, + "output": 0.1716 }, "limit": { - "context": 262144, - "output": 262144 + "context": 128000, + "output": 32000 } }, { @@ -104097,9 +105053,9 @@ }, "open_weights": true, "cost": { - "input": 0.066, - "output": 0.26, - "cache_read": 0.029 + "input": 0.063, + "output": 0.21, + "cache_read": 0.021 }, "limit": { "context": 262144, @@ -106386,7 +107342,7 @@ }, { "id": "orcarouter/openai/gpt-4o", - "name": "GPT-4o (2024-05-13)", + "name": "GPT-4o", "family": "gpt", "attachment": true, "reasoning": false, @@ -106394,11 +107350,12 @@ "temperature": true, "knowledge": "2023-09", "release_date": "2024-05-13", - "last_updated": "2024-05-13", + "last_updated": "2024-08-06", "modalities": { "input": [ "text", - "image" + "image", + "pdf" ], "output": [ "text" @@ -106406,12 +107363,13 @@ }, "open_weights": false, "cost": { - "input": 5.0, - "output": 15.0 + "input": 2.5, + "output": 10.0, + "cache_read": 1.25 }, "limit": { "context": 128000, - "output": 4096 + "output": 16384 } }, { @@ -110736,14 +111694,14 @@ }, { "id": "poe/openai/gpt-4-classic", - "name": "GPT-4-Classic-0314", + "name": "GPT-4-Classic", "family": "gpt", "attachment": true, "reasoning": false, "tool_call": true, "temperature": false, - "release_date": "2024-08-26", - "last_updated": "2024-08-26", + "release_date": "2024-03-25", + "last_updated": "2024-03-25", "modalities": { "input": [ "text", @@ -117509,14 +118467,14 @@ }, { "id": "routing-run/route/step-3.5-flash", - "name": "Step 3.5 Flash 2603", + "name": "Step 3.5 Flash", "attachment": false, "reasoning": true, "tool_call": true, "temperature": true, "knowledge": "2025-01", - "release_date": "2026-04-02", - "last_updated": "2026-04-02", + "release_date": "2026-01-29", + "last_updated": "2026-02-13", "modalities": { "input": [ "text" @@ -117527,9 +118485,9 @@ }, "open_weights": true, "cost": { - "input": 0.1, - "output": 0.3, - "cache_read": 0.02 + "input": 0.096, + "output": 0.288, + "cache_read": 0.019 }, "limit": { "context": 262144, @@ -123977,14 +124935,14 @@ }, { "id": "stepfun/step-3.5-flash", - "name": "Step 3.5 Flash 2603", + "name": "Step 3.5 Flash", "attachment": false, "reasoning": true, "tool_call": true, "temperature": true, "knowledge": "2025-01", - "release_date": "2026-04-02", - "last_updated": "2026-04-02", + "release_date": "2026-01-29", + "last_updated": "2026-02-13", "modalities": { "input": [ "text" @@ -123995,9 +124953,9 @@ }, "open_weights": true, "cost": { - "input": 0.1, - "output": 0.3, - "cache_read": 0.02 + "input": 0.096, + "output": 0.288, + "cache_read": 0.019 }, "limit": { "context": 256000, @@ -124489,14 +125447,15 @@ }, { "id": "synthetic/hf:deepseek-ai/DeepSeek-R1", - "name": "DeepSeek R1 (0528)", + "name": "DeepSeek R1", "family": "deepseek-thinking", "attachment": false, "reasoning": true, "tool_call": true, "temperature": true, - "release_date": "2025-08-01", - "last_updated": "2025-08-01", + "knowledge": "2025-01", + "release_date": "2025-01-20", + "last_updated": "2025-01-20", "modalities": { "input": [ "text" @@ -124505,10 +125464,10 @@ "text" ] }, - "open_weights": false, + "open_weights": true, "cost": { - "input": 3.0, - "output": 8.0 + "input": 0.55, + "output": 2.19 }, "limit": { "context": 128000, @@ -134423,18 +135382,19 @@ }, { "id": "vercel/perplexity/sonar", - "name": "Sonar Reasoning", - "family": "sonar-reasoning", - "attachment": false, - "reasoning": true, - "tool_call": false, + "name": "Sonar", + "family": "sonar", + "attachment": true, + "reasoning": false, + "tool_call": true, "temperature": true, - "knowledge": "2025-09", + "knowledge": "2025-02", "release_date": "2025-02-19", "last_updated": "2025-02-19", "modalities": { "input": [ - "text" + "text", + "image" ], "output": [ "text" @@ -134443,7 +135403,7 @@ "open_weights": false, "cost": { "input": 1.0, - "output": 5.0 + "output": 1.0 }, "limit": { "context": 127000, diff --git a/crates/goose/src/providers/canonical/data/provider_metadata.json b/crates/goose/src/providers/canonical/data/provider_metadata.json index cb0e228b..3f59643e 100644 --- a/crates/goose/src/providers/canonical/data/provider_metadata.json +++ b/crates/goose/src/providers/canonical/data/provider_metadata.json @@ -261,7 +261,7 @@ "env": [ "MINIMAX_API_KEY" ], - "model_count": 6 + "model_count": 7 }, { "id": "inception", @@ -649,7 +649,7 @@ "env": [ "MINIMAX_API_KEY" ], - "model_count": 6 + "model_count": 7 }, { "id": "evroc", @@ -838,6 +838,17 @@ ], "model_count": 4 }, + { + "id": "anyapi", + "display_name": "AnyAPI", + "npm": "@ai-sdk/openai-compatible", + "api": "https://api.anyapi.ai/v1", + "doc": "https://docs.anyapi.ai", + "env": [ + "ANYAPI_API_KEY" + ], + "model_count": 30 + }, { "id": "vultr", "display_name": "Vultr", @@ -990,7 +1001,7 @@ "env": [ "MINIMAX_API_KEY" ], - "model_count": 6 + "model_count": 7 }, { "id": "qiniu-ai", @@ -1222,7 +1233,7 @@ "env": [ "MINIMAX_API_KEY" ], - "model_count": 6 + "model_count": 7 }, { "id": "meta-llama", diff --git a/crates/goose/src/providers/canonical/name_builder.rs b/crates/goose/src/providers/canonical/name_builder.rs index e48fdb7a..28f4b2a0 100644 --- a/crates/goose/src/providers/canonical/name_builder.rs +++ b/crates/goose/src/providers/canonical/name_builder.rs @@ -12,7 +12,6 @@ static STRIP_PATTERNS: Lazy> = Lazy::new(|| { Regex::new(r"-\d{4}$").unwrap(), Regex::new(r"-\d{4}-\d{2}-\d{2}$").unwrap(), Regex::new(r"-bedrock$").unwrap(), - Regex::new(r"-reasoning$").unwrap(), ] });