diff --git a/internal/deprecated/README.md b/internal/deprecated/README.md deleted file mode 100644 index 6dad8f6aa64053d6cedf2b50595afe2de3d76c98..0000000000000000000000000000000000000000 --- a/internal/deprecated/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Deprecated - -This version of the config is deprecated, if you want to add a provider or update a provider do that in /internal/providers. diff --git a/internal/deprecated/configs/aihubmix.json b/internal/deprecated/configs/aihubmix.json deleted file mode 100644 index b919df30d36de0f8a687c213486bffbf1c385947..0000000000000000000000000000000000000000 --- a/internal/deprecated/configs/aihubmix.json +++ /dev/null @@ -1,153 +0,0 @@ -{ - "name": "AIHubMix", - "id": "aihubmix", - "api_key": "$AIHUBMIX_API_KEY", - "api_endpoint": "https://aihubmix.com/v1", - "type": "openai", - "default_large_model_id": "claude-sonnet-4-5", - "default_small_model_id": "claude-3-5-haiku", - "default_headers": { - "APP-Code": "IUFF7106" - }, - "models": [ - { - "id": "claude-sonnet-4-5", - "name": "Claude Sonnet 4.5", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 3.75, - "cost_per_1m_out_cached": 0.3, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "supports_attachments": true - }, - { - "id": "claude-opus-4-1", - "name": "Claude Opus 4.1", - "cost_per_1m_in": 15, - "cost_per_1m_out": 75, - "cost_per_1m_in_cached": 18.75, - "cost_per_1m_out_cached": 1.5, - "context_window": 200000, - "default_max_tokens": 32000, - "can_reason": true, - "supports_attachments": true - }, - { - "id": "claude-3-5-haiku", - "name": "Claude 3.5 Haiku", - "cost_per_1m_in": 0.7999999999999999, - "cost_per_1m_out": 4, - "cost_per_1m_in_cached": 1, - "cost_per_1m_out_cached": 0.08, - "context_window": 200000, - "default_max_tokens": 5000, - "can_reason": false, - "supports_attachments": true - }, - { - "id": "gemini-2.5-pro", - "name": "Gemini 2.5 Pro", - "cost_per_1m_in": 1.25, - "cost_per_1m_out": 10, - "cost_per_1m_in_cached": 1.625, - "cost_per_1m_out_cached": 0.31, - "context_window": 1048576, - "default_max_tokens": 50000, - "can_reason": true, - "supports_attachments": true - }, - { - "id": "gemini-2.5-flash", - "name": "Gemini 2.5 Flash", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 2.5, - "cost_per_1m_in_cached": 0.3833, - "cost_per_1m_out_cached": 0.075, - "context_window": 1048576, - "default_max_tokens": 50000, - "can_reason": true, - "supports_attachments": true - }, - { - "id": "gpt-5", - "name": "GPT-5", - "cost_per_1m_in": 1.25, - "cost_per_1m_out": 10, - "cost_per_1m_in_cached": 0.25, - "cost_per_1m_out_cached": 0.25, - "context_window": 400000, - "default_max_tokens": 128000, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "minimal", - "supports_attachments": true - }, - { - "id": "gpt-5-mini", - "name": "GPT-5 Mini", - "cost_per_1m_in": 0.25, - "cost_per_1m_out": 2, - "cost_per_1m_in_cached": 0.025, - "cost_per_1m_out_cached": 0.025, - "context_window": 400000, - "default_max_tokens": 128000, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "low", - "supports_attachments": true - }, - { - "id": "gpt-5-nano", - "name": "GPT-5 Nano", - "cost_per_1m_in": 0.05, - "cost_per_1m_out": 0.4, - "cost_per_1m_in_cached": 0.005, - "cost_per_1m_out_cached": 0.005, - "context_window": 400000, - "default_max_tokens": 128000, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "low", - "supports_attachments": true - }, - { - "id": "Kimi-K2-0905", - "name": "Kimi K2 0905", - "cost_per_1m_in": 0.55, - "cost_per_1m_out": 2.19, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 256000, - "default_max_tokens": 10000, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "medium" - }, - { - "id": "glm-4.6", - "name": "GLM-4.6", - "cost_per_1m_in": 0.6, - "cost_per_1m_out": 2.2, - "cost_per_1m_in_cached": 0.11, - "cost_per_1m_out_cached": 0, - "context_window": 204800, - "default_max_tokens": 131072, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "medium", - "supports_attachments": false - }, - { - "id": "qwen3-coder-480b-a35b-instruct", - "name": "Qwen 3 480B Coder", - "cost_per_1m_in": 0.82, - "cost_per_1m_out": 3.29, - "context_window": 131072, - "default_max_tokens": 65536, - "can_reason": false, - "supports_attachments": false - } - ] -} diff --git a/internal/deprecated/configs/anthropic.json b/internal/deprecated/configs/anthropic.json deleted file mode 100644 index 8140ad01fc6d1715b9e1cec0b9b7e3f281cb254a..0000000000000000000000000000000000000000 --- a/internal/deprecated/configs/anthropic.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "name": "Anthropic", - "id": "anthropic", - "type": "anthropic", - "api_key": "$ANTHROPIC_API_KEY", - "api_endpoint": "$ANTHROPIC_API_ENDPOINT", - "default_large_model_id": "claude-sonnet-4-5-20250929", - "default_small_model_id": "claude-3-5-haiku-20241022", - "models": [ - { - "id": "claude-sonnet-4-5-20250929", - "name": "Claude Sonnet 4.5", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 3.75, - "cost_per_1m_out_cached": 0.3, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "supports_attachments": true - }, - { - "id": "claude-opus-4-1-20250805", - "name": "Claude Opus 4.1", - "cost_per_1m_in": 15, - "cost_per_1m_out": 75, - "cost_per_1m_in_cached": 18.75, - "cost_per_1m_out_cached": 1.5, - "context_window": 200000, - "default_max_tokens": 32000, - "can_reason": true, - "supports_attachments": true - }, - { - "id": "claude-opus-4-20250514", - "name": "Claude Opus 4", - "cost_per_1m_in": 15, - "cost_per_1m_out": 75, - "cost_per_1m_in_cached": 18.75, - "cost_per_1m_out_cached": 1.5, - "context_window": 200000, - "default_max_tokens": 32000, - "can_reason": true, - "supports_attachments": true - }, - { - "id": "claude-sonnet-4-20250514", - "name": "Claude Sonnet 4", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 3.75, - "cost_per_1m_out_cached": 0.3, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "supports_attachments": true - }, - { - "id": "claude-3-7-sonnet-20250219", - "name": "Claude 3.7 Sonnet", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 3.75, - "cost_per_1m_out_cached": 0.3, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "supports_attachments": true - }, - { - "id": "claude-3-5-haiku-20241022", - "name": "Claude 3.5 Haiku", - "cost_per_1m_in": 0.7999999999999999, - "cost_per_1m_out": 4, - "cost_per_1m_in_cached": 1, - "cost_per_1m_out_cached": 0.08, - "context_window": 200000, - "default_max_tokens": 5000, - "can_reason": false, - "supports_attachments": true - }, - { - "id": "claude-3-5-sonnet-20240620", - "name": "Claude 3.5 Sonnet (Old)", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 3.75, - "cost_per_1m_out_cached": 0.3, - "context_window": 200000, - "default_max_tokens": 5000, - "can_reason": false, - "supports_attachments": true - }, - { - "id": "claude-3-5-sonnet-20241022", - "name": "Claude 3.5 Sonnet (New)", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 3.75, - "cost_per_1m_out_cached": 0.3, - "context_window": 200000, - "default_max_tokens": 5000, - "can_reason": false, - "supports_attachments": true - } - ] -} diff --git a/internal/deprecated/configs/azure.json b/internal/deprecated/configs/azure.json deleted file mode 100644 index e046b1509916fb2f80ef1487703ea51084a6eacd..0000000000000000000000000000000000000000 --- a/internal/deprecated/configs/azure.json +++ /dev/null @@ -1,196 +0,0 @@ -{ - "name": "Azure OpenAI", - "id": "azure", - "type": "azure", - "api_key": "$AZURE_OPENAI_API_KEY", - "api_endpoint": "$AZURE_OPENAI_API_ENDPOINT", - "default_large_model_id": "gpt-5", - "default_small_model_id": "gpt-5-mini", - "models": [ - { - "id": "gpt-5", - "name": "GPT-5", - "cost_per_1m_in": 1.25, - "cost_per_1m_out": 10, - "cost_per_1m_in_cached": 0.25, - "cost_per_1m_out_cached": 0.25, - "context_window": 400000, - "default_max_tokens": 128000, - "can_reason": true, - "has_reasoning_efforts": false, - "default_reasoning_effort": "minimal", - "supports_attachments": true - }, - { - "id": "gpt-5-mini", - "name": "GPT-5 Mini", - "cost_per_1m_in": 0.25, - "cost_per_1m_out": 2, - "cost_per_1m_in_cached": 0.025, - "cost_per_1m_out_cached": 0.025, - "context_window": 400000, - "default_max_tokens": 128000, - "can_reason": true, - "has_reasoning_efforts": false, - "default_reasoning_effort": "low", - "supports_attachments": true - }, - { - "id": "gpt-5-nano", - "name": "GPT-5 Nano", - "cost_per_1m_in": 0.05, - "cost_per_1m_out": 0.4, - "cost_per_1m_in_cached": 0.005, - "cost_per_1m_out_cached": 0.005, - "context_window": 400000, - "default_max_tokens": 128000, - "can_reason": true, - "has_reasoning_efforts": false, - "default_reasoning_effort": "low", - "supports_attachments": true - }, - { - "id": "codex-mini-latest", - "name": "Codex Mini", - "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": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "medium", - "supports_attachments": true - }, - { - "id": "o4-mini", - "name": "o4 Mini", - "cost_per_1m_in": 1.1, - "cost_per_1m_out": 4.4, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.275, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "medium", - "supports_attachments": true - }, - { - "id": "o3", - "name": "o3", - "cost_per_1m_in": 2, - "cost_per_1m_out": 8, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.5, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "medium", - "supports_attachments": true - }, - { - "id": "o3-pro", - "name": "o3 Pro", - "cost_per_1m_in": 20, - "cost_per_1m_out": 80, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "medium", - "supports_attachments": true - }, - { - "id": "gpt-4.1", - "name": "GPT-4.1", - "cost_per_1m_in": 2, - "cost_per_1m_out": 8, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.5, - "context_window": 1047576, - "default_max_tokens": 50000, - "can_reason": false, - "supports_attachments": true - }, - { - "id": "gpt-4.1-mini", - "name": "GPT-4.1 Mini", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 1.5999999999999999, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.09999999999999999, - "context_window": 1047576, - "default_max_tokens": 50000, - "can_reason": false, - "supports_attachments": true - }, - { - "id": "gpt-4.1-nano", - "name": "GPT-4.1 Nano", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.024999999999999998, - "context_window": 1047576, - "default_max_tokens": 50000, - "can_reason": false, - "supports_attachments": true - }, - { - "id": "gpt-4.5-preview", - "name": "GPT-4.5 (Preview)", - "cost_per_1m_in": 75, - "cost_per_1m_out": 150, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 37.5, - "context_window": 128000, - "default_max_tokens": 50000, - "can_reason": false, - "supports_attachments": true - }, - { - "id": "o3-mini", - "name": "o3 Mini", - "cost_per_1m_in": 1.1, - "cost_per_1m_out": 4.4, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.55, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "medium", - "supports_attachments": false - }, - { - "id": "gpt-4o", - "name": "GPT-4o", - "cost_per_1m_in": 2.5, - "cost_per_1m_out": 10, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 1.25, - "context_window": 128000, - "default_max_tokens": 20000, - "can_reason": false, - "supports_attachments": true - }, - { - "id": "gpt-4o-mini", - "name": "GPT-4o-mini", - "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": 128000, - "default_max_tokens": 20000, - "can_reason": false, - "reasoning_effort": "", - "supports_attachments": true - } - ] -} \ No newline at end of file diff --git a/internal/deprecated/configs/bedrock.json b/internal/deprecated/configs/bedrock.json deleted file mode 100644 index 67f55e89ae159da652fdecc2076082309b896bc1..0000000000000000000000000000000000000000 --- a/internal/deprecated/configs/bedrock.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "name": "AWS Bedrock", - "id": "bedrock", - "type": "bedrock", - "api_key": "", - "api_endpoint": "", - "default_large_model_id": "anthropic.claude-sonnet-4-5-20250929-v1:0", - "default_small_model_id": "anthropic.claude-3-5-haiku-20241022-v1:0", - "models": [ - { - "id": "anthropic.claude-sonnet-4-5-20250929-v1:0", - "name": "AWS Claude Sonnet 4.5", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 3.75, - "cost_per_1m_out_cached": 0.3, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "supports_attachments": true - }, - { - "id": "anthropic.claude-opus-4-1-20250805-v1:0", - "name": "AWS Claude Opus 4.1", - "cost_per_1m_in": 15, - "cost_per_1m_out": 75, - "cost_per_1m_in_cached": 18.75, - "cost_per_1m_out_cached": 1.5, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "supports_attachments": true - }, - { - "id": "anthropic.claude-opus-4-20250514-v1:0", - "name": "AWS Claude Opus 4", - "cost_per_1m_in": 15, - "cost_per_1m_out": 75, - "cost_per_1m_in_cached": 18.75, - "cost_per_1m_out_cached": 1.5, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "supports_attachments": true - }, - { - "id": "anthropic.claude-sonnet-4-20250514-v1:0", - "name": "AWS Claude Sonnet 4", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 3.75, - "cost_per_1m_out_cached": 0.3, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "supports_attachments": true - }, - { - "id": "anthropic.claude-3-7-sonnet-20250219-v1:0", - "name": "AWS Claude 3.7 Sonnet", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 3.75, - "cost_per_1m_out_cached": 0.3, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "supports_attachments": true - }, - { - "id": "anthropic.claude-3-5-haiku-20241022-v1:0", - "name": "AWS Claude 3.5 Haiku", - "cost_per_1m_in": 0.7999999999999999, - "cost_per_1m_out": 4, - "cost_per_1m_in_cached": 1, - "cost_per_1m_out_cached": 0.08, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": false, - "supports_attachments": true - } - ] -} diff --git a/internal/deprecated/configs/cerebras.json b/internal/deprecated/configs/cerebras.json deleted file mode 100644 index a35726957261059d00152176108b79fb52083e78..0000000000000000000000000000000000000000 --- a/internal/deprecated/configs/cerebras.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "Cerebras", - "id": "cerebras", - "type": "openai", - "api_key": "$CEREBRAS_API_KEY", - "api_endpoint": "https://api.cerebras.ai/v1", - "default_large_model_id": "zai-glm-4.6", - "default_small_model_id": "qwen-3-32b", - "models": [ - { - "id": "llama-3.3-70b", - "name": "Llama 3.3 70B", - "cost_per_1m_in": 0.85, - "cost_per_1m_out": 1.2, - "context_window": 131072, - "default_max_tokens": 25000, - "can_reason": false, - "supports_attachments": false - }, - { - "id": "gpt-oss-120b", - "name": "OpenAI GPT OSS", - "cost_per_1m_in": 0.35, - "cost_per_1m_out": 0.75, - "context_window": 131072, - "default_max_tokens": 25000, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_efforts": "medium", - "supports_attachments": false - }, - { - "id": "qwen-3-32b", - "name": "Qwen 3 32B", - "cost_per_1m_in": 0.4, - "cost_per_1m_out": 0.8, - "context_window": 131072, - "default_max_tokens": 25000, - "can_reason": false, - "supports_attachments": false - }, - { - "id": "qwen-3-235b-a22b-instruct-2507", - "name": "Qwen 3 235B Instruct", - "cost_per_1m_in": 0.6, - "cost_per_1m_out": 1.2, - "context_window": 131072, - "default_max_tokens": 25000, - "can_reason": false, - "supports_attachments": false - }, - { - "id": "zai-glm-4.6", - "name": "Z.ai GLM 4.6", - "cost_per_1m_in": 2.25, - "cost_per_1m_out": 2.75, - "context_window": 131072, - "default_max_tokens": 25000, - "can_reason": false, - "supports_attachments": false - } - ] -} diff --git a/internal/deprecated/configs/chutes.json b/internal/deprecated/configs/chutes.json deleted file mode 100644 index e5c146dd981551c238f23b8ae30872856f5f3a76..0000000000000000000000000000000000000000 --- a/internal/deprecated/configs/chutes.json +++ /dev/null @@ -1,242 +0,0 @@ -{ - "name": "Chutes", - "id": "chutes", - "type": "openai", - "api_key": "$CHUTES_API_KEY", - "api_endpoint": "https://llm.chutes.ai/v1", - "default_large_model_id": "Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8", - "default_small_model_id": "Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8", - "models": [ - { - "id": "Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8", - "name": "Qwen3 Coder 480B A35B Instruct (FP8)", - "cost_per_1m_in": 0.2, - "cost_per_1m_out": 0.8, - "context_window": 262000, - "default_max_tokens": 32768, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_efforts": "medium", - "supports_attachments": true - }, - { - "id": "zai-org/GLM-4.5-FP8", - "name": "GLM 4.5 FP8", - "cost_per_1m_in": 0.0, - "cost_per_1m_out": 0.0, - "context_window": 98000, - "default_max_tokens": 32768, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_efforts": "medium", - "supports_attachments": true - }, - { - "id": "moonshotai/Kimi-K2-Instruct-75k", - "name": "Kimi K2 Instruct", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 0.59, - "context_window": 75000, - "default_max_tokens": 32768, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_efforts": "medium", - "supports_attachments": true - }, - { - "id": "deepseek-ai/DeepSeek-R1-0528", - "name": "DeepSeek R1 0528", - "cost_per_1m_in": 0.18, - "cost_per_1m_out": 0.72, - "context_window": 75000, - "default_max_tokens": 32768, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_efforts": "medium", - "supports_attachments": true - }, - { - "id": "deepseek-ai/DeepSeek-R1-0528-Qwen3-8B", - "name": "DeepSeek R1 0528 Qwen3 8B", - "cost_per_1m_in": 0.02, - "cost_per_1m_out": 0.07, - "context_window": 32768, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "deepseek-ai/DeepSeek-R1-Distill-Llama-70B", - "name": "DeepSeek R1 Distill Llama 70B", - "cost_per_1m_in": 0.03, - "cost_per_1m_out": 0.14, - "context_window": 65536, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "tngtech/DeepSeek-R1T-Chimera", - "name": "DeepSeek R1T Chimera", - "cost_per_1m_in": 0.18, - "cost_per_1m_out": 0.72, - "context_window": 131072, - "default_max_tokens": 32768, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_efforts": "medium", - "supports_attachments": true - }, - { - "id": "tngtech/DeepSeek-TNG-R1T2-Chimera", - "name": "DeepSeek TNG R1T2 Chimera", - "cost_per_1m_in": 0.20, - "cost_per_1m_out": 0.80, - "context_window": 262144, - "default_max_tokens": 65536, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_efforts": "high", - "supports_attachments": true - }, - { - "id": "deepseek-ai/DeepSeek-V3-0324", - "name": "DeepSeek V3 0324", - "cost_per_1m_in": 0.18, - "cost_per_1m_out": 0.72, - "context_window": 75000, - "default_max_tokens": 32768, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_efforts": "medium", - "supports_attachments": true - }, - { - "id": "chutesai/Devstral-Small-2505", - "name": "Devstral Small 2505", - "cost_per_1m_in": 0.02, - "cost_per_1m_out": 0.08, - "context_window": 32768, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "zai-org/GLM-4.5-Air", - "name": "GLM 4.5 Air", - "cost_per_1m_in": 0.0, - "cost_per_1m_out": 0.0, - "context_window": 131072, - "default_max_tokens": 32768, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_efforts": "medium", - "supports_attachments": true - }, - { - "id": "openai/gpt-oss-120b", - "name": "GPT OSS 120B", - "cost_per_1m_in": 0.10, - "cost_per_1m_out": 0.41, - "context_window": 131072, - "default_max_tokens": 32768, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_efforts": "medium", - "supports_attachments": true - }, - { - "id": "chutesai/Mistral-Small-3.2-24B-Instruct-2506", - "name": "Mistral Small 3.2 24B Instruct 2506", - "cost_per_1m_in": 0.02, - "cost_per_1m_out": 0.08, - "context_window": 32768, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "Qwen/Qwen3-235B-A22B-Instruct-2507", - "name": "Qwen3 235B A22B Instruct 2507", - "cost_per_1m_in": 0.08, - "cost_per_1m_out": 0.31, - "context_window": 32768, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "Qwen/Qwen3-30B-A3B", - "name": "Qwen3 30B A3B", - "cost_per_1m_in": 0.02, - "cost_per_1m_out": 0.08, - "context_window": 32768, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "Qwen/Qwen3-235B-A22B-Thinking-2507", - "name": "Qwen3 235B A22B Thinking 2507", - "cost_per_1m_in": 0.08, - "cost_per_1m_out": 0.31, - "context_window": 32768, - "default_max_tokens": 8192, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_efforts": "high", - "supports_attachments": true - }, - { - "id": "deepseek-ai/DeepSeek-V3.1", - "name": "DeepSeek V3.1", - "cost_per_1m_in": 0.20, - "cost_per_1m_out": 0.80, - "context_window": 163840, - "default_max_tokens": 32768, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "deepseek-ai/DeepSeek-V3.1:THINKING", - "name": "DeepSeek V3.1 Reasoning", - "cost_per_1m_in": 0.20, - "cost_per_1m_out": 0.80, - "context_window": 163840, - "default_max_tokens": 32768, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_efforts": "medium", - "supports_attachments": true - }, - { - "id": "Qwen/Qwen3-30B-A3B-Instruct-2507", - "name": "Qwen3 30B A3B Instruct 2507", - "cost_per_1m_in": 0.05, - "cost_per_1m_out": 0.20, - "context_window": 262144, - "default_max_tokens": 32768, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "Qwen/Qwen3-Coder-30B-A3B-Instruct", - "name": "Qwen3 Coder 30B A3B Instruct", - "cost_per_1m_in": 0.00, - "cost_per_1m_out": 0.00, - "context_window": 262144, - "default_max_tokens": 32768, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - } - ] -} \ No newline at end of file diff --git a/internal/deprecated/configs/deepseek.json b/internal/deprecated/configs/deepseek.json deleted file mode 100644 index 0d732e981bcd9ef0c5f902b78081028dc50e38f1..0000000000000000000000000000000000000000 --- a/internal/deprecated/configs/deepseek.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "DeepSeek", - "id": "deepseek", - "type": "openai", - "api_key": "$DEEPSEEK_API_KEY", - "api_endpoint": "https://api.deepseek.com/v1", - "default_large_model_id": "deepseek-reasoner", - "default_small_model_id": "deepseek-chat", - "models": [ - { - "id": "deepseek-chat", - "name": "DeepSeek-V3.1 (Non-thinking Mode)", - "cost_per_1m_in": 0.56, - "cost_per_1m_out": 1.68, - "cost_per_1m_in_cached": 0.07, - "cost_per_1m_out_cached": 1.68, - "context_window": 128000, - "default_max_tokens": 4000, - "can_reason": false, - "supports_attachments": false - }, - { - "id": "deepseek-reasoner", - "name": "DeepSeek-V3.1 (Thinking Mode)", - "cost_per_1m_in": 0.56, - "cost_per_1m_out": 1.68, - "cost_per_1m_in_cached": 0.07, - "cost_per_1m_out_cached": 1.68, - "context_window": 128000, - "default_max_tokens": 32000, - "can_reason": true, - "supports_attachments": false - } - ] -} - diff --git a/internal/deprecated/configs/gemini.json b/internal/deprecated/configs/gemini.json deleted file mode 100644 index a2301fcd8a25205ba84a46890d7cad782c91d0d3..0000000000000000000000000000000000000000 --- a/internal/deprecated/configs/gemini.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "Google Gemini", - "id": "gemini", - "type": "gemini", - "api_key": "$GEMINI_API_KEY", - "api_endpoint": "$GEMINI_API_ENDPOINT", - "default_large_model_id": "gemini-2.5-pro", - "default_small_model_id": "gemini-2.5-flash", - "models": [ - { - "id": "gemini-2.5-pro", - "name": "Gemini 2.5 Pro", - "cost_per_1m_in": 1.25, - "cost_per_1m_out": 10, - "cost_per_1m_in_cached": 1.625, - "cost_per_1m_out_cached": 0.31, - "context_window": 1048576, - "default_max_tokens": 50000, - "can_reason": true, - "supports_attachments": true - }, - { - "id": "gemini-2.5-flash", - "name": "Gemini 2.5 Flash", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 2.5, - "cost_per_1m_in_cached": 0.3833, - "cost_per_1m_out_cached": 0.075, - "context_window": 1048576, - "default_max_tokens": 50000, - "can_reason": true, - "supports_attachments": true - } - ] -} diff --git a/internal/deprecated/configs/groq.json b/internal/deprecated/configs/groq.json deleted file mode 100644 index 63294d38c7c9988eac99be3a29e8cdd8138fc81a..0000000000000000000000000000000000000000 --- a/internal/deprecated/configs/groq.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "Groq", - "id": "groq", - "api_key": "$GROQ_API_KEY", - "api_endpoint": "https://api.groq.com/openai/v1", - "type": "openai", - "default_large_model_id": "moonshotai/kimi-k2-instruct-0905", - "default_small_model_id": "qwen/qwen3-32b", - "models": [ - { - "id": "moonshotai/kimi-k2-instruct-0905", - "name": "Kimi K2 0905", - "cost_per_1m_in": 1, - "cost_per_1m_out": 3, - "cost_per_1m_in_cached": 0.5, - "cost_per_1m_out_cached": 0.5, - "context_window": 131072, - "default_max_tokens": 10000 - }, - { - "id": "qwen/qwen3-32b", - "name": "Qwen3 32B", - "cost_per_1m_in": 0.29, - "cost_per_1m_out": 0.59, - "context_window": 131072, - "default_max_tokens": 10000 - } - ] -} diff --git a/internal/deprecated/configs/huggingface.json b/internal/deprecated/configs/huggingface.json deleted file mode 100644 index b65c5bce228c6cf89d5923ca2787de4c52d97cde..0000000000000000000000000000000000000000 --- a/internal/deprecated/configs/huggingface.json +++ /dev/null @@ -1,314 +0,0 @@ -{ - "name": "Hugging Face", - "id": "huggingface", - "api_key": "$HF_TOKEN", - "api_endpoint": "https://router.huggingface.co/v1", - "type": "openai", - "default_large_model_id": "moonshotai/Kimi-K2-Instruct-0905:groq", - "default_small_model_id": "openai/gpt-oss-20b", - "models": [ - { - "id": "Qwen/Qwen3-235B-A22B:fireworks-ai", - "name": "Qwen/Qwen3-235B-A22B (fireworks-ai)", - "cost_per_1m_in": 0.22, - "cost_per_1m_out": 0.88, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "Qwen/Qwen3-235B-A22B-Instruct-2507:fireworks-ai", - "name": "Qwen/Qwen3-235B-A22B-Instruct-2507 (fireworks-ai)", - "cost_per_1m_in": 0.22, - "cost_per_1m_out": 0.88, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "Qwen/Qwen3-235B-A22B-Thinking-2507:fireworks-ai", - "name": "Qwen/Qwen3-235B-A22B-Thinking-2507 (fireworks-ai)", - "cost_per_1m_in": 0.22, - "cost_per_1m_out": 0.88, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "Qwen/Qwen3-30B-A3B:fireworks-ai", - "name": "Qwen/Qwen3-30B-A3B (fireworks-ai)", - "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": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "Qwen/Qwen3-Coder-480B-A35B-Instruct:cerebras", - "name": "Qwen/Qwen3-Coder-480B-A35B-Instruct (cerebras)", - "cost_per_1m_in": 2, - "cost_per_1m_out": 2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "Qwen/Qwen3-Coder-480B-A35B-Instruct:fireworks-ai", - "name": "Qwen/Qwen3-Coder-480B-A35B-Instruct (fireworks-ai)", - "cost_per_1m_in": 0.45, - "cost_per_1m_out": 1.8, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "deepseek-ai/DeepSeek-V3-0324:fireworks-ai", - "name": "deepseek-ai/DeepSeek-V3-0324 (fireworks-ai)", - "cost_per_1m_in": 0.9, - "cost_per_1m_out": 0.9, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 163840, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "deepseek-ai/DeepSeek-V3.1:fireworks-ai", - "name": "deepseek-ai/DeepSeek-V3.1 (fireworks-ai)", - "cost_per_1m_in": 0, - "cost_per_1m_out": 0, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 163840, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "meta-llama/Llama-3.1-70B-Instruct:fireworks-ai", - "name": "meta-llama/Llama-3.1-70B-Instruct (fireworks-ai)", - "cost_per_1m_in": 0.9, - "cost_per_1m_out": 0.9, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "meta-llama/Llama-3.3-70B-Instruct:cerebras", - "name": "meta-llama/Llama-3.3-70B-Instruct (cerebras)", - "cost_per_1m_in": 0.85, - "cost_per_1m_out": 1.2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "meta-llama/Llama-3.3-70B-Instruct:groq", - "name": "meta-llama/Llama-3.3-70B-Instruct (groq)", - "cost_per_1m_in": 0.59, - "cost_per_1m_out": 0.79, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "meta-llama/Llama-4-Maverick-17B-128E-Instruct:fireworks-ai", - "name": "meta-llama/Llama-4-Maverick-17B-128E-Instruct (fireworks-ai)", - "cost_per_1m_in": 0.22, - "cost_per_1m_out": 0.88, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 1048576, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "meta-llama/Llama-4-Maverick-17B-128E-Instruct:groq", - "name": "meta-llama/Llama-4-Maverick-17B-128E-Instruct (groq)", - "cost_per_1m_in": 0.2, - "cost_per_1m_out": 0.6, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "meta-llama/Llama-4-Scout-17B-16E-Instruct:groq", - "name": "meta-llama/Llama-4-Scout-17B-16E-Instruct (groq)", - "cost_per_1m_in": 0.11, - "cost_per_1m_out": 0.34, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "moonshotai/Kimi-K2-Instruct:fireworks-ai", - "name": "moonshotai/Kimi-K2-Instruct (fireworks-ai)", - "cost_per_1m_in": 0.6, - "cost_per_1m_out": 2.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "moonshotai/Kimi-K2-Instruct-0905:groq", - "name": "moonshotai/Kimi-K2-Instruct-0905 (groq)", - "cost_per_1m_in": 0, - "cost_per_1m_out": 0, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "openai/gpt-oss-120b:cerebras", - "name": "openai/gpt-oss-120b (cerebras)", - "cost_per_1m_in": 0.25, - "cost_per_1m_out": 0.69, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "openai/gpt-oss-120b:fireworks-ai", - "name": "openai/gpt-oss-120b (fireworks-ai)", - "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": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "openai/gpt-oss-120b:groq", - "name": "openai/gpt-oss-120b (groq)", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 0.75, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "openai/gpt-oss-20b:fireworks-ai", - "name": "openai/gpt-oss-20b (fireworks-ai)", - "cost_per_1m_in": 0.05, - "cost_per_1m_out": 0.2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "openai/gpt-oss-20b:groq", - "name": "openai/gpt-oss-20b (groq)", - "cost_per_1m_in": 0.1, - "cost_per_1m_out": 0.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "zai-org/GLM-4.5:fireworks-ai", - "name": "zai-org/GLM-4.5 (fireworks-ai)", - "cost_per_1m_in": 0.55, - "cost_per_1m_out": 2.19, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "zai-org/GLM-4.5-Air:fireworks-ai", - "name": "zai-org/GLM-4.5-Air (fireworks-ai)", - "cost_per_1m_in": 0.22, - "cost_per_1m_out": 0.88, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - } - ], - "default_headers": { - "HTTP-Referer": "https://charm.land", - "X-Title": "Crush" - } -} diff --git a/internal/deprecated/configs/openai.json b/internal/deprecated/configs/openai.json deleted file mode 100644 index d5e44344aaad7a2f5194cee10afa63ea04a87756..0000000000000000000000000000000000000000 --- a/internal/deprecated/configs/openai.json +++ /dev/null @@ -1,156 +0,0 @@ -{ - "name": "OpenAI", - "id": "openai", - "type": "openai", - "api_key": "$OPENAI_API_KEY", - "api_endpoint": "$OPENAI_API_ENDPOINT", - "default_large_model_id": "gpt-5", - "default_small_model_id": "gpt-4o", - "models": [ - { - "id": "gpt-5", - "name": "GPT-5", - "cost_per_1m_in": 1.25, - "cost_per_1m_out": 10, - "cost_per_1m_in_cached": 0.25, - "cost_per_1m_out_cached": 0.25, - "context_window": 400000, - "default_max_tokens": 128000, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "minimal", - "supports_attachments": true - }, - { - "id": "gpt-5-mini", - "name": "GPT-5 Mini", - "cost_per_1m_in": 0.25, - "cost_per_1m_out": 2, - "cost_per_1m_in_cached": 0.025, - "cost_per_1m_out_cached": 0.025, - "context_window": 400000, - "default_max_tokens": 128000, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "low", - "supports_attachments": true - }, - { - "id": "gpt-5-nano", - "name": "GPT-5 Nano", - "cost_per_1m_in": 0.05, - "cost_per_1m_out": 0.4, - "cost_per_1m_in_cached": 0.005, - "cost_per_1m_out_cached": 0.005, - "context_window": 400000, - "default_max_tokens": 128000, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "low", - "supports_attachments": true - }, - { - "id": "o4-mini", - "name": "o4 Mini", - "cost_per_1m_in": 1.1, - "cost_per_1m_out": 4.4, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.275, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "low", - "supports_attachments": true - }, - { - "id": "o3", - "name": "o3", - "cost_per_1m_in": 2, - "cost_per_1m_out": 8, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.5, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "medium", - "supports_attachments": true - }, - { - "id": "gpt-4.1", - "name": "GPT-4.1", - "cost_per_1m_in": 2, - "cost_per_1m_out": 8, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.5, - "context_window": 1047576, - "default_max_tokens": 16384, - "can_reason": false, - "supports_attachments": true - }, - { - "id": "gpt-4.1-mini", - "name": "GPT-4.1 Mini", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 1.5999999999999999, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.09999999999999999, - "context_window": 1047576, - "default_max_tokens": 16384, - "can_reason": false, - "supports_attachments": true - }, - { - "id": "gpt-4.1-nano", - "name": "GPT-4.1 Nano", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.024999999999999998, - "context_window": 1047576, - "default_max_tokens": 16384, - "can_reason": false, - "supports_attachments": true - }, - { - "id": "o3-mini", - "name": "o3 Mini", - "cost_per_1m_in": 1.1, - "cost_per_1m_out": 4.4, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.55, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "medium", - "supports_attachments": false - }, - { - "id": "gpt-4o", - "name": "GPT-4o", - "cost_per_1m_in": 2.5, - "cost_per_1m_out": 10, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 1.25, - "context_window": 128000, - "default_max_tokens": 8192, - "can_reason": false, - "supports_attachments": true - }, - { - "id": "gpt-4o-mini", - "name": "GPT-4o-mini", - "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": 128000, - "default_max_tokens": 8192, - "can_reason": false, - "reasoning_effort": "", - "supports_attachments": true - } - ] -} diff --git a/internal/deprecated/configs/openrouter.json b/internal/deprecated/configs/openrouter.json deleted file mode 100644 index 349b6b60b458bd09eb6efb7547aaed4a2da1b557..0000000000000000000000000000000000000000 --- a/internal/deprecated/configs/openrouter.json +++ /dev/null @@ -1,2615 +0,0 @@ -{ - "name": "OpenRouter", - "id": "openrouter", - "api_key": "$OPENROUTER_API_KEY", - "api_endpoint": "https://openrouter.ai/api/v1", - "type": "openai", - "default_large_model_id": "anthropic/claude-sonnet-4", - "default_small_model_id": "anthropic/claude-3.5-haiku", - "models": [ - { - "id": "ai21/jamba-large-1.7", - "name": "AI21: Jamba Large 1.7", - "cost_per_1m_in": 2, - "cost_per_1m_out": 8, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 256000, - "default_max_tokens": 2048, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "ai21/jamba-mini-1.7", - "name": "AI21: Jamba Mini 1.7", - "cost_per_1m_in": 0.19999999999999998, - "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 256000, - "default_max_tokens": 2048, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "amazon/nova-lite-v1", - "name": "Amazon: Nova Lite 1.0", - "cost_per_1m_in": 0.06, - "cost_per_1m_out": 0.24, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 300000, - "default_max_tokens": 2560, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "amazon/nova-micro-v1", - "name": "Amazon: Nova Micro 1.0", - "cost_per_1m_in": 0.035, - "cost_per_1m_out": 0.14, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 128000, - "default_max_tokens": 2560, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "amazon/nova-pro-v1", - "name": "Amazon: Nova Pro 1.0", - "cost_per_1m_in": 0.7999999999999999, - "cost_per_1m_out": 3.1999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 300000, - "default_max_tokens": 2560, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "openrouter/andromeda-alpha", - "name": "Andromeda Alpha", - "cost_per_1m_in": 0, - "cost_per_1m_out": 0, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 128000, - "default_max_tokens": 64000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "anthropic/claude-3-haiku", - "name": "Anthropic: Claude 3 Haiku", - "cost_per_1m_in": 0.25, - "cost_per_1m_out": 1.25, - "cost_per_1m_in_cached": 0.3, - "cost_per_1m_out_cached": 0.03, - "context_window": 200000, - "default_max_tokens": 2048, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "anthropic/claude-3-opus", - "name": "Anthropic: Claude 3 Opus", - "cost_per_1m_in": 15, - "cost_per_1m_out": 75, - "cost_per_1m_in_cached": 18.75, - "cost_per_1m_out_cached": 1.5, - "context_window": 200000, - "default_max_tokens": 2048, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "anthropic/claude-3.5-haiku", - "name": "Anthropic: Claude 3.5 Haiku", - "cost_per_1m_in": 0.7999999999999999, - "cost_per_1m_out": 4, - "cost_per_1m_in_cached": 1, - "cost_per_1m_out_cached": 0.08, - "context_window": 200000, - "default_max_tokens": 4096, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "anthropic/claude-3.5-haiku-20241022", - "name": "Anthropic: Claude 3.5 Haiku (2024-10-22)", - "cost_per_1m_in": 0.7999999999999999, - "cost_per_1m_out": 4, - "cost_per_1m_in_cached": 1, - "cost_per_1m_out_cached": 0.08, - "context_window": 200000, - "default_max_tokens": 4096, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "anthropic/claude-3.5-sonnet", - "name": "Anthropic: Claude 3.5 Sonnet", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 3.75, - "cost_per_1m_out_cached": 0.3, - "context_window": 200000, - "default_max_tokens": 4096, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "anthropic/claude-3.5-sonnet-20240620", - "name": "Anthropic: Claude 3.5 Sonnet (2024-06-20)", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 3.75, - "cost_per_1m_out_cached": 0.3, - "context_window": 200000, - "default_max_tokens": 4096, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "anthropic/claude-3.7-sonnet", - "name": "Anthropic: Claude 3.7 Sonnet", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 3.75, - "cost_per_1m_out_cached": 0.3, - "context_window": 200000, - "default_max_tokens": 32000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "anthropic/claude-3.7-sonnet:thinking", - "name": "Anthropic: Claude 3.7 Sonnet (thinking)", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 3.75, - "cost_per_1m_out_cached": 0.3, - "context_window": 200000, - "default_max_tokens": 32000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "anthropic/claude-haiku-4.5", - "name": "Anthropic: Claude Haiku 4.5", - "cost_per_1m_in": 1, - "cost_per_1m_out": 5, - "cost_per_1m_in_cached": 1.25, - "cost_per_1m_out_cached": 0.09999999999999999, - "context_window": 200000, - "default_max_tokens": 32000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "anthropic/claude-opus-4", - "name": "Anthropic: Claude Opus 4", - "cost_per_1m_in": 15, - "cost_per_1m_out": 75, - "cost_per_1m_in_cached": 18.75, - "cost_per_1m_out_cached": 1.5, - "context_window": 200000, - "default_max_tokens": 16000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "anthropic/claude-opus-4.1", - "name": "Anthropic: Claude Opus 4.1", - "cost_per_1m_in": 15, - "cost_per_1m_out": 75, - "cost_per_1m_in_cached": 18.75, - "cost_per_1m_out_cached": 1.5, - "context_window": 200000, - "default_max_tokens": 16000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "anthropic/claude-sonnet-4", - "name": "Anthropic: Claude Sonnet 4", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 3.75, - "cost_per_1m_out_cached": 0.3, - "context_window": 1000000, - "default_max_tokens": 32000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "anthropic/claude-sonnet-4.5", - "name": "Anthropic: Claude Sonnet 4.5", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 3.75, - "cost_per_1m_out_cached": 0.3, - "context_window": 1000000, - "default_max_tokens": 32000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "arcee-ai/virtuoso-large", - "name": "Arcee AI: Virtuoso Large", - "cost_per_1m_in": 0.75, - "cost_per_1m_out": 1.2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 32000, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "baidu/ernie-4.5-21b-a3b", - "name": "Baidu: ERNIE 4.5 21B A3B", - "cost_per_1m_in": 0.07, - "cost_per_1m_out": 0.28, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 120000, - "default_max_tokens": 4000, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "baidu/ernie-4.5-vl-28b-a3b", - "name": "Baidu: ERNIE 4.5 VL 28B A3B", - "cost_per_1m_in": 0.14, - "cost_per_1m_out": 0.56, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 30000, - "default_max_tokens": 4000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "deepcogito/cogito-v2-preview-llama-109b-moe", - "name": "Cogito V2 Preview Llama 109B", - "cost_per_1m_in": 0.18, - "cost_per_1m_out": 0.59, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 32767, - "default_max_tokens": 3276, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "cohere/command-r-08-2024", - "name": "Cohere: Command R (08-2024)", - "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": 128000, - "default_max_tokens": 2000, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "cohere/command-r-plus-08-2024", - "name": "Cohere: Command R+ (08-2024)", - "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": 128000, - "default_max_tokens": 2000, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "deepcogito/cogito-v2-preview-llama-405b", - "name": "Deep Cogito: Cogito V2 Preview Llama 405B", - "cost_per_1m_in": 3.5, - "cost_per_1m_out": 3.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 32768, - "default_max_tokens": 3276, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "deepcogito/cogito-v2-preview-llama-70b", - "name": "Deep Cogito: Cogito V2 Preview Llama 70B", - "cost_per_1m_in": 0.88, - "cost_per_1m_out": 0.88, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 32768, - "default_max_tokens": 3276, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "deepseek/deepseek-chat", - "name": "DeepSeek: DeepSeek V3", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 1.3, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 64000, - "default_max_tokens": 8000, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "deepseek/deepseek-chat-v3-0324", - "name": "DeepSeek: DeepSeek V3 0324", - "cost_per_1m_in": 0.27, - "cost_per_1m_out": 1.12, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.135, - "context_window": 163840, - "default_max_tokens": 81920, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "deepseek/deepseek-chat-v3-0324:free", - "name": "DeepSeek: DeepSeek V3 0324 (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": 163840, - "default_max_tokens": 16384, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "deepseek/deepseek-chat-v3.1", - "name": "DeepSeek: 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": 163840, - "default_max_tokens": 10240, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "deepseek/deepseek-v3.1-terminus", - "name": "DeepSeek: DeepSeek V3.1 Terminus", - "cost_per_1m_in": 0.27, - "cost_per_1m_out": 1, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 163840, - "default_max_tokens": 16384, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "deepseek/deepseek-v3.1-terminus:exacto", - "name": "DeepSeek: DeepSeek V3.1 Terminus (exacto)", - "cost_per_1m_in": 0.27, - "cost_per_1m_out": 1, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 163840, - "default_max_tokens": 16384, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "deepseek/deepseek-v3.2-exp", - "name": "DeepSeek: DeepSeek V3.2 Exp", - "cost_per_1m_in": 0.27, - "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 163840, - "default_max_tokens": 16384, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "deepseek/deepseek-r1", - "name": "DeepSeek: R1", - "cost_per_1m_in": 0.7, - "cost_per_1m_out": 2.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 64000, - "default_max_tokens": 8000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "deepseek/deepseek-r1-0528", - "name": "DeepSeek: R1 0528", - "cost_per_1m_in": 0.7999999999999999, - "cost_per_1m_out": 2.4, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 163840, - "default_max_tokens": 16384, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "google/gemini-2.0-flash-001", - "name": "Google: Gemini 2.0 Flash", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0.18330000000000002, - "cost_per_1m_out_cached": 0.024999999999999998, - "context_window": 1048576, - "default_max_tokens": 4096, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "google/gemini-2.0-flash-exp:free", - "name": "Google: Gemini 2.0 Flash Experimental (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": 1048576, - "default_max_tokens": 4096, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "google/gemini-2.0-flash-lite-001", - "name": "Google: Gemini 2.0 Flash Lite", - "cost_per_1m_in": 0.075, - "cost_per_1m_out": 0.3, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 1048576, - "default_max_tokens": 4096, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "google/gemini-2.5-flash", - "name": "Google: Gemini 2.5 Flash", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 2.5, - "cost_per_1m_in_cached": 0.3833, - "cost_per_1m_out_cached": 0.03, - "context_window": 1048576, - "default_max_tokens": 32767, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "google/gemini-2.5-flash-lite", - "name": "Google: Gemini 2.5 Flash Lite", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0.18330000000000002, - "cost_per_1m_out_cached": 0.01, - "context_window": 1048576, - "default_max_tokens": 32767, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "google/gemini-2.5-flash-lite-preview-06-17", - "name": "Google: Gemini 2.5 Flash Lite Preview 06-17", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0.18330000000000002, - "cost_per_1m_out_cached": 0.024999999999999998, - "context_window": 1048576, - "default_max_tokens": 32767, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "google/gemini-2.5-flash-lite-preview-09-2025", - "name": "Google: Gemini 2.5 Flash Lite Preview 09-2025", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 1048576, - "default_max_tokens": 32767, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "google/gemini-2.5-flash-preview-09-2025", - "name": "Google: Gemini 2.5 Flash Preview 09-2025", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 2.5, - "cost_per_1m_in_cached": 0.3833, - "cost_per_1m_out_cached": 0.075, - "context_window": 1048576, - "default_max_tokens": 32767, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "google/gemini-2.5-pro", - "name": "Google: Gemini 2.5 Pro", - "cost_per_1m_in": 1.25, - "cost_per_1m_out": 10, - "cost_per_1m_in_cached": 1.625, - "cost_per_1m_out_cached": 0.125, - "context_window": 1048576, - "default_max_tokens": 32768, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "google/gemini-2.5-pro-preview-05-06", - "name": "Google: Gemini 2.5 Pro Preview 05-06", - "cost_per_1m_in": 1.25, - "cost_per_1m_out": 10, - "cost_per_1m_in_cached": 1.625, - "cost_per_1m_out_cached": 0.125, - "context_window": 1048576, - "default_max_tokens": 32768, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "google/gemini-2.5-pro-preview", - "name": "Google: Gemini 2.5 Pro Preview 06-05", - "cost_per_1m_in": 1.25, - "cost_per_1m_out": 10, - "cost_per_1m_in_cached": 1.625, - "cost_per_1m_out_cached": 0.125, - "context_window": 1048576, - "default_max_tokens": 32768, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "inception/mercury", - "name": "Inception: Mercury", - "cost_per_1m_in": 0.25, - "cost_per_1m_out": 1, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 128000, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "inception/mercury-coder", - "name": "Inception: Mercury Coder", - "cost_per_1m_in": 0.25, - "cost_per_1m_out": 1, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 128000, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "meituan/longcat-flash-chat:free", - "name": "Meituan: LongCat Flash Chat (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": 131072, - "default_max_tokens": 65536, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "meta-llama/llama-3-70b-instruct", - "name": "Meta: Llama 3 70B Instruct", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 8192, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "meta-llama/llama-3-8b-instruct", - "name": "Meta: Llama 3 8B Instruct", - "cost_per_1m_in": 0.03, - "cost_per_1m_out": 0.06, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 8192, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "meta-llama/llama-3.1-405b-instruct", - "name": "Meta: Llama 3.1 405B Instruct", - "cost_per_1m_in": 1, - "cost_per_1m_out": 3, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "meta-llama/llama-3.1-70b-instruct", - "name": "Meta: Llama 3.1 70B Instruct", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "meta-llama/llama-3.1-8b-instruct", - "name": "Meta: Llama 3.1 8B Instruct", - "cost_per_1m_in": 0.02, - "cost_per_1m_out": 0.03, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "meta-llama/llama-3.2-3b-instruct", - "name": "Meta: Llama 3.2 3B Instruct", - "cost_per_1m_in": 0.03, - "cost_per_1m_out": 0.049999999999999996, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 32768, - "default_max_tokens": 16000, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "meta-llama/llama-3.3-70b-instruct", - "name": "Meta: Llama 3.3 70B Instruct", - "cost_per_1m_in": 0.6, - "cost_per_1m_out": 0.6, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 65536, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "meta-llama/llama-3.3-70b-instruct:free", - "name": "Meta: Llama 3.3 70B Instruct (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": 128000, - "default_max_tokens": 2014, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "meta-llama/llama-3.3-8b-instruct:free", - "name": "Meta: Llama 3.3 8B Instruct (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": 128000, - "default_max_tokens": 2014, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "meta-llama/llama-4-maverick", - "name": "Meta: Llama 4 Maverick", - "cost_per_1m_in": 0.22, - "cost_per_1m_out": 0.88, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 1048576, - "default_max_tokens": 65536, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "meta-llama/llama-4-maverick:free", - "name": "Meta: Llama 4 Maverick (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": 128000, - "default_max_tokens": 2014, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "meta-llama/llama-4-scout", - "name": "Meta: Llama 4 Scout", - "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": 1048576, - "default_max_tokens": 104857, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "meta-llama/llama-4-scout:free", - "name": "Meta: Llama 4 Scout (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": 128000, - "default_max_tokens": 2014, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "microsoft/phi-3-medium-128k-instruct", - "name": "Microsoft: Phi-3 Medium 128K Instruct", - "cost_per_1m_in": 1, - "cost_per_1m_out": 1, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 128000, - "default_max_tokens": 12800, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "microsoft/phi-3-mini-128k-instruct", - "name": "Microsoft: Phi-3 Mini 128K Instruct", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.09999999999999999, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 128000, - "default_max_tokens": 12800, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "microsoft/phi-3.5-mini-128k-instruct", - "name": "Microsoft: Phi-3.5 Mini 128K Instruct", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.09999999999999999, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 128000, - "default_max_tokens": 12800, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "minimax/minimax-m2:free", - "name": "MiniMax: MiniMax M2 (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": 204800, - "default_max_tokens": 65536, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "mistralai/mistral-large", - "name": "Mistral Large", - "cost_per_1m_in": 2, - "cost_per_1m_out": 6, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 128000, - "default_max_tokens": 12800, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "mistralai/mistral-large-2407", - "name": "Mistral Large 2407", - "cost_per_1m_in": 2, - "cost_per_1m_out": 6, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "mistralai/mistral-large-2411", - "name": "Mistral Large 2411", - "cost_per_1m_in": 2, - "cost_per_1m_out": 6, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "mistralai/mistral-small", - "name": "Mistral Small", - "cost_per_1m_in": 0.19999999999999998, - "cost_per_1m_out": 0.6, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 32768, - "default_max_tokens": 3276, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "mistralai/mistral-tiny", - "name": "Mistral Tiny", - "cost_per_1m_in": 0.25, - "cost_per_1m_out": 0.25, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 32768, - "default_max_tokens": 3276, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "mistralai/codestral-2501", - "name": "Mistral: Codestral 2501", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 0.8999999999999999, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 26214, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "mistralai/codestral-2508", - "name": "Mistral: Codestral 2508", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 0.8999999999999999, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 256000, - "default_max_tokens": 25600, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "mistralai/devstral-medium", - "name": "Mistral: Devstral Medium", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "mistralai/devstral-small-2505", - "name": "Mistral: Devstral Small 2505", - "cost_per_1m_in": 0.049999999999999996, - "cost_per_1m_out": 0.22, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 65536, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "mistralai/devstral-small-2505:free", - "name": "Mistral: Devstral Small 2505 (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": 32768, - "default_max_tokens": 3276, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "mistralai/magistral-medium-2506", - "name": "Mistral: Magistral Medium 2506", - "cost_per_1m_in": 2, - "cost_per_1m_out": 5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 40960, - "default_max_tokens": 20000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "mistralai/magistral-medium-2506:thinking", - "name": "Mistral: Magistral Medium 2506 (thinking)", - "cost_per_1m_in": 2, - "cost_per_1m_out": 5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 40960, - "default_max_tokens": 20000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "mistralai/magistral-small-2506", - "name": "Mistral: Magistral Small 2506", - "cost_per_1m_in": 0.5, - "cost_per_1m_out": 1.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 40000, - "default_max_tokens": 20000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "mistralai/ministral-8b", - "name": "Mistral: Ministral 8B", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.09999999999999999, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "mistralai/mistral-7b-instruct", - "name": "Mistral: Mistral 7B Instruct", - "cost_per_1m_in": 0.028, - "cost_per_1m_out": 0.054, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 32768, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "mistralai/mistral-7b-instruct:free", - "name": "Mistral: Mistral 7B Instruct (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": 32768, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "mistralai/mistral-7b-instruct-v0.3", - "name": "Mistral: Mistral 7B Instruct v0.3", - "cost_per_1m_in": 0.028, - "cost_per_1m_out": 0.054, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 32768, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "mistralai/mistral-medium-3", - "name": "Mistral: Mistral Medium 3", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "mistralai/mistral-medium-3.1", - "name": "Mistral: Mistral Medium 3.1", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "mistralai/mistral-nemo", - "name": "Mistral: Mistral Nemo", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 0.15, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "mistralai/mistral-small-24b-instruct-2501", - "name": "Mistral: Mistral Small 3", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.3, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 32768, - "default_max_tokens": 3276, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "mistralai/mistral-small-3.1-24b-instruct", - "name": "Mistral: Mistral Small 3.1 24B", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.3, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "mistralai/mistral-small-3.1-24b-instruct:free", - "name": "Mistral: Mistral Small 3.1 24B (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": 96000, - "default_max_tokens": 48000, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "mistralai/mistral-small-3.2-24b-instruct", - "name": "Mistral: Mistral Small 3.2 24B", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.3, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "mistralai/mistral-small-3.2-24b-instruct:free", - "name": "Mistral: Mistral Small 3.2 24B (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": 131072, - "default_max_tokens": 13107, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "mistralai/mixtral-8x22b-instruct", - "name": "Mistral: Mixtral 8x22B Instruct", - "cost_per_1m_in": 2, - "cost_per_1m_out": 6, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 65536, - "default_max_tokens": 6553, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "mistralai/mixtral-8x7b-instruct", - "name": "Mistral: Mixtral 8x7B Instruct", - "cost_per_1m_in": 0.54, - "cost_per_1m_out": 0.54, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 32768, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "mistralai/pixtral-12b", - "name": "Mistral: Pixtral 12B", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 0.15, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "mistralai/pixtral-large-2411", - "name": "Mistral: Pixtral Large 2411", - "cost_per_1m_in": 2, - "cost_per_1m_out": 6, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "mistralai/mistral-saba", - "name": "Mistral: Saba", - "cost_per_1m_in": 0.19999999999999998, - "cost_per_1m_out": 0.6, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 32768, - "default_max_tokens": 3276, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "moonshotai/kimi-k2", - "name": "MoonshotAI: Kimi K2 0711", - "cost_per_1m_in": 0.6, - "cost_per_1m_out": 2.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "moonshotai/kimi-k2-0905", - "name": "MoonshotAI: Kimi K2 0905", - "cost_per_1m_in": 0.5, - "cost_per_1m_out": 2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 26214, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "moonshotai/kimi-k2-0905:exacto", - "name": "MoonshotAI: Kimi K2 0905 (exacto)", - "cost_per_1m_in": 0.6, - "cost_per_1m_out": 2.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 26214, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "nvidia/llama-3.1-nemotron-70b-instruct", - "name": "NVIDIA: Llama 3.1 Nemotron 70B Instruct", - "cost_per_1m_in": 0.6, - "cost_per_1m_out": 0.6, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "nvidia/llama-3.3-nemotron-super-49b-v1.5", - "name": "NVIDIA: Llama 3.3 Nemotron Super 49B V1.5", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "nvidia/nemotron-nano-9b-v2", - "name": "NVIDIA: Nemotron Nano 9B V2", - "cost_per_1m_in": 0.04, - "cost_per_1m_out": 0.16, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "nvidia/nemotron-nano-9b-v2:free", - "name": "NVIDIA: Nemotron Nano 9B V2 (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": 128000, - "default_max_tokens": 12800, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "nousresearch/deephermes-3-llama-3-8b-preview", - "name": "Nous: DeepHermes 3 Llama 3 8B Preview", - "cost_per_1m_in": 0.03, - "cost_per_1m_out": 0.11, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 65536, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "nousresearch/deephermes-3-mistral-24b-preview", - "name": "Nous: DeepHermes 3 Mistral 24B Preview", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 0.59, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 32768, - "default_max_tokens": 16384, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "nousresearch/hermes-3-llama-3.1-70b", - "name": "Nous: Hermes 3 70B Instruct", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 12288, - "default_max_tokens": 1228, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "openai/codex-mini", - "name": "OpenAI: Codex Mini", - "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": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "openai/gpt-3.5-turbo", - "name": "OpenAI: GPT-3.5 Turbo", - "cost_per_1m_in": 0.5, - "cost_per_1m_out": 1.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 16385, - "default_max_tokens": 2048, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "openai/gpt-3.5-turbo-0613", - "name": "OpenAI: GPT-3.5 Turbo (older v0613)", - "cost_per_1m_in": 1, - "cost_per_1m_out": 2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 4095, - "default_max_tokens": 2048, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "openai/gpt-3.5-turbo-16k", - "name": "OpenAI: GPT-3.5 Turbo 16k", - "cost_per_1m_in": 3, - "cost_per_1m_out": 4, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 16385, - "default_max_tokens": 2048, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "openai/gpt-4", - "name": "OpenAI: GPT-4", - "cost_per_1m_in": 30, - "cost_per_1m_out": 60, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 8191, - "default_max_tokens": 2048, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "openai/gpt-4-0314", - "name": "OpenAI: GPT-4 (older v0314)", - "cost_per_1m_in": 30, - "cost_per_1m_out": 60, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 8191, - "default_max_tokens": 2048, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "openai/gpt-4-turbo", - "name": "OpenAI: GPT-4 Turbo", - "cost_per_1m_in": 10, - "cost_per_1m_out": 30, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 128000, - "default_max_tokens": 2048, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "openai/gpt-4-1106-preview", - "name": "OpenAI: GPT-4 Turbo (older v1106)", - "cost_per_1m_in": 10, - "cost_per_1m_out": 30, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 128000, - "default_max_tokens": 2048, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "openai/gpt-4-turbo-preview", - "name": "OpenAI: GPT-4 Turbo Preview", - "cost_per_1m_in": 10, - "cost_per_1m_out": 30, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 128000, - "default_max_tokens": 2048, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "openai/gpt-4.1", - "name": "OpenAI: GPT-4.1", - "cost_per_1m_in": 2, - "cost_per_1m_out": 8, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.5, - "context_window": 1047576, - "default_max_tokens": 16384, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "openai/gpt-4.1-mini", - "name": "OpenAI: GPT-4.1 Mini", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 1.5999999999999999, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.09999999999999999, - "context_window": 1047576, - "default_max_tokens": 104757, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "openai/gpt-4.1-nano", - "name": "OpenAI: GPT-4.1 Nano", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.024999999999999998, - "context_window": 1047576, - "default_max_tokens": 16384, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "openai/gpt-4o", - "name": "OpenAI: GPT-4o", - "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": 128000, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "openai/gpt-4o-2024-05-13", - "name": "OpenAI: GPT-4o (2024-05-13)", - "cost_per_1m_in": 5, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 128000, - "default_max_tokens": 2048, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "openai/gpt-4o-2024-08-06", - "name": "OpenAI: GPT-4o (2024-08-06)", - "cost_per_1m_in": 2.5, - "cost_per_1m_out": 10, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 1.25, - "context_window": 128000, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "openai/gpt-4o-2024-11-20", - "name": "OpenAI: GPT-4o (2024-11-20)", - "cost_per_1m_in": 2.5, - "cost_per_1m_out": 10, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 1.25, - "context_window": 128000, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "openai/gpt-4o:extended", - "name": "OpenAI: GPT-4o (extended)", - "cost_per_1m_in": 6, - "cost_per_1m_out": 18, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 128000, - "default_max_tokens": 32000, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "openai/gpt-4o-audio-preview", - "name": "OpenAI: GPT-4o Audio", - "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": 128000, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "openai/gpt-4o-mini", - "name": "OpenAI: GPT-4o-mini", - "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": 128000, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "openai/gpt-4o-mini-2024-07-18", - "name": "OpenAI: 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": 128000, - "default_max_tokens": 8192, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "openai/gpt-5", - "name": "OpenAI: GPT-5", - "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": 400000, - "default_max_tokens": 64000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "openai/gpt-5-codex", - "name": "OpenAI: GPT-5 Codex", - "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": 400000, - "default_max_tokens": 64000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "openai/gpt-5-image", - "name": "OpenAI: GPT-5 Image", - "cost_per_1m_in": 10, - "cost_per_1m_out": 10, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 1.25, - "context_window": 400000, - "default_max_tokens": 64000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "openai/gpt-5-image-mini", - "name": "OpenAI: GPT-5 Image Mini", - "cost_per_1m_in": 2.5, - "cost_per_1m_out": 2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.25, - "context_window": 400000, - "default_max_tokens": 64000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "openai/gpt-5-mini", - "name": "OpenAI: GPT-5 Mini", - "cost_per_1m_in": 0.25, - "cost_per_1m_out": 2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.024999999999999998, - "context_window": 400000, - "default_max_tokens": 64000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "openai/gpt-5-nano", - "name": "OpenAI: GPT-5 Nano", - "cost_per_1m_in": 0.049999999999999996, - "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.01, - "context_window": 400000, - "default_max_tokens": 40000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "openai/gpt-5-pro", - "name": "OpenAI: GPT-5 Pro", - "cost_per_1m_in": 15, - "cost_per_1m_out": 120, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 400000, - "default_max_tokens": 64000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "openai/gpt-oss-120b", - "name": "OpenAI: gpt-oss-120b", - "cost_per_1m_in": 0.04, - "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 65536, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "openai/gpt-oss-120b:exacto", - "name": "OpenAI: gpt-oss-120b (exacto)", - "cost_per_1m_in": 0.049999999999999996, - "cost_per_1m_out": 0.24, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "openai/gpt-oss-20b", - "name": "OpenAI: gpt-oss-20b", - "cost_per_1m_in": 0.04, - "cost_per_1m_out": 0.15, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "openai/gpt-oss-20b:free", - "name": "OpenAI: gpt-oss-20b (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": 131072, - "default_max_tokens": 65536, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "openai/o1", - "name": "OpenAI: 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": 200000, - "default_max_tokens": 50000, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "openai/o3", - "name": "OpenAI: o3", - "cost_per_1m_in": 2, - "cost_per_1m_out": 8, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.5, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "openai/o3-deep-research", - "name": "OpenAI: o3 Deep Research", - "cost_per_1m_in": 10, - "cost_per_1m_out": 40, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 2.5, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "openai/o3-mini", - "name": "OpenAI: o3 Mini", - "cost_per_1m_in": 1.1, - "cost_per_1m_out": 4.4, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.55, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "openai/o3-mini-high", - "name": "OpenAI: o3 Mini High", - "cost_per_1m_in": 1.1, - "cost_per_1m_out": 4.4, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.55, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "openai/o3-pro", - "name": "OpenAI: o3 Pro", - "cost_per_1m_in": 20, - "cost_per_1m_out": 80, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "openai/o4-mini", - "name": "OpenAI: o4 Mini", - "cost_per_1m_in": 1.1, - "cost_per_1m_out": 4.4, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.275, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "openai/o4-mini-deep-research", - "name": "OpenAI: o4 Mini Deep Research", - "cost_per_1m_in": 2, - "cost_per_1m_out": 8, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.5, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "openai/o4-mini-high", - "name": "OpenAI: o4 Mini High", - "cost_per_1m_in": 1.1, - "cost_per_1m_out": 4.4, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.275, - "context_window": 200000, - "default_max_tokens": 50000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "qwen/qwen-2.5-72b-instruct", - "name": "Qwen2.5 72B Instruct", - "cost_per_1m_in": 0.13, - "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "qwen/qwq-32b", - "name": "Qwen: QwQ 32B", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 0.58, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 65536, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "qwen/qwen-plus-2025-07-28", - "name": "Qwen: Qwen Plus 0728", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 1.2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 1000000, - "default_max_tokens": 16384, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "qwen/qwen-plus-2025-07-28:thinking", - "name": "Qwen: Qwen Plus 0728 (thinking)", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 4, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 1000000, - "default_max_tokens": 16384, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "qwen/qwen-vl-max", - "name": "Qwen: Qwen VL Max", - "cost_per_1m_in": 0.7999999999999999, - "cost_per_1m_out": 3.1999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 4096, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "qwen/qwen-max", - "name": "Qwen: Qwen-Max ", - "cost_per_1m_in": 1.5999999999999999, - "cost_per_1m_out": 6.3999999999999995, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.64, - "context_window": 32768, - "default_max_tokens": 4096, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "qwen/qwen-plus", - "name": "Qwen: Qwen-Plus", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 1.2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.16, - "context_window": 131072, - "default_max_tokens": 4096, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "qwen/qwen-turbo", - "name": "Qwen: Qwen-Turbo", - "cost_per_1m_in": 0.049999999999999996, - "cost_per_1m_out": 0.19999999999999998, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.02, - "context_window": 1000000, - "default_max_tokens": 4096, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-14b", - "name": "Qwen: Qwen3 14B", - "cost_per_1m_in": 0.06, - "cost_per_1m_out": 0.24, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 40960, - "default_max_tokens": 20480, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-235b-a22b", - "name": "Qwen: Qwen3 235B A22B", - "cost_per_1m_in": 0.22, - "cost_per_1m_out": 0.88, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 8192, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-235b-a22b-2507", - "name": "Qwen: Qwen3 235B A22B Instruct 2507", - "cost_per_1m_in": 0.35, - "cost_per_1m_out": 1.2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 131072, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-235b-a22b-thinking-2507", - "name": "Qwen: Qwen3 235B A22B Thinking 2507", - "cost_per_1m_in": 0.11, - "cost_per_1m_out": 0.6, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 131072, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-30b-a3b", - "name": "Qwen: Qwen3 30B A3B", - "cost_per_1m_in": 0.09, - "cost_per_1m_out": 0.44999999999999996, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 65536, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-30b-a3b-instruct-2507", - "name": "Qwen: Qwen3 30B A3B Instruct 2507", - "cost_per_1m_in": 0.08, - "cost_per_1m_out": 0.33, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 131072, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-30b-a3b-thinking-2507", - "name": "Qwen: Qwen3 30B A3B Thinking 2507", - "cost_per_1m_in": 0.08, - "cost_per_1m_out": 0.29, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 131072, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-32b", - "name": "Qwen: Qwen3 32B", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 0.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 4000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-4b:free", - "name": "Qwen: Qwen3 4B (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": 40960, - "default_max_tokens": 4096, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-coder-30b-a3b-instruct", - "name": "Qwen: Qwen3 Coder 30B A3B Instruct", - "cost_per_1m_in": 0.07, - "cost_per_1m_out": 0.26, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 26214, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-coder", - "name": "Qwen: Qwen3 Coder 480B A35B", - "cost_per_1m_in": 0.38, - "cost_per_1m_out": 1.53, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 131072, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-coder:exacto", - "name": "Qwen: Qwen3 Coder 480B A35B (exacto)", - "cost_per_1m_in": 0.38, - "cost_per_1m_out": 1.53, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 131072, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-coder:free", - "name": "Qwen: Qwen3 Coder 480B A35B (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": 262144, - "default_max_tokens": 26214, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-coder-flash", - "name": "Qwen: Qwen3 Coder Flash", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 1.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.08, - "context_window": 128000, - "default_max_tokens": 32768, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-coder-plus", - "name": "Qwen: Qwen3 Coder Plus", - "cost_per_1m_in": 1, - "cost_per_1m_out": 5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.09999999999999999, - "context_window": 128000, - "default_max_tokens": 32768, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-max", - "name": "Qwen: Qwen3 Max", - "cost_per_1m_in": 1.2, - "cost_per_1m_out": 6, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.24, - "context_window": 256000, - "default_max_tokens": 16384, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-next-80b-a3b-instruct", - "name": "Qwen: Qwen3 Next 80B A3B Instruct", - "cost_per_1m_in": 0.15, - "cost_per_1m_out": 1.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 26214, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-next-80b-a3b-thinking", - "name": "Qwen: Qwen3 Next 80B A3B Thinking", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 0.3, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 262144, - "default_max_tokens": 131072, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "qwen/qwen3-vl-235b-a22b-instruct", - "name": "Qwen: Qwen3 VL 235B A22B Instruct", - "cost_per_1m_in": 0.5, - "cost_per_1m_out": 2.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 65536, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "qwen/qwen3-vl-30b-a3b-thinking", - "name": "Qwen: Qwen3 VL 30B A3B Thinking", - "cost_per_1m_in": 0.19999999999999998, - "cost_per_1m_out": 1, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 16384, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "qwen/qwen3-vl-8b-instruct", - "name": "Qwen: Qwen3 VL 8B Instruct", - "cost_per_1m_in": 0.08, - "cost_per_1m_out": 0.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 16384, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": true - }, - { - "id": "qwen/qwen3-vl-8b-thinking", - "name": "Qwen: Qwen3 VL 8B Thinking", - "cost_per_1m_in": 0.18, - "cost_per_1m_out": 2.0999999999999996, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 256000, - "default_max_tokens": 16384, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "sao10k/l3-euryale-70b", - "name": "Sao10k: Llama 3 Euryale 70B v2.1", - "cost_per_1m_in": 1.48, - "cost_per_1m_out": 1.48, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 8192, - "default_max_tokens": 4096, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "stepfun-ai/step3", - "name": "StepFun: Step3", - "cost_per_1m_in": 0.5700000000000001, - "cost_per_1m_out": 1.42, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 65536, - "default_max_tokens": 32768, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "tngtech/deepseek-r1t2-chimera", - "name": "TNG: DeepSeek R1T2 Chimera", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 1.2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 163840, - "default_max_tokens": 81920, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "thedrummer/rocinante-12b", - "name": "TheDrummer: Rocinante 12B", - "cost_per_1m_in": 0.16999999999999998, - "cost_per_1m_out": 0.43, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 32768, - "default_max_tokens": 3276, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "thedrummer/unslopnemo-12b", - "name": "TheDrummer: UnslopNemo 12B", - "cost_per_1m_in": 0.39999999999999997, - "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 32768, - "default_max_tokens": 3276, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "alibaba/tongyi-deepresearch-30b-a3b", - "name": "Tongyi DeepResearch 30B A3B", - "cost_per_1m_in": 0.09, - "cost_per_1m_out": 0.39999999999999997, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 65536, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "alibaba/tongyi-deepresearch-30b-a3b:free", - "name": "Tongyi DeepResearch 30B A3B (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": 131072, - "default_max_tokens": 65536, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "z-ai/glm-4-32b", - "name": "Z.AI: GLM 4 32B ", - "cost_per_1m_in": 0.09999999999999999, - "cost_per_1m_out": 0.09999999999999999, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 128000, - "default_max_tokens": 12800, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "z-ai/glm-4.5", - "name": "Z.AI: GLM 4.5", - "cost_per_1m_in": 0.35, - "cost_per_1m_out": 1.55, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 65536, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "z-ai/glm-4.5-air", - "name": "Z.AI: GLM 4.5 Air", - "cost_per_1m_in": 0.19999999999999998, - "cost_per_1m_out": 1.2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "z-ai/glm-4.5-air:free", - "name": "Z.AI: GLM 4.5 Air (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": 131072, - "default_max_tokens": 48000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "z-ai/glm-4.5v", - "name": "Z.AI: GLM 4.5V", - "cost_per_1m_in": 0.6, - "cost_per_1m_out": 1.7999999999999998, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.11, - "context_window": 65536, - "default_max_tokens": 8192, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "z-ai/glm-4.6", - "name": "Z.AI: GLM 4.6", - "cost_per_1m_in": 0.6, - "cost_per_1m_out": 2.2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.11, - "context_window": 204800, - "default_max_tokens": 65536, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "z-ai/glm-4.6:exacto", - "name": "Z.AI: GLM 4.6 (exacto)", - "cost_per_1m_in": 0.6, - "cost_per_1m_out": 1.9, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 202752, - "default_max_tokens": 20275, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "inclusionai/ling-1t", - "name": "inclusionAI: Ling-1T", - "cost_per_1m_in": 0.5700000000000001, - "cost_per_1m_out": 2.2800000000000002, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 65536, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "inclusionai/ring-1t", - "name": "inclusionAI: Ring 1T", - "cost_per_1m_in": 0.5700000000000001, - "cost_per_1m_out": 2.2800000000000002, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 65536, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "x-ai/grok-3", - "name": "xAI: Grok 3", - "cost_per_1m_in": 5, - "cost_per_1m_out": 25, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 1.25, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "x-ai/grok-3-beta", - "name": "xAI: Grok 3 Beta", - "cost_per_1m_in": 5, - "cost_per_1m_out": 25, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 1.25, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": false, - "has_reasoning_efforts": false, - "supports_attachments": false - }, - { - "id": "x-ai/grok-3-mini", - "name": "xAI: Grok 3 Mini", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 0.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.075, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "x-ai/grok-3-mini-beta", - "name": "xAI: Grok 3 Mini Beta", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 0.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.075, - "context_window": 131072, - "default_max_tokens": 13107, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - }, - { - "id": "x-ai/grok-4", - "name": "xAI: Grok 4", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.75, - "context_window": 256000, - "default_max_tokens": 25600, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "x-ai/grok-4-fast", - "name": "xAI: Grok 4 Fast", - "cost_per_1m_in": 0.19999999999999998, - "cost_per_1m_out": 0.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.049999999999999996, - "context_window": 2000000, - "default_max_tokens": 15000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": true - }, - { - "id": "x-ai/grok-code-fast-1", - "name": "xAI: Grok Code Fast 1", - "cost_per_1m_in": 0.19999999999999998, - "cost_per_1m_out": 1.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.02, - "context_window": 256000, - "default_max_tokens": 5000, - "can_reason": true, - "has_reasoning_efforts": true, - "supports_attachments": false - } - ], - "default_headers": { - "HTTP-Referer": "https://charm.land", - "X-Title": "Crush" - } -} diff --git a/internal/deprecated/configs/venice.json b/internal/deprecated/configs/venice.json deleted file mode 100644 index 0e7d4ac4c7daa34319928e8ed0410a834254fa6f..0000000000000000000000000000000000000000 --- a/internal/deprecated/configs/venice.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "name": "Venice AI", - "id": "venice", - "type": "openai", - "api_key": "$VENICE_API_KEY", - "api_endpoint": "https://api.venice.ai/api/v1", - "default_large_model_id": "qwen3-235b:strip_thinking_response=true", - "default_small_model_id": "mistral-31-24b", - "models": [ - { - "id": "qwen3-235b:strip_thinking_response=true", - "name": "Venice Large (qwen3-235b)", - "cost_per_1m_in": 1.5, - "cost_per_1m_out": 6, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 50000, - "can_reason": true, - "supports_attachments": false - }, - { - "id": "qwen3-4b:strip_thinking_response=true", - "name": "Venice Small (qwen3-4b)", - "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": 32768, - "default_max_tokens": 25000, - "can_reason": true, - "supports_attachments": false - }, - { - "id": "mistral-31-24b", - "name": "Venice Medium (mistral-31-24b)", - "cost_per_1m_in": 0.5, - "cost_per_1m_out": 2, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 50000, - "can_reason": false, - "supports_attachments": true - }, - { - "id": "llama-3.2-3b", - "name": "Llama 3.2 3B", - "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": 131072, - "default_max_tokens": 25000, - "can_reason": false, - "supports_attachments": false - }, - { - "id": "llama-3.3-70b", - "name": "Llama 3.3 70B", - "cost_per_1m_in": 0.7, - "cost_per_1m_out": 2.8, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0, - "context_window": 65536, - "default_max_tokens": 32000, - "can_reason": false, - "supports_attachments": false - } - ] -} diff --git a/internal/deprecated/configs/vertexai.json b/internal/deprecated/configs/vertexai.json deleted file mode 100644 index b4deeb75425c4d0c00ea16683c1dca00ee7d569e..0000000000000000000000000000000000000000 --- a/internal/deprecated/configs/vertexai.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "Google Vertex AI", - "id": "vertexai", - "type": "vertexai", - "api_key": "", - "api_endpoint": "", - "default_large_model_id": "gemini-2.5-pro", - "default_small_model_id": "gemini-2.5-flash", - "models": [ - { - "id": "gemini-2.5-pro", - "name": "Gemini 2.5 Pro", - "cost_per_1m_in": 1.25, - "cost_per_1m_out": 10, - "cost_per_1m_in_cached": 1.625, - "cost_per_1m_out_cached": 0.31, - "context_window": 1048576, - "default_max_tokens": 50000, - "can_reason": true, - "supports_attachments": true - }, - { - "id": "gemini-2.5-flash", - "name": "Gemini 2.5 Flash", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 2.5, - "cost_per_1m_in_cached": 0.3833, - "cost_per_1m_out_cached": 0.075, - "context_window": 1048576, - "default_max_tokens": 50000, - "can_reason": true, - "supports_attachments": true - } - ] -} diff --git a/internal/deprecated/configs/xai.json b/internal/deprecated/configs/xai.json deleted file mode 100644 index 70b5f88f268fd1eb7484d09034b41d1e7d9eb379..0000000000000000000000000000000000000000 --- a/internal/deprecated/configs/xai.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "name": "xAI", - "id": "xai", - "api_key": "$XAI_API_KEY", - "api_endpoint": "https://api.x.ai/v1", - "type": "openai", - "default_large_model_id": "grok-code-fast", - "default_small_model_id": "grok-3-mini", - "models": [ - { - "id": "grok-code-fast", - "name": "Grok Code Fast", - "cost_per_1m_in": 0.2, - "cost_per_1m_out": 1.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.02, - "context_window": 256000, - "default_max_tokens": 20000, - "can_reason": true, - "supports_attachments": false - }, - { - "id": "grok-4", - "name": "Grok 4", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.75, - "context_window": 256000, - "default_max_tokens": 20000, - "can_reason": true, - "supports_attachments": true - }, - { - "id": "grok-4-fast", - "name": "Grok 4 Fast", - "cost_per_1m_in": 0.2, - "cost_per_1m_out": 0.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.05, - "context_window": 2000000, - "default_max_tokens": 200000, - "can_reason": true, - "supports_attachments": true - }, - { - "id": "grok-3-mini", - "name": "Grok 3 Mini", - "cost_per_1m_in": 0.3, - "cost_per_1m_out": 0.5, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.075, - "context_window": 131072, - "default_max_tokens": 20000, - "can_reason": true, - "supports_attachments": false - }, - { - "id": "grok-3", - "name": "Grok 3", - "cost_per_1m_in": 3, - "cost_per_1m_out": 15, - "cost_per_1m_in_cached": 0, - "cost_per_1m_out_cached": 0.75, - "context_window": 131072, - "default_max_tokens": 20000, - "can_reason": false, - "supports_attachments": false - } - ] -} diff --git a/internal/deprecated/configs/zai.json b/internal/deprecated/configs/zai.json deleted file mode 100644 index e5baaa8db83c12e7a277ca6d3cb462e319564a7a..0000000000000000000000000000000000000000 --- a/internal/deprecated/configs/zai.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "Z.AI", - "id": "zai", - "api_key": "$ZAI_API_KEY", - "api_endpoint": "https://api.z.ai/api/coding/paas/v4", - "type": "openai", - "default_large_model_id": "glm-4.6", - "default_small_model_id": "glm-4.5-air", - "models": [ - { - "id": "glm-4.6", - "name": "GLM-4.6", - "cost_per_1m_in": 0.6, - "cost_per_1m_out": 2.2, - "cost_per_1m_in_cached": 0.11, - "cost_per_1m_out_cached": 0, - "context_window": 204800, - "default_max_tokens": 131072, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "medium", - "supports_attachments": false - }, - { - "id": "glm-4.5", - "name": "GLM-4.5", - "cost_per_1m_in": 0.6, - "cost_per_1m_out": 2.2, - "cost_per_1m_in_cached": 0.11, - "cost_per_1m_out_cached": 0, - "context_window": 131072, - "default_max_tokens": 98304, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "medium", - "supports_attachments": false - }, - { - "id": "glm-4.5-air", - "name": "GLM-4.5-Air", - "cost_per_1m_in": 0.2, - "cost_per_1m_out": 1.1, - "cost_per_1m_in_cached": 0.03, - "context_window": 131072, - "default_max_tokens": 98304, - "can_reason": true, - "has_reasoning_efforts": true, - "default_reasoning_effort": "medium", - "supports_attachments": false - } - ] -} diff --git a/internal/deprecated/old.go b/internal/deprecated/old.go deleted file mode 100644 index c0b43213c7626fe2f7e14666688d17ff39d71b92..0000000000000000000000000000000000000000 --- a/internal/deprecated/old.go +++ /dev/null @@ -1,33 +0,0 @@ -// Package deprecated is used to serve the old verion of the provider config -package deprecated - -import "charm.land/catwalk/pkg/catwalk" - -// Provider represents an AI provider configuration. -type Provider struct { - Name string `json:"name"` - ID catwalk.InferenceProvider `json:"id"` - APIKey string `json:"api_key,omitempty"` - APIEndpoint string `json:"api_endpoint,omitempty"` - Type catwalk.Type `json:"type,omitempty"` - DefaultLargeModelID string `json:"default_large_model_id,omitempty"` - DefaultSmallModelID string `json:"default_small_model_id,omitempty"` - Models []Model `json:"models,omitempty"` - DefaultHeaders map[string]string `json:"default_headers,omitempty"` -} - -// Model represents an AI model configuration. -type Model struct { - ID string `json:"id"` - Name string `json:"name"` - CostPer1MIn float64 `json:"cost_per_1m_in"` - CostPer1MOut float64 `json:"cost_per_1m_out"` - CostPer1MInCached float64 `json:"cost_per_1m_in_cached"` - CostPer1MOutCached float64 `json:"cost_per_1m_out_cached"` - ContextWindow int64 `json:"context_window"` - DefaultMaxTokens int64 `json:"default_max_tokens"` - CanReason bool `json:"can_reason"` - HasReasoningEffort bool `json:"has_reasoning_efforts"` - DefaultReasoningEffort string `json:"default_reasoning_effort,omitempty"` - SupportsImages bool `json:"supports_attachments"` -} diff --git a/internal/deprecated/providers.go b/internal/deprecated/providers.go deleted file mode 100644 index 300216a0ec60e48028560f49c8621c03e1d65aa8..0000000000000000000000000000000000000000 --- a/internal/deprecated/providers.go +++ /dev/null @@ -1,159 +0,0 @@ -package deprecated - -import ( - _ "embed" - "encoding/json" - "log" -) - -//go:embed configs/openai.json -var openAIConfig []byte - -//go:embed configs/anthropic.json -var anthropicConfig []byte - -//go:embed configs/gemini.json -var geminiConfig []byte - -//go:embed configs/openrouter.json -var openRouterConfig []byte - -//go:embed configs/azure.json -var azureConfig []byte - -//go:embed configs/vertexai.json -var vertexAIConfig []byte - -//go:embed configs/xai.json -var xAIConfig []byte - -//go:embed configs/zai.json -var zAIConfig []byte - -//go:embed configs/bedrock.json -var bedrockConfig []byte - -//go:embed configs/groq.json -var groqConfig []byte - -//go:embed configs/cerebras.json -var cerebrasConfig []byte - -//go:embed configs/venice.json -var veniceConfig []byte - -//go:embed configs/chutes.json -var chutesConfig []byte - -//go:embed configs/deepseek.json -var deepSeekConfig []byte - -//go:embed configs/huggingface.json -var huggingFaceConfig []byte - -//go:embed configs/aihubmix.json -var aiHubMixConfig []byte - -// ProviderFunc is a function that returns a Provider. -type ProviderFunc func() Provider - -var providerRegistry = []ProviderFunc{ - anthropicProvider, - openAIProvider, - geminiProvider, - azureProvider, - bedrockProvider, - vertexAIProvider, - xAIProvider, - zAIProvider, - groqProvider, - openRouterProvider, - cerebrasProvider, - veniceProvider, - chutesProvider, - deepSeekProvider, - huggingFaceProvider, - aiHubMixProvider, -} - -// GetAll returns all registered providers. -func GetAll() []Provider { - providers := make([]Provider, 0, len(providerRegistry)) - for _, providerFunc := range providerRegistry { - providers = append(providers, providerFunc()) - } - return providers -} - -func loadProviderFromConfig(configData []byte) Provider { - var p Provider - if err := json.Unmarshal(configData, &p); err != nil { - log.Printf("Error loading provider config: %v", err) - return Provider{} - } - return p -} - -func openAIProvider() Provider { - return loadProviderFromConfig(openAIConfig) -} - -func anthropicProvider() Provider { - return loadProviderFromConfig(anthropicConfig) -} - -func geminiProvider() Provider { - return loadProviderFromConfig(geminiConfig) -} - -func azureProvider() Provider { - return loadProviderFromConfig(azureConfig) -} - -func bedrockProvider() Provider { - return loadProviderFromConfig(bedrockConfig) -} - -func vertexAIProvider() Provider { - return loadProviderFromConfig(vertexAIConfig) -} - -func xAIProvider() Provider { - return loadProviderFromConfig(xAIConfig) -} - -func zAIProvider() Provider { - return loadProviderFromConfig(zAIConfig) -} - -func openRouterProvider() Provider { - return loadProviderFromConfig(openRouterConfig) -} - -func groqProvider() Provider { - return loadProviderFromConfig(groqConfig) -} - -func cerebrasProvider() Provider { - return loadProviderFromConfig(cerebrasConfig) -} - -func veniceProvider() Provider { - return loadProviderFromConfig(veniceConfig) -} - -func chutesProvider() Provider { - return loadProviderFromConfig(chutesConfig) -} - -func deepSeekProvider() Provider { - return loadProviderFromConfig(deepSeekConfig) -} - -func huggingFaceProvider() Provider { - return loadProviderFromConfig(huggingFaceConfig) -} - -func aiHubMixProvider() Provider { - return loadProviderFromConfig(aiHubMixConfig) -} diff --git a/main.go b/main.go index 278210377f509933d2324b4607c6a2b02054dba1..5bdb8496f6759565d53a6de126d5e65c043e6e7d 100644 --- a/main.go +++ b/main.go @@ -8,7 +8,6 @@ import ( "net/http" "time" - "charm.land/catwalk/internal/deprecated" "charm.land/catwalk/internal/providers" "github.com/charmbracelet/x/etag" "github.com/prometheus/client_golang/prometheus" @@ -26,6 +25,8 @@ var counter = promauto.NewCounter(prometheus.CounterOpts{ var ( providersJSON []byte providersETag string + + deprecatedJSON []byte ) func init() { @@ -35,6 +36,11 @@ func init() { log.Fatal("Failed to marshal providers:", err) } providersETag = etag.Of(providersJSON) + + deprecatedJSON, err = json.Marshal(map[string]any{"error": "This endpoint was removed. Please use /v2/providers instead."}) + if err != nil { + log.Fatal("Failed to marshal deprecated response:", err) + } } func providersHandler(w http.ResponseWriter, r *http.Request) { @@ -63,22 +69,12 @@ func providersHandler(w http.ResponseWriter, r *http.Request) { } } -func providersHandlerDeprecated(w http.ResponseWriter, r *http.Request) { +func providersHandlerDeprecated(w http.ResponseWriter, _ *http.Request) { w.Header().Set("Content-Type", "application/json") - if r.Method == http.MethodHead { - return - } - - if r.Method != http.MethodGet { - http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) - return - } - counter.Inc() - allProviders := deprecated.GetAll() - if err := json.NewEncoder(w).Encode(allProviders); err != nil { - http.Error(w, "Internal server error", http.StatusInternalServerError) - return + if _, err := w.Write(deprecatedJSON); err != nil { + log.Printf("Error writing response: %v", err) + http.Error(w, err.Error(), http.StatusInternalServerError) } }