diff --git a/src/renderer/src/aiCore/clients/openai/OpenAIApiClient.ts b/src/renderer/src/aiCore/clients/openai/OpenAIApiClient.ts index e9133400dc..4808d8a4e9 100644 --- a/src/renderer/src/aiCore/clients/openai/OpenAIApiClient.ts +++ b/src/renderer/src/aiCore/clients/openai/OpenAIApiClient.ts @@ -11,6 +11,7 @@ import { isGPT5SeriesModel, isGrokReasoningModel, isNotSupportSystemMessageModel, + isOpenAIOpenWeightModel, isOpenAIReasoningModel, isQwenAlwaysThinkModel, isQwenMTModel, @@ -531,12 +532,12 @@ export class OpenAIAPIClient extends OpenAIBaseClient< // 1. 处理系统消息 const systemMessage = { role: 'system', content: assistant.prompt || '' } - if (isSupportedReasoningEffortOpenAIModel(model)) { - if (isSupportDeveloperRoleProvider(this.provider)) { - systemMessage.role = 'developer' - } else { - systemMessage.role = 'system' - } + if ( + isSupportedReasoningEffortOpenAIModel(model) && + isSupportDeveloperRoleProvider(this.provider) && + !isOpenAIOpenWeightModel(model) + ) { + systemMessage.role = 'developer' } if (model.id.includes('o1-mini') || model.id.includes('o1-preview')) { diff --git a/src/renderer/src/aiCore/clients/openai/OpenAIResponseAPIClient.ts b/src/renderer/src/aiCore/clients/openai/OpenAIResponseAPIClient.ts index 10a2ee7bbe..36666fcaf2 100644 --- a/src/renderer/src/aiCore/clients/openai/OpenAIResponseAPIClient.ts +++ b/src/renderer/src/aiCore/clients/openai/OpenAIResponseAPIClient.ts @@ -5,6 +5,7 @@ import { isGPT5SeriesModel, isOpenAIChatCompletionOnlyModel, isOpenAILLMModel, + isOpenAIOpenWeightModel, isSupportedReasoningEffortOpenAIModel, isSupportVerbosityModel, isVisionModel @@ -374,12 +375,12 @@ export class OpenAIResponseAPIClient extends OpenAIBaseClient< text: assistant.prompt || '', type: 'input_text' } - if (isSupportedReasoningEffortOpenAIModel(model)) { - if (isSupportDeveloperRoleProvider(this.provider)) { - systemMessage.role = 'developer' - } else { - systemMessage.role = 'system' - } + if ( + isSupportedReasoningEffortOpenAIModel(model) && + isSupportDeveloperRoleProvider(this.provider) && + isOpenAIOpenWeightModel(model) + ) { + systemMessage.role = 'developer' } // 2. 设置工具 diff --git a/src/renderer/src/config/models.ts b/src/renderer/src/config/models.ts index ac2a527a9c..9ee608b1b0 100644 --- a/src/renderer/src/config/models.ts +++ b/src/renderer/src/config/models.ts @@ -2909,7 +2909,11 @@ export function isNotSupportTemperatureAndTopP(model: Model): boolean { return true } - if (isOpenAIReasoningModel(model) || isOpenAIChatCompletionOnlyModel(model) || isQwenMTModel(model)) { + if ( + (isOpenAIReasoningModel(model) && !isOpenAIOpenWeightModel(model)) || + isOpenAIChatCompletionOnlyModel(model) || + isQwenMTModel(model) + ) { return true } @@ -3254,5 +3258,10 @@ export const isGPT5SeriesModel = (model: Model) => { return modelId.includes('gpt-5') } +export const isOpenAIOpenWeightModel = (model: Model) => { + const modelId = getLowerBaseModelName(model.id) + return modelId.includes('gpt-oss') +} + // zhipu 视觉推理模型用这组 special token 标记推理结果 export const ZHIPU_RESULT_TOKENS = ['<|begin_of_box|>', '<|end_of_box|>'] as const