From 9f0182b55efac275094a36fc6a8487f2f619be91 Mon Sep 17 00:00:00 2001 From: Kadxy <2230318258@qq.com> Date: Fri, 28 Feb 2025 13:52:26 +0800 Subject: [PATCH 1/2] fix: enforce that the first message (excluding system messages) is a user message in the Deepseek API --- app/client/platforms/deepseek.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/app/client/platforms/deepseek.ts b/app/client/platforms/deepseek.ts index b21d24cef..db67a92f0 100644 --- a/app/client/platforms/deepseek.ts +++ b/app/client/platforms/deepseek.ts @@ -75,6 +75,25 @@ export class DeepSeekApi implements LLMApi { } } + // 检测并修复消息顺序,确保除system外的第一个消息是user + const filteredMessages: ChatOptions["messages"] = []; + let hasFoundFirstUser = false; + + for (const msg of messages) { + if (msg.role === "system") { + // Keep all system messages + filteredMessages.push(msg); + } else if (msg.role === "user") { + // User message directly added + filteredMessages.push(msg); + hasFoundFirstUser = true; + } else if (hasFoundFirstUser) { + // After finding the first user message, all subsequent non-system messages are retained. + filteredMessages.push(msg); + } + // If hasFoundFirstUser is false and it is not a system message, it will be skipped. + } + const modelConfig = { ...useAppConfig.getState().modelConfig, ...useChatStore.getState().currentSession().mask.modelConfig, From 2d4180f5be9639fc7a7e050834b1706ac2ee47ee Mon Sep 17 00:00:00 2001 From: Kadxy <2230318258@qq.com> Date: Fri, 28 Feb 2025 13:59:30 +0800 Subject: [PATCH 2/2] fix: update request payload to use filtered messages in Deepseek API --- app/client/platforms/deepseek.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/client/platforms/deepseek.ts b/app/client/platforms/deepseek.ts index db67a92f0..1b38b40cc 100644 --- a/app/client/platforms/deepseek.ts +++ b/app/client/platforms/deepseek.ts @@ -104,7 +104,7 @@ export class DeepSeekApi implements LLMApi { }; const requestPayload: RequestPayload = { - messages, + messages: filteredMessages, stream: options.config.stream, model: modelConfig.model, temperature: modelConfig.temperature,