diff --git a/src/renderer/src/aiCore/utils/reasoning.ts b/src/renderer/src/aiCore/utils/reasoning.ts index 10afbbaf5f..ca1d03966a 100644 --- a/src/renderer/src/aiCore/utils/reasoning.ts +++ b/src/renderer/src/aiCore/utils/reasoning.ts @@ -10,6 +10,7 @@ import { GEMINI_FLASH_MODEL_REGEX, getModelSupportedReasoningEffortOptions, isDeepSeekHybridInferenceModel, + isDoubaoSeed18Model, isDoubaoSeedAfter251015, isDoubaoThinkingAutoModel, isGemini3ThinkingTokenModel, @@ -389,7 +390,7 @@ export function getReasoningEffort(assistant: Assistant, model: Model): Reasonin // Use thinking, doubao, zhipu, etc. if (isSupportedThinkingTokenDoubaoModel(model)) { - if (isDoubaoSeedAfter251015(model)) { + if (isDoubaoSeedAfter251015(model) || isDoubaoSeed18Model(model)) { return { reasoningEffort } } if (reasoningEffort === 'high') { diff --git a/src/renderer/src/config/models/__tests__/reasoning.test.ts b/src/renderer/src/config/models/__tests__/reasoning.test.ts index ded3f9cc77..ba7af37f17 100644 --- a/src/renderer/src/config/models/__tests__/reasoning.test.ts +++ b/src/renderer/src/config/models/__tests__/reasoning.test.ts @@ -733,6 +733,11 @@ describe('getThinkModelType - Comprehensive Coverage', () => { expect(getThinkModelType(createModel({ id: 'doubao-seed-1-6-lite-251015' }))).toBe('doubao_after_251015') }) + it('should return doubao_after_251015 for Doubao-Seed-1.8 models', () => { + expect(getThinkModelType(createModel({ id: 'doubao-seed-1-8-251215' }))).toBe('doubao_after_251015') + expect(getThinkModelType(createModel({ id: 'doubao-seed-1.8' }))).toBe('doubao_after_251015') + }) + it('should return doubao_no_auto for other Doubao thinking models', () => { expect(getThinkModelType(createModel({ id: 'doubao-1.5-thinking-vision-pro' }))).toBe('doubao_no_auto') }) @@ -863,6 +868,7 @@ describe('getThinkModelType - Comprehensive Coverage', () => { // auto > after_251015 > no_auto expect(getThinkModelType(createModel({ id: 'doubao-seed-1.6' }))).toBe('doubao') expect(getThinkModelType(createModel({ id: 'doubao-seed-1-6-251015' }))).toBe('doubao_after_251015') + expect(getThinkModelType(createModel({ id: 'doubao-seed-1-8-251215' }))).toBe('doubao_after_251015') expect(getThinkModelType(createModel({ id: 'doubao-1.5-thinking-vision-pro' }))).toBe('doubao_no_auto') }) diff --git a/src/renderer/src/config/models/default.ts b/src/renderer/src/config/models/default.ts index d7b0e885d0..66368d35fe 100644 --- a/src/renderer/src/config/models/default.ts +++ b/src/renderer/src/config/models/default.ts @@ -746,6 +746,12 @@ export const SYSTEM_MODELS: Record = } ], doubao: [ + { + id: 'doubao-seed-1-8-251215', + provider: 'doubao', + name: 'Doubao-Seed-1.8', + group: 'Doubao-Seed-1.8' + }, { id: 'doubao-1-5-vision-pro-32k-250115', provider: 'doubao', diff --git a/src/renderer/src/config/models/reasoning.ts b/src/renderer/src/config/models/reasoning.ts index 4b0e293f40..14174d1629 100644 --- a/src/renderer/src/config/models/reasoning.ts +++ b/src/renderer/src/config/models/reasoning.ts @@ -146,7 +146,7 @@ const _getThinkModelType = (model: Model): ThinkingModelType => { } else if (isSupportedThinkingTokenDoubaoModel(model)) { if (isDoubaoThinkingAutoModel(model)) { thinkingModelType = 'doubao' - } else if (isDoubaoSeedAfter251015(model)) { + } else if (isDoubaoSeedAfter251015(model) || isDoubaoSeed18Model(model)) { thinkingModelType = 'doubao_after_251015' } else { thinkingModelType = 'doubao_no_auto' @@ -457,7 +457,7 @@ export function isQwenAlwaysThinkModel(model?: Model): boolean { // Doubao 支持思考模式的模型正则 export const DOUBAO_THINKING_MODEL_REGEX = - /doubao-(?:1[.-]5-thinking-vision-pro|1[.-]5-thinking-pro-m|seed-1[.-]6(?:-flash)?(?!-(?:thinking)(?:-|$))|seed-code(?:-preview)?(?:-\d+)?)(?:-[\w-]+)*/i + /doubao-(?:1[.-]5-thinking-vision-pro|1[.-]5-thinking-pro-m|seed-1[.-][68](?:-flash)?(?!-(?:thinking)(?:-|$))|seed-code(?:-preview)?(?:-\d+)?)(?:-[\w-]+)*/i // 支持 auto 的 Doubao 模型 doubao-seed-1.6-xxx doubao-seed-1-6-xxx doubao-1-5-thinking-pro-m-xxx // Auto thinking is no longer supported after version 251015, see https://console.volcengine.com/ark/region:ark+cn-beijing/model/detail?Id=doubao-seed-1-6 @@ -475,6 +475,11 @@ export function isDoubaoSeedAfter251015(model: Model): boolean { return result } +export function isDoubaoSeed18Model(model: Model): boolean { + const pattern = /doubao-seed-1[.-]8(?:-[\w-]+)?/i + return pattern.test(model.id) || pattern.test(model.name) +} + export function isSupportedThinkingTokenDoubaoModel(model?: Model): boolean { if (!model) { return false diff --git a/src/renderer/src/config/models/tooluse.ts b/src/renderer/src/config/models/tooluse.ts index 50890aaf8d..66e2dcc209 100644 --- a/src/renderer/src/config/models/tooluse.ts +++ b/src/renderer/src/config/models/tooluse.ts @@ -25,7 +25,7 @@ export const FUNCTION_CALLING_MODELS = [ 'learnlm(?:-[\\w-]+)?', 'gemini(?:-[\\w-]+)?', // 提前排除了gemini的嵌入模型 'grok-3(?:-[\\w-]+)?', - 'doubao-seed-1[.-]6(?:-[\\w-]+)?', + 'doubao-seed-1[.-][68](?:-[\\w-]+)?', 'doubao-seed-code(?:-[\\w-]+)?', 'kimi-k2(?:-[\\w-]+)?', 'ling-\\w+(?:-[\\w-]+)?', diff --git a/src/renderer/src/config/models/vision.ts b/src/renderer/src/config/models/vision.ts index 183ec99433..fe4bc9912c 100644 --- a/src/renderer/src/config/models/vision.ts +++ b/src/renderer/src/config/models/vision.ts @@ -45,7 +45,7 @@ const visionAllowedModels = [ 'deepseek-vl(?:[\\w-]+)?', 'kimi-latest', 'gemma-3(?:-[\\w-]+)', - 'doubao-seed-1[.-]6(?:-[\\w-]+)?', + 'doubao-seed-1[.-][68](?:-[\\w-]+)?', 'doubao-seed-code(?:-[\\w-]+)?', 'kimi-thinking-preview', `gemma3(?:[-:\\w]+)?`,