From 367fc546d8c4a98d6c54e678af701f79b5b4ee8c Mon Sep 17 00:00:00 2001 From: Rafli Ahmad Zulfikar Date: Thu, 17 Sep 2026 18:38:10 +0700 Subject: [PATCH] feat(models): deepseek-v4.* accepts low..max effort; flag thinkingEffortSupported and vision --- open-sse/providers/capabilities.js | 6 +++++- open-sse/providers/thinkingLevels.js | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/open-sse/providers/capabilities.js b/open-sse/providers/capabilities.js index 12c9d82f..c02f255f 100644 --- a/open-sse/providers/capabilities.js +++ b/open-sse/providers/capabilities.js @@ -378,7 +378,11 @@ export const PATTERN_CAPABILITIES = [ { pattern: "*glm*", caps: { reasoning: true, thinkingFormat: "zai", contextWindow: 200000 } }, // ── DeepSeek (thinking.enabled + reasoning_effort; r1 = thinking-only) ─ - { pattern: "*deepseek-v4*", caps: { reasoning: true, thinkingFormat: "deepseek", contextWindow: 1000000, maxOutput: 384000 } }, + // v4.1+ has real image input (probed live on Alibaba MaaS: correct color + // read from a PNG). v4-pro / v4-flash-0731 accept image blocks but ignore + // them (answered "Unknown"), so vision stays scoped to v4.* dotted releases. + { pattern: "*deepseek-v4.*", caps: { vision: true, reasoning: true, thinkingFormat: "deepseek", thinkingEffortSupported: true, contextWindow: 1000000, maxOutput: 128000 } }, + { pattern: "*deepseek-v4*", caps: { reasoning: true, thinkingFormat: "deepseek", thinkingEffortSupported: true, contextWindow: 1000000, maxOutput: 384000 } }, { pattern: "*reasoner*", caps: { reasoning: true, thinkingFormat: "deepseek", thinkingCanDisable: false, contextWindow: 128000 } }, { pattern: "*deepseek-r*", caps: { reasoning: true, thinkingFormat: "deepseek", thinkingCanDisable: false, contextWindow: 128000 } }, { pattern: "*deepseek-chat*", caps: { contextWindow: 128000 } }, diff --git a/open-sse/providers/thinkingLevels.js b/open-sse/providers/thinkingLevels.js index 0b77e4b4..94897ec7 100644 --- a/open-sse/providers/thinkingLevels.js +++ b/open-sse/providers/thinkingLevels.js @@ -41,6 +41,10 @@ const PATTERN_THINKING = [ { provider: "codex", pattern: "*gpt-5.6-terra*", levels: [...CODEX_GPT_5_6_LEVELS, "ultra"] }, { provider: "codex", pattern: "*gpt-5.6-luna*", levels: CODEX_GPT_5_6_LEVELS }, { pattern: "*codex*", levels: ["low", "medium", "high", "xhigh"] }, // codex cannot disable thinking + // DeepSeek v4.* (Alibaba MaaS, probed live): effort low|medium|high|xhigh|max + // all 200 via output_config.effort; "none" is a 400 on the anthropic route + // (disable thinking instead). none kept for the picker = disable. + { pattern: "*deepseek-v4.*", levels: ["none", "low", "medium", "high", "xhigh", "max"] }, // codebuddy-cn per-model effort sets — the server's product-config payload // publishes `reasoning.supportedEfforts` per model. NOTE: the chat endpoint // accepts any level you send (probed none/minimal/low/medium/high/xhigh/max