From aaa51c435e2ff538fb128afcc7a6a43fcd6fee4e Mon Sep 17 00:00:00 2001 From: icarus Date: Fri, 29 Aug 2025 19:36:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=BF=BB=E8=AF=91):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=AF=B9Qwen=20MT=E6=A8=A1=E5=9E=8B=E7=BF=BB=E8=AF=91=E9=80=89?= =?UTF-8?q?=E9=A1=B9=E7=9A=84=E7=89=B9=E6=AE=8A=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加对Qwen MT模型的支持,当助手类型为翻译时设置翻译选项。若目标语言不支持则抛出错误 --- src/renderer/src/aiCore/utils/options.ts | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/renderer/src/aiCore/utils/options.ts b/src/renderer/src/aiCore/utils/options.ts index a9c42f0f3e..687c9c7a0c 100644 --- a/src/renderer/src/aiCore/utils/options.ts +++ b/src/renderer/src/aiCore/utils/options.ts @@ -1,16 +1,19 @@ import { baseProviderIdSchema, customProviderIdSchema } from '@cherrystudio/ai-core/provider' -import { isOpenAIModel, isSupportFlexServiceTierModel } from '@renderer/config/models' +import { isOpenAIModel, isQwenMTModel, isSupportFlexServiceTierModel } from '@renderer/config/models' import { isSupportServiceTierProvider } from '@renderer/config/providers' +import { mapLanguageToQwenMTModel } from '@renderer/config/translate' import { Assistant, GroqServiceTiers, isGroqServiceTier, isOpenAIServiceTier, + isTranslateAssistant, Model, OpenAIServiceTiers, Provider, SystemProviderIds } from '@renderer/types' +import { t } from 'i18next' import { getAiSdkProviderId } from '../provider/factory' import { buildGeminiGenerateImageParams } from './image' @@ -280,5 +283,22 @@ function buildGenericProviderOptions( } } + // 特殊处理 Qwen MT + if (isQwenMTModel(model)) { + if (isTranslateAssistant(assistant)) { + const targetLanguage = assistant.targetLanguage + const translationOptions = { + source_lang: 'auto', + target_lang: mapLanguageToQwenMTModel(targetLanguage) + } as const + if (!translationOptions.target_lang) { + throw new Error(t('translate.error.not_supported', { language: targetLanguage.value })) + } + providerOptions.translation_options = translationOptions + } else { + throw new Error(t('translate.error.chat_qwen_mt')) + } + } + return providerOptions }