fix(openai): Gemma system message (#9561)

* fix(openai): 修复不支持系统消息的模型处理逻辑

当模型不支持系统消息时,将其转换为用户消息,确保请求消息的正确构建

* fix(openai): 处理不支持系统消息的模型时合并用户消息

当模型不支持系统消息时,将系统消息内容合并到第一条用户消息中
添加空用户消息的警告日志
This commit is contained in:
Phantom 2025-08-26 16:32:45 +08:00 committed by GitHub
parent 961984df24
commit 5e31c809e1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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[]
}