feat(Grok): add isGrokModel function and update systemMessage handling for Grok models (#4823)

This commit is contained in:
Asurada 2025-04-15 03:15:07 +08:00 committed by GitHub
parent f0f44d5768
commit 5fbff8c1fe
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 3 deletions

View File

@ -2220,6 +2220,13 @@ export function isSupportedReasoningEffortModel(model?: Model): boolean {
return false
}
export function isGrokModel(model?: Model): boolean {
if (!model) {
return false
}
return model.id.includes('grok')
}
export function isGrokReasoningModel(model?: Model): boolean {
if (!model) {
return false

View File

@ -1,6 +1,7 @@
import { DEFAULT_MAX_TOKENS } from '@renderer/config/constant'
import {
getOpenAIWebSearchParams,
isGrokModel,
isGrokReasoningModel,
isHunyuanSearchModel,
isOpenAIoSeries,
@ -382,9 +383,13 @@ export default class OpenAIProvider extends BaseProvider {
const { signal } = abortController
await this.checkIsCopilot()
const reqMessages: ChatCompletionMessageParam[] = [systemMessage, ...userMessages].filter(
Boolean
) as ChatCompletionMessageParam[]
// Grok 模型要求每条消息都不能为空,所以当是 Grok 模型且 systemMessage 内容为空时不发送 systemMessage
let reqMessages: ChatCompletionMessageParam[]
if (isGrokModel(model) && !systemMessage.content) {
reqMessages = [...userMessages]
} else {
reqMessages = [systemMessage, ...userMessages].filter(Boolean) as ChatCompletionMessageParam[]
}
const toolResponses: MCPToolResponse[] = []
let firstChunk = true