feat: update DeepSeek config to V4 with deepseek-v4-flash and deepseek-v4-pro models (#263)

KennyPan created

- Update API endpoint to https://api.deepseek.com (remove /v1 suffix)
- Add deepseek-v4-flash model (supports both thinking/non-thinking modes)
- Add deepseek-v4-pro model with full feature support
- Update context window to 1M tokens for all models
- Add new capabilities: json_output, tool_calls, conversation_prefix, fim
- Mark deepseek-chat and deepseek-reasoner as deprecated (2026-07-24)
- Update pricing to current official rates

💘 Generated with Crush

Assisted-by: MiniMax-M2.7 via Crush <crush@charm.land>

Change summary

internal/providers/configs/deepseek.json | 82 ++++++++++++++++++++-----
1 file changed, 64 insertions(+), 18 deletions(-)

Detailed changes

internal/providers/configs/deepseek.json 🔗

@@ -3,30 +3,73 @@
   "id": "deepseek",
   "type": "openai-compat",
   "api_key": "$DEEPSEEK_API_KEY",
-  "api_endpoint": "https://api.deepseek.com/v1",
-  "default_large_model_id": "deepseek-reasoner",
-  "default_small_model_id": "deepseek-chat",
+  "api_endpoint": "https://api.deepseek.com",
+  "default_large_model_id": "deepseek-v4-pro",
+  "default_small_model_id": "deepseek-v4-flash",
   "models": [
+    {
+      "id": "deepseek-v4-flash",
+      "name": "DeepSeek-V4-Flash",
+      "cost_per_1m_in_cached": 0.2,
+      "cost_per_1m_in": 1,
+      "cost_per_1m_out": 2,
+      "context_window": 1000000,
+      "default_max_tokens": 4000,
+      "can_reason": true,
+      "reasoning_levels": [
+        "low",
+        "medium",
+        "high"
+      ],
+      "default_reasoning_effort": "medium",
+      "supports_attachments": false,
+      "supports_json_output": true,
+      "supports_tool_calls": true,
+      "supports_conversation_prefix": true,
+      "supports_fim": true
+    },
+    {
+      "id": "deepseek-v4-pro",
+      "name": "DeepSeek-V4-Pro",
+      "cost_per_1m_in_cached": 1,
+      "cost_per_1m_in": 12,
+      "cost_per_1m_out": 24,
+      "context_window": 1000000,
+      "default_max_tokens": 32000,
+      "can_reason": true,
+      "reasoning_levels": [
+        "low",
+        "medium",
+        "high"
+      ],
+      "default_reasoning_effort": "medium",
+      "supports_attachments": false,
+      "supports_json_output": true,
+      "supports_tool_calls": true,
+      "supports_conversation_prefix": true,
+      "supports_fim": true
+    },
     {
       "id": "deepseek-chat",
-      "name": "DeepSeek-V3.2 (Non-thinking Mode)",
-      "cost_per_1m_in": 0.28,
-      "cost_per_1m_out": 0.42,
-      "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0.028,
-      "context_window": 128000,
+      "name": "DeepSeek-V3.2 (Non-thinking Mode) [Deprecated, use deepseek-v4-flash]",
+      "cost_per_1m_in_cached": 0.2,
+      "cost_per_1m_in": 1,
+      "cost_per_1m_out": 2,
+      "context_window": 1000000,
       "default_max_tokens": 4000,
       "can_reason": false,
-      "supports_attachments": false
+      "supports_attachments": false,
+      "deprecated": true,
+      "deprecation_date": "2026-07-24",
+      "replacement": "deepseek-v4-flash"
     },
     {
       "id": "deepseek-reasoner",
-      "name": "DeepSeek-V3.2 (Thinking Mode)",
-      "cost_per_1m_in": 0.28,
-      "cost_per_1m_out": 0.42,
-      "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0.028,
-      "context_window": 128000,
+      "name": "DeepSeek-V3.2 (Thinking Mode) [Deprecated, use deepseek-v4-flash]",
+      "cost_per_1m_in_cached": 0.2,
+      "cost_per_1m_in": 1,
+      "cost_per_1m_out": 2,
+      "context_window": 1000000,
       "default_max_tokens": 32000,
       "can_reason": true,
       "reasoning_levels": [
@@ -35,7 +78,10 @@
         "high"
       ],
       "default_reasoning_effort": "medium",
-      "supports_attachments": false
+      "supports_attachments": false,
+      "deprecated": true,
+      "deprecation_date": "2026-07-24",
+      "replacement": "deepseek-v4-flash"
     }
   ]
-}
+}