From 67f713d3a52025824cd5c3e23c9597447b320e3f Mon Sep 17 00:00:00 2001 From: Owen Date: Fri, 15 May 2026 03:23:24 +0900 Subject: [PATCH] Merge PR #2231: fix(deepseek): preserve reasoning_content through full pipeline for DeepSeek V4 models (thanks @kang-heewon) Squash merge as part of the v3.8.0 release housekeeping. Closes #2231. --- open-sse/handlers/responseSanitizer.ts | 4 +++- open-sse/translator/index.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/open-sse/handlers/responseSanitizer.ts b/open-sse/handlers/responseSanitizer.ts index f7cbb300fc..015f79c234 100644 --- a/open-sse/handlers/responseSanitizer.ts +++ b/open-sse/handlers/responseSanitizer.ts @@ -27,8 +27,10 @@ const ALLOWED_RESPONSES_USAGE_FIELDS = new Set([ type JsonRecord = Record; +const DEEPSEEK_V4_SANITIZER_MODEL_PATTERN = /deepseek[-/]v4/i; + function isDeepSeekV4Model(model: unknown): boolean { - return typeof model === "string" && /deepseek[-/]v4/i.test(model); + return typeof model === "string" && DEEPSEEK_V4_SANITIZER_MODEL_PATTERN.test(model); } function toRecord(value: unknown): JsonRecord | null { diff --git a/open-sse/translator/index.ts b/open-sse/translator/index.ts index 49fb8add0e..d74947c435 100644 --- a/open-sse/translator/index.ts +++ b/open-sse/translator/index.ts @@ -111,7 +111,7 @@ function isDeepSeekReplayTarget(provider: unknown, model: unknown): boolean { const normalizedModel = String(model ?? "") .trim() .toLowerCase(); - return normalizedProvider === "deepseek" || normalizedModel.includes("deepseek"); + return normalizedProvider === "deepseek" || /(^|\/)deepseek/i.test(normalizedModel); } /** @param options.normalizeToolCallId - When true, use 9-char tool call ids (e.g. Mistral); when false, leave ids as-is */