diff --git a/cmd/aihubmix/main.go b/cmd/aihubmix/main.go index 417004eda1ca2376a81fb812f97e9100879c5a95..52b6006054e2c47f52337b978f99665636336714 100644 --- a/cmd/aihubmix/main.go +++ b/cmd/aihubmix/main.go @@ -37,6 +37,13 @@ type Pricing struct { CacheWrite *float64 `json:"cache_write"` } +const ( + minContextWindow = 20000 + defaultLargeModel = "gpt-5" + defaultSmallModel = "gpt-5-nano" + maxTokensFactor = 10 +) + // ModelsResponse is the response structure for the models API. type ModelsResponse struct { Data []APIModel `json:"data"` @@ -69,24 +76,12 @@ func fetchAIHubMixModels() (*ModelsResponse, error) { return &mr, nil } -func hasFeature(features, feature string) bool { - if features == "" { - return false - } - for f := range strings.SplitSeq(features, ",") { - if strings.TrimSpace(f) == feature { - return true - } - } - return false -} - -func hasModality(modalities, modality string) bool { - if modalities == "" { +func hasField(s, field string) bool { + if s == "" { return false } - for m := range strings.SplitSeq(modalities, ",") { - if strings.TrimSpace(m) == modality { + for item := range strings.SplitSeq(s, ",") { + if strings.TrimSpace(item) == field { return true } } @@ -95,7 +90,7 @@ func hasModality(modalities, modality string) bool { func parseFloat(p *float64) float64 { if p == nil { - return 0.0 + return 0 } return *p } @@ -112,32 +107,25 @@ func main() { APIKey: "$AIHUBMIX_API_KEY", APIEndpoint: "https://aihubmix.com/v1", Type: catwalk.TypeOpenAICompat, - DefaultLargeModelID: "gpt-5", - DefaultSmallModelID: "gpt-5-nano", - Models: []catwalk.Model{}, + DefaultLargeModelID: defaultLargeModel, + DefaultSmallModelID: defaultSmallModel, DefaultHeaders: map[string]string{ "APP-Code": "IUFF7106", }, } for _, model := range modelsResp.Data { - // Skip models with context window < 20000 - if model.ContextLength < 20000 { + if model.ContextLength < minContextWindow { continue } - // Check for text I/O support - if !hasModality(model.InputModalities, "text") { + if !hasField(model.InputModalities, "text") { continue } - // Check reasoning capability - canReason := hasFeature(model.Features, "thinking") - - // Check image support - supportsImages := hasModality(model.InputModalities, "image") + canReason := hasField(model.Features, "thinking") + supportsImages := hasField(model.InputModalities, "image") - // Parse reasoning levels var reasoningLevels []string var defaultReasoning string if canReason { @@ -145,13 +133,12 @@ func main() { defaultReasoning = "medium" } - // Calculate default max tokens - defaultMaxTokens := model.MaxOutput - if defaultMaxTokens == 0 || defaultMaxTokens > model.ContextLength/2 { - defaultMaxTokens = model.ContextLength / 10 + maxTokens := model.MaxOutput + if maxTokens == 0 || maxTokens > model.ContextLength/2 { + maxTokens = model.ContextLength / maxTokensFactor } - catwalkModel := catwalk.Model{ + aiHubMixProvider.Models = append(aiHubMixProvider.Models, catwalk.Model{ ID: model.ModelID, Name: model.ModelID, CostPer1MIn: parseFloat(model.Pricing.Input), @@ -159,14 +146,13 @@ func main() { CostPer1MInCached: parseFloat(model.Pricing.CacheWrite), CostPer1MOutCached: parseFloat(model.Pricing.CacheRead), ContextWindow: model.ContextLength, - DefaultMaxTokens: defaultMaxTokens, + DefaultMaxTokens: maxTokens, CanReason: canReason, ReasoningLevels: reasoningLevels, DefaultReasoningEffort: defaultReasoning, SupportsImages: supportsImages, - } + }) - aiHubMixProvider.Models = append(aiHubMixProvider.Models, catwalkModel) fmt.Printf("Added model %s with context window %d\n", model.ModelID, model.ContextLength) } diff --git a/internal/providers/configs/aihubmix.json b/internal/providers/configs/aihubmix.json index 0e176524b5d9f39e3af6012df1ec82b863c8c1e5..fcf43272516001b77b1c23c726617c22d9c1b54f 100644 --- a/internal/providers/configs/aihubmix.json +++ b/internal/providers/configs/aihubmix.json @@ -52,6 +52,19 @@ "supports_attachments": true, "options": {} }, + { + "id": "DeepSeek-OCR", + "name": "DeepSeek-OCR", + "cost_per_1m_in": 0.02, + "cost_per_1m_out": 0.02, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 8000, + "default_max_tokens": 800, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, { "id": "DeepSeek-R1", "name": "DeepSeek-R1", @@ -200,6 +213,58 @@ "supports_attachments": false, "options": {} }, + { + "id": "Qwen/Qwen2.5-VL-32B-Instruct", + "name": "Qwen/Qwen2.5-VL-32B-Instruct", + "cost_per_1m_in": 0.24, + "cost_per_1m_out": 0.24, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "Qwen/Qwen2.5-VL-72B-Instruct", + "name": "Qwen/Qwen2.5-VL-72B-Instruct", + "cost_per_1m_in": 0.5, + "cost_per_1m_out": 0.5, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "ahm-Phi-3-5-vision-instruct", + "name": "ahm-Phi-3-5-vision-instruct", + "cost_per_1m_in": 0.4, + "cost_per_1m_out": 1.6, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "aihub-Phi-4", + "name": "aihub-Phi-4", + "cost_per_1m_in": 0.12, + "cost_per_1m_out": 0.48, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 16400, + "default_max_tokens": 1640, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, { "id": "aihub-Phi-4-mini-instruct", "name": "aihub-Phi-4-mini-instruct", @@ -226,6 +291,214 @@ "supports_attachments": true, "options": {} }, + { + "id": "aihubmix-Cohere-command-r", + "name": "aihubmix-Cohere-command-r", + "cost_per_1m_in": 0.64, + "cost_per_1m_out": 1.92, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "aihubmix-command-r-08-2024", + "name": "aihubmix-command-r-08-2024", + "cost_per_1m_in": 0.2, + "cost_per_1m_out": 0.8, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "aihubmix-command-r-plus", + "name": "aihubmix-command-r-plus", + "cost_per_1m_in": 3.84, + "cost_per_1m_out": 19.2, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "aihubmix-command-r-plus-08-2024", + "name": "aihubmix-command-r-plus-08-2024", + "cost_per_1m_in": 2.8, + "cost_per_1m_out": 11.2, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "aihubmix-router", + "name": "aihubmix-router", + "cost_per_1m_in": 0.4, + "cost_per_1m_out": 1.6, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.1, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "baidu-deepseek-v3.2", + "name": "baidu-deepseek-v3.2", + "cost_per_1m_in": 0.274, + "cost_per_1m_out": 0.411, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "baidu-deepseek-v3.2-exp", + "name": "baidu-deepseek-v3.2-exp", + "cost_per_1m_in": 0.274, + "cost_per_1m_out": 0.411, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.0274, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "baidu/ERNIE-4.5-300B-A47B", + "name": "baidu/ERNIE-4.5-300B-A47B", + "cost_per_1m_in": 0.32, + "cost_per_1m_out": 1.28, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "cc-MiniMax-M2", + "name": "cc-MiniMax-M2", + "cost_per_1m_in": 0.1, + "cost_per_1m_out": 0.1, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "cc-deepseek-v3.1", + "name": "cc-deepseek-v3.1", + "cost_per_1m_in": 0.56, + "cost_per_1m_out": 1.68, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "cc-ernie-4.5-300b-a47b", + "name": "cc-ernie-4.5-300b-a47b", + "cost_per_1m_in": 0.32, + "cost_per_1m_out": 1.28, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "cc-kimi-k2-instruct", + "name": "cc-kimi-k2-instruct", + "cost_per_1m_in": 1.1, + "cost_per_1m_out": 3.3, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "cc-kimi-k2-instruct-0905", + "name": "cc-kimi-k2-instruct-0905", + "cost_per_1m_in": 1.1, + "cost_per_1m_out": 3.3, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "cc-minimax-m2", + "name": "cc-minimax-m2", + "cost_per_1m_in": 0.1, + "cost_per_1m_out": 0.1, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "cc-minimax-m2.1", + "name": "cc-minimax-m2.1", + "cost_per_1m_in": 0.1, + "cost_per_1m_out": 0.1, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "chatgpt-4o-latest", + "name": "chatgpt-4o-latest", + "cost_per_1m_in": 5, + "cost_per_1m_out": 15, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, { "id": "claude-3-5-haiku", "name": "claude-3-5-haiku", @@ -284,6 +557,58 @@ "supports_attachments": true, "options": {} }, + { + "id": "claude-3-haiku-20240229", + "name": "claude-3-haiku-20240229", + "cost_per_1m_in": 0.275, + "cost_per_1m_out": 0.275, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "claude-3-haiku-20240307", + "name": "claude-3-haiku-20240307", + "cost_per_1m_in": 0.275, + "cost_per_1m_out": 1.375, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "claude-3-haiku@20240307", + "name": "claude-3-haiku@20240307", + "cost_per_1m_in": 0.275, + "cost_per_1m_out": 1.375, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "claude-3-sonnet-20240229", + "name": "claude-3-sonnet-20240229", + "cost_per_1m_in": 3.3, + "cost_per_1m_out": 16.5, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, { "id": "claude-haiku-4-5", "name": "claude-haiku-4-5", @@ -430,6 +755,38 @@ "supports_attachments": true, "options": {} }, + { + "id": "codex-mini-latest", + "name": "codex-mini-latest", + "cost_per_1m_in": 1.5, + "cost_per_1m_out": 6, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.375, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "coding-glm-4.6", + "name": "coding-glm-4.6", + "cost_per_1m_in": 0.06, + "cost_per_1m_out": 0.22, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.010998, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, { "id": "coding-glm-4.6-free", "name": "coding-glm-4.6-free", @@ -449,6 +806,44 @@ "supports_attachments": false, "options": {} }, + { + "id": "coding-glm-4.7", + "name": "coding-glm-4.7", + "cost_per_1m_in": 0.06, + "cost_per_1m_out": 0.22, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.010998, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, + { + "id": "coding-glm-4.7-free", + "name": "coding-glm-4.7-free", + "cost_per_1m_in": 0, + "cost_per_1m_out": 0, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, { "id": "coding-minimax-m2", "name": "coding-minimax-m2", @@ -506,6 +901,84 @@ "supports_attachments": false, "options": {} }, + { + "id": "command", + "name": "command", + "cost_per_1m_in": 1, + "cost_per_1m_out": 2, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "command-a-03-2025", + "name": "command-a-03-2025", + "cost_per_1m_in": 2.5, + "cost_per_1m_out": 10, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "command-r", + "name": "command-r", + "cost_per_1m_in": 0.64, + "cost_per_1m_out": 1.92, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "command-r-08-2024", + "name": "command-r-08-2024", + "cost_per_1m_in": 0.2, + "cost_per_1m_out": 0.8, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "command-r-plus", + "name": "command-r-plus", + "cost_per_1m_in": 3.84, + "cost_per_1m_out": 19.2, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "command-r-plus-08-2024", + "name": "command-r-plus-08-2024", + "cost_per_1m_in": 2.8, + "cost_per_1m_out": 11.2, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, { "id": "deepseek-math-v2", "name": "deepseek-math-v2", @@ -525,6 +998,25 @@ "supports_attachments": false, "options": {} }, + { + "id": "deepseek-r1-distill-llama-70b", + "name": "deepseek-r1-distill-llama-70b", + "cost_per_1m_in": 0.8, + "cost_per_1m_out": 1.6, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, { "id": "deepseek-v3.2", "name": "deepseek-v3.2", @@ -667,6 +1159,32 @@ "supports_attachments": true, "options": {} }, + { + "id": "ernie-4.5-0.3b", + "name": "ernie-4.5-0.3b", + "cost_per_1m_in": 0.0136, + "cost_per_1m_out": 0.0544, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "ernie-4.5-turbo-128k-preview", + "name": "ernie-4.5-turbo-128k-preview", + "cost_per_1m_in": 0.108, + "cost_per_1m_out": 0.432, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, { "id": "ernie-4.5-turbo-latest", "name": "ernie-4.5-turbo-latest", @@ -763,6 +1281,32 @@ "supports_attachments": true, "options": {} }, + { + "id": "gemini-2.0-flash-exp", + "name": "gemini-2.0-flash-exp", + "cost_per_1m_in": 0.02, + "cost_per_1m_out": 0.08, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "gemini-2.0-flash-exp-search", + "name": "gemini-2.0-flash-exp-search", + "cost_per_1m_in": 0.1, + "cost_per_1m_out": 0.4, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, { "id": "gemini-2.0-flash-free", "name": "gemini-2.0-flash-free", @@ -776,6 +1320,77 @@ "supports_attachments": true, "options": {} }, + { + "id": "gemini-2.0-flash-lite", + "name": "gemini-2.0-flash-lite", + "cost_per_1m_in": 0.076, + "cost_per_1m_out": 0.304, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.076, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "gemini-2.0-flash-preview-image-generation", + "name": "gemini-2.0-flash-preview-image-generation", + "cost_per_1m_in": 0.1, + "cost_per_1m_out": 0.4, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "gemini-2.0-flash-search", + "name": "gemini-2.0-flash-search", + "cost_per_1m_in": 0.1, + "cost_per_1m_out": 0.4, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.025, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "gemini-2.0-flash-thinking-exp-01-21", + "name": "gemini-2.0-flash-thinking-exp-01-21", + "cost_per_1m_in": 0.076, + "cost_per_1m_out": 0.304, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": true, + "options": {} + }, + { + "id": "gemini-2.0-pro-exp-02-05", + "name": "gemini-2.0-pro-exp-02-05", + "cost_per_1m_in": 1.25, + "cost_per_1m_out": 5, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, { "id": "gemini-2.5-flash", "name": "gemini-2.5-flash", @@ -899,13 +1514,159 @@ "supports_attachments": true, "options": {} }, + { + "id": "gemini-2.5-pro-exp-03-25", + "name": "gemini-2.5-pro-exp-03-25", + "cost_per_1m_in": 1.25, + "cost_per_1m_out": 5, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.125, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "gemini-2.5-pro-preview-03-25", + "name": "gemini-2.5-pro-preview-03-25", + "cost_per_1m_in": 1.25, + "cost_per_1m_out": 10, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.125, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": true, + "options": {} + }, + { + "id": "gemini-2.5-pro-preview-03-25-search", + "name": "gemini-2.5-pro-preview-03-25-search", + "cost_per_1m_in": 1.25, + "cost_per_1m_out": 10, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.125, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": true, + "options": {} + }, { "id": "gemini-2.5-pro-preview-05-06", "name": "gemini-2.5-pro-preview-05-06", "cost_per_1m_in": 1.25, "cost_per_1m_out": 10, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.125, + "cost_per_1m_out_cached": 0.125, + "context_window": 1048576, + "default_max_tokens": 65536, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": true, + "options": {} + }, + { + "id": "gemini-2.5-pro-preview-05-06-search", + "name": "gemini-2.5-pro-preview-05-06-search", + "cost_per_1m_in": 1.25, + "cost_per_1m_out": 10, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.125, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": true, + "options": {} + }, + { + "id": "gemini-2.5-pro-preview-06-05", + "name": "gemini-2.5-pro-preview-06-05", + "cost_per_1m_in": 1.25, + "cost_per_1m_out": 10, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.125, + "context_window": 1048576, + "default_max_tokens": 65536, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": true, + "options": {} + }, + { + "id": "gemini-2.5-pro-preview-06-05-search", + "name": "gemini-2.5-pro-preview-06-05-search", + "cost_per_1m_in": 1.25, + "cost_per_1m_out": 10, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.125, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": true, + "options": {} + }, + { + "id": "gemini-2.5-pro-search", + "name": "gemini-2.5-pro-search", + "cost_per_1m_in": 1.25, + "cost_per_1m_out": 10, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.125, + "context_window": 1048576, + "default_max_tokens": 65536, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": true, + "options": {} + }, + { + "id": "gemini-3-flash-preview", + "name": "gemini-3-flash-preview", + "cost_per_1m_in": 0.5, + "cost_per_1m_out": 3, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.05, "context_window": 1048576, "default_max_tokens": 65536, "can_reason": true, @@ -919,12 +1680,12 @@ "options": {} }, { - "id": "gemini-2.5-pro-preview-06-05", - "name": "gemini-2.5-pro-preview-06-05", - "cost_per_1m_in": 1.25, - "cost_per_1m_out": 10, + "id": "gemini-3-flash-preview-free", + "name": "gemini-3-flash-preview-free", + "cost_per_1m_in": 0, + "cost_per_1m_out": 0, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.125, + "cost_per_1m_out_cached": 0, "context_window": 1048576, "default_max_tokens": 65536, "can_reason": true, @@ -938,14 +1699,14 @@ "options": {} }, { - "id": "gemini-2.5-pro-search", - "name": "gemini-2.5-pro-search", - "cost_per_1m_in": 1.25, - "cost_per_1m_out": 10, + "id": "gemini-3-flash-preview-search", + "name": "gemini-3-flash-preview-search", + "cost_per_1m_in": 0.5, + "cost_per_1m_out": 3, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.125, - "context_window": 1048576, - "default_max_tokens": 65536, + "cost_per_1m_out_cached": 0.05, + "context_window": 0, + "default_max_tokens": 0, "can_reason": true, "reasoning_levels": [ "low", @@ -957,14 +1718,14 @@ "options": {} }, { - "id": "gemini-3-flash-preview", - "name": "gemini-3-flash-preview", - "cost_per_1m_in": 0.5, - "cost_per_1m_out": 3, + "id": "gemini-3-pro-preview", + "name": "gemini-3-pro-preview", + "cost_per_1m_in": 2, + "cost_per_1m_out": 12, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.05, - "context_window": 1048576, - "default_max_tokens": 65536, + "cost_per_1m_out_cached": 0.2, + "context_window": 0, + "default_max_tokens": 0, "can_reason": true, "reasoning_levels": [ "low", @@ -976,14 +1737,14 @@ "options": {} }, { - "id": "gemini-3-flash-preview-free", - "name": "gemini-3-flash-preview-free", - "cost_per_1m_in": 0, - "cost_per_1m_out": 0, + "id": "gemini-3-pro-preview-search", + "name": "gemini-3-pro-preview-search", + "cost_per_1m_in": 2, + "cost_per_1m_out": 12, "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 1048576, - "default_max_tokens": 65536, + "cost_per_1m_out_cached": 0.2, + "context_window": 0, + "default_max_tokens": 0, "can_reason": true, "reasoning_levels": [ "low", @@ -1058,6 +1819,25 @@ "supports_attachments": false, "options": {} }, + { + "id": "glm-4.7-flash-free", + "name": "glm-4.7-flash-free", + "cost_per_1m_in": 0, + "cost_per_1m_out": 0, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, { "id": "gpt-4.1", "name": "gpt-4.1", @@ -1149,6 +1929,32 @@ "supports_attachments": true, "options": {} }, + { + "id": "gpt-4o-mini-2024-07-18", + "name": "gpt-4o-mini-2024-07-18", + "cost_per_1m_in": 0.15, + "cost_per_1m_out": 0.6, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.075, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "gpt-4o-mini-audio-preview", + "name": "gpt-4o-mini-audio-preview", + "cost_per_1m_in": 0.15, + "cost_per_1m_out": 0.6, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, { "id": "gpt-4o-mini-search-preview", "name": "gpt-4o-mini-search-preview", @@ -1175,6 +1981,19 @@ "supports_attachments": true, "options": {} }, + { + "id": "gpt-4o-zh", + "name": "gpt-4o-zh", + "cost_per_1m_in": 2.5, + "cost_per_1m_out": 10, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, { "id": "gpt-5", "name": "gpt-5", @@ -1518,6 +2337,19 @@ "supports_attachments": false, "options": {} }, + { + "id": "grok-2-vision-1212", + "name": "grok-2-vision-1212", + "cost_per_1m_in": 1.8, + "cost_per_1m_out": 9, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, { "id": "grok-4-1-fast-non-reasoning", "name": "grok-4-1-fast-non-reasoning", @@ -1575,6 +2407,96 @@ "supports_attachments": true, "options": {} }, + { + "id": "grok-vision-beta", + "name": "grok-vision-beta", + "cost_per_1m_in": 5.6, + "cost_per_1m_out": 16.8, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, + { + "id": "inclusionAI/Ling-1T", + "name": "inclusionAI/Ling-1T", + "cost_per_1m_in": 0.548, + "cost_per_1m_out": 2.192, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "inclusionAI/Ling-flash-2.0", + "name": "inclusionAI/Ling-flash-2.0", + "cost_per_1m_in": 0.136, + "cost_per_1m_out": 0.544, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "inclusionAI/Ling-mini-2.0", + "name": "inclusionAI/Ling-mini-2.0", + "cost_per_1m_in": 0.068, + "cost_per_1m_out": 0.272, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "inclusionAI/Ring-1T", + "name": "inclusionAI/Ring-1T", + "cost_per_1m_in": 0.548, + "cost_per_1m_out": 2.192, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, + { + "id": "inclusionAI/Ring-flash-2.0", + "name": "inclusionAI/Ring-flash-2.0", + "cost_per_1m_in": 0.136, + "cost_per_1m_out": 0.544, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, { "id": "jina-deepsearch-v1", "name": "jina-deepsearch-v1", @@ -1697,6 +2619,19 @@ "supports_attachments": true, "options": {} }, + { + "id": "mimo-v2-flash", + "name": "mimo-v2-flash", + "cost_per_1m_in": 0.1918, + "cost_per_1m_out": 0.5754, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.03836, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, { "id": "mimo-v2-flash-free", "name": "mimo-v2-flash-free", @@ -1723,6 +2658,82 @@ "supports_attachments": true, "options": {} }, + { + "id": "o1", + "name": "o1", + "cost_per_1m_in": 15, + "cost_per_1m_out": 60, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 7.5, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, + { + "id": "o1-2024-12-17", + "name": "o1-2024-12-17", + "cost_per_1m_in": 15, + "cost_per_1m_out": 60, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 7.5, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": true, + "options": {} + }, + { + "id": "o1-preview", + "name": "o1-preview", + "cost_per_1m_in": 15, + "cost_per_1m_out": 60, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 7.5, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": true, + "options": {} + }, + { + "id": "o1-pro", + "name": "o1-pro", + "cost_per_1m_in": 170, + "cost_per_1m_out": 680, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 170, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": true, + "reasoning_levels": [ + "low", + "medium", + "high" + ], + "default_reasoning_effort": "medium", + "supports_attachments": false, + "options": {} + }, { "id": "o3", "name": "o3", @@ -1799,6 +2810,71 @@ "supports_attachments": true, "options": {} }, + { + "id": "qwen-mt-plus", + "name": "qwen-mt-plus", + "cost_per_1m_in": 0.492, + "cost_per_1m_out": 1.476, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 16000, + "default_max_tokens": 8000, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "qwen-mt-turbo", + "name": "qwen-mt-turbo", + "cost_per_1m_in": 0.192, + "cost_per_1m_out": 0.534912, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 16000, + "default_max_tokens": 8000, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "qwen-turbo", + "name": "qwen-turbo", + "cost_per_1m_in": 0.36, + "cost_per_1m_out": 1.08, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "qwen-turbo-2024-11-01", + "name": "qwen-turbo-2024-11-01", + "cost_per_1m_in": 0.36, + "cost_per_1m_out": 1.08, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": false, + "options": {} + }, + { + "id": "qwen2.5-vl-72b-instruct", + "name": "qwen2.5-vl-72b-instruct", + "cost_per_1m_in": 2.4, + "cost_per_1m_out": 7.2, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, { "id": "qwen3-235b-a22b", "name": "qwen3-235b-a22b", @@ -1922,6 +2998,19 @@ "supports_attachments": true, "options": {} }, + { + "id": "qwen3-max-preview", + "name": "qwen3-max-preview", + "cost_per_1m_in": 0.822, + "cost_per_1m_out": 3.288, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0.822, + "context_window": 0, + "default_max_tokens": 0, + "can_reason": false, + "supports_attachments": true, + "options": {} + }, { "id": "qwen3-next-80b-a3b-instruct", "name": "qwen3-next-80b-a3b-instruct",