From 5e31c809e1a582e847c44a9f1f2d1fbff75d207b Mon Sep 17 00:00:00 2001 From: Phantom <59059173+EurFelux@users.noreply.github.com> Date: Tue, 26 Aug 2025 16:32:45 +0800 Subject: [PATCH] fix(openai): Gemma system message (#9561) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(openai): 修复不支持系统消息的模型处理逻辑 当模型不支持系统消息时,将其转换为用户消息,确保请求消息的正确构建 * fix(openai): 处理不支持系统消息的模型时合并用户消息 当模型不支持系统消息时,将系统消息内容合并到第一条用户消息中 添加空用户消息的警告日志 --- .../src/aiCore/clients/openai/OpenAIApiClient.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/renderer/src/aiCore/clients/openai/OpenAIApiClient.ts b/src/renderer/src/aiCore/clients/openai/OpenAIApiClient.ts index 9693988ed1..f2bfeed026 100644 --- a/src/renderer/src/aiCore/clients/openai/OpenAIApiClient.ts +++ b/src/renderer/src/aiCore/clients/openai/OpenAIApiClient.ts @@ -561,6 +561,9 @@ export class OpenAIAPIClient extends OpenAIBaseClient< userMessages.push(await this.convertMessageToSdkParam(message, model)) } } + if (userMessages.length === 0) { + logger.warn('No user message. Some providers may not support.') + } // poe 需要通过用户消息传递 reasoningEffort const reasoningEffort = this.getReasoningEffort(assistant, model) @@ -588,8 +591,17 @@ export class OpenAIAPIClient extends OpenAIBaseClient< // 4. 最终请求消息 let reqMessages: OpenAISdkMessageParam[] - if (!systemMessage.content || isNotSupportSystemMessageModel(model)) { + if (!systemMessage.content) { reqMessages = [...userMessages] + } else if (isNotSupportSystemMessageModel(model)) { + // transform into user message + const firstUserMsg = userMessages.shift() + if (firstUserMsg) { + firstUserMsg.content = `System Instruction: \n${systemMessage.content}\n\nUser Message(s):\n${firstUserMsg.content}` + reqMessages = [firstUserMsg, ...userMessages] + } else { + reqMessages = [] + } } else { reqMessages = [systemMessage, ...userMessages].filter(Boolean) as OpenAISdkMessageParam[] }