From e11bb16307903361d294abb92099b7b1d41d7804 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Mon, 17 Mar 2025 15:08:14 +0800 Subject: [PATCH] feat: add provider alayanew --- .../src/assets/images/apps/obsidian.svg | 1 - .../src/assets/images/providers/alayanew.webp | Bin 0 -> 5332 bytes src/renderer/src/config/models.ts | 1 + src/renderer/src/config/providers.ts | 147 +++++++----------- src/renderer/src/i18n/locales/en-us.json | 3 +- src/renderer/src/i18n/locales/ja-jp.json | 3 +- src/renderer/src/i18n/locales/ru-ru.json | 3 +- src/renderer/src/i18n/locales/zh-cn.json | 3 +- src/renderer/src/i18n/locales/zh-tw.json | 3 +- src/renderer/src/store/index.ts | 2 +- src/renderer/src/store/llm.ts | 10 ++ src/renderer/src/store/migrate.ts | 14 ++ 12 files changed, 93 insertions(+), 97 deletions(-) delete mode 100644 src/renderer/src/assets/images/apps/obsidian.svg create mode 100644 src/renderer/src/assets/images/providers/alayanew.webp diff --git a/src/renderer/src/assets/images/apps/obsidian.svg b/src/renderer/src/assets/images/apps/obsidian.svg deleted file mode 100644 index dbf69ac8..00000000 --- a/src/renderer/src/assets/images/apps/obsidian.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/renderer/src/assets/images/providers/alayanew.webp b/src/renderer/src/assets/images/providers/alayanew.webp new file mode 100644 index 0000000000000000000000000000000000000000..b53fd47d56c6679e2a25aafcfac0df0c59200265 GIT binary patch literal 5332 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 literal 0 HcmV?d00001 diff --git a/src/renderer/src/config/models.ts b/src/renderer/src/config/models.ts index 04db317b..2ed36b0d 100644 --- a/src/renderer/src/config/models.ts +++ b/src/renderer/src/config/models.ts @@ -598,6 +598,7 @@ export const SYSTEM_MODELS: Record = { group: '01-ai' } ], + alayanew: [], openai: [ { id: 'gpt-4.5-preview', provider: 'openai', name: ' gpt-4.5-preview', group: 'gpt-4.5' }, { id: 'gpt-4o', provider: 'openai', name: ' GPT-4o', group: 'GPT 4o' }, diff --git a/src/renderer/src/config/providers.ts b/src/renderer/src/config/providers.ts index 485ea7e2..5a7878df 100644 --- a/src/renderer/src/config/providers.ts +++ b/src/renderer/src/config/providers.ts @@ -2,6 +2,7 @@ import ZhinaoProviderLogo from '@renderer/assets/images/models/360.png' import HunyuanProviderLogo from '@renderer/assets/images/models/hunyuan.png' import AzureProviderLogo from '@renderer/assets/images/models/microsoft.png' import AiHubMixProviderLogo from '@renderer/assets/images/providers/aihubmix.jpg' +import AlayaNewProviderLogo from '@renderer/assets/images/providers/alayanew.webp' import AnthropicProviderLogo from '@renderer/assets/images/providers/anthropic.png' import BaichuanProviderLogo from '@renderer/assets/images/providers/baichuan.png' import BaiduCloudProviderLogo from '@renderer/assets/images/providers/baidu-cloud.svg' @@ -40,95 +41,55 @@ import BytedanceProviderLogo from '@renderer/assets/images/providers/volcengine. import XirangProviderLogo from '@renderer/assets/images/providers/xirang.png' import ZeroOneProviderLogo from '@renderer/assets/images/providers/zero-one.png' import ZhipuProviderLogo from '@renderer/assets/images/providers/zhipu.png' + +const PROVIDER_LOGO_MAP = { + openai: OpenAiProviderLogo, + silicon: SiliconFlowProviderLogo, + deepseek: DeepSeekProviderLogo, + 'gitee-ai': GiteeAIProviderLogo, + yi: ZeroOneProviderLogo, + groq: GroqProviderLogo, + zhipu: ZhipuProviderLogo, + ollama: OllamaProviderLogo, + lmstudio: LMStudioProviderLogo, + moonshot: MoonshotProviderLogo, + openrouter: OpenRouterProviderLogo, + baichuan: BaichuanProviderLogo, + dashscope: BailianProviderLogo, + modelscope: ModelScopeProviderLogo, + xirang: XirangProviderLogo, + anthropic: AnthropicProviderLogo, + aihubmix: AiHubMixProviderLogo, + gemini: GoogleProviderLogo, + stepfun: StepProviderLogo, + doubao: BytedanceProviderLogo, + 'graphrag-kylin-mountain': GraphRagProviderLogo, + minimax: MinimaxProviderLogo, + github: GithubProviderLogo, + ocoolai: OcoolAiProviderLogo, + together: TogetherProviderLogo, + fireworks: FireworksProviderLogo, + zhinao: ZhinaoProviderLogo, + nvidia: NvidiaProviderLogo, + 'azure-openai': AzureProviderLogo, + hunyuan: HunyuanProviderLogo, + grok: GrokProviderLogo, + hyperbolic: HyperbolicProviderLogo, + mistral: MistralProviderLogo, + jina: JinaProviderLogo, + ppio: PPIOProviderLogo, + 'baidu-cloud': BaiduCloudProviderLogo, + dmxapi: DmxapiProviderLogo, + perplexity: PerplexityProviderLogo, + infini: InfiniProviderLogo, + o3: O3ProviderLogo, + 'tencent-cloud-ti': TencentCloudProviderLogo, + gpustack: GPUStackProviderLogo, + alayanew: AlayaNewProviderLogo +} as const + export function getProviderLogo(providerId: string) { - switch (providerId) { - case 'openai': - return OpenAiProviderLogo - case 'silicon': - return SiliconFlowProviderLogo - case 'deepseek': - return DeepSeekProviderLogo - case 'gitee-ai': - return GiteeAIProviderLogo - case 'yi': - return ZeroOneProviderLogo - case 'groq': - return GroqProviderLogo - case 'zhipu': - return ZhipuProviderLogo - case 'ollama': - return OllamaProviderLogo - case 'lmstudio': - return LMStudioProviderLogo - case 'moonshot': - return MoonshotProviderLogo - case 'openrouter': - return OpenRouterProviderLogo - case 'baichuan': - return BaichuanProviderLogo - case 'dashscope': - return BailianProviderLogo - case 'modelscope': - return ModelScopeProviderLogo - case 'xirang': - return XirangProviderLogo - case 'anthropic': - return AnthropicProviderLogo - case 'aihubmix': - return AiHubMixProviderLogo - case 'gemini': - return GoogleProviderLogo - case 'stepfun': - return StepProviderLogo - case 'doubao': - return BytedanceProviderLogo - case 'graphrag-kylin-mountain': - return GraphRagProviderLogo - case 'minimax': - return MinimaxProviderLogo - case 'github': - return GithubProviderLogo - case 'ocoolai': - return OcoolAiProviderLogo - case 'together': - return TogetherProviderLogo - case 'fireworks': - return FireworksProviderLogo - case 'zhinao': - return ZhinaoProviderLogo - case 'nvidia': - return NvidiaProviderLogo - case 'azure-openai': - return AzureProviderLogo - case 'hunyuan': - return HunyuanProviderLogo - case 'grok': - return GrokProviderLogo - case 'hyperbolic': - return HyperbolicProviderLogo - case 'mistral': - return MistralProviderLogo - case 'jina': - return JinaProviderLogo - case 'ppio': - return PPIOProviderLogo - case 'baidu-cloud': - return BaiduCloudProviderLogo - case 'dmxapi': - return DmxapiProviderLogo - case 'perplexity': - return PerplexityProviderLogo - case 'infini': - return InfiniProviderLogo - case 'o3': - return O3ProviderLogo - case 'tencent-cloud-ti': - return TencentCloudProviderLogo - case 'gpustack': - return GPUStackProviderLogo - default: - return undefined - } + return PROVIDER_LOGO_MAP[providerId as keyof typeof PROVIDER_LOGO_MAP] } export const PROVIDER_CONFIG = { @@ -387,9 +348,15 @@ export const PROVIDER_CONFIG = { models: 'https://platform.minimaxi.com/document/Models' } }, - 'graphrag-kylin-mountain': { + alayanew: { api: { - url: '' + url: 'https://deepseek.alayanew.com' + }, + websites: { + official: 'https://www.alayanew.com/backend/register?id=cherrystudio', + apiKey: 'https://www.alayanew.com/access?id=cherrystudio', + docs: 'https://docs.alayanew.com/docs/modelService/interview?utm_source=cherrystudio', + models: 'https://www.alayanew.com/product/deepseek?id=cherrystudio' } }, openrouter: { diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 849ed332..065bf80e 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -629,7 +629,8 @@ "yi": "Yi", "zhinao": "360AI", "zhipu": "ZHIPU AI", - "gpustack": "GPUStack" + "gpustack": "GPUStack", + "alayanew": "Alaya NeW" }, "restore": { "confirm": "Are you sure you want to restore data?", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index f53dc489..3119ce92 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -629,7 +629,8 @@ "yi": "零一万物", "zhinao": "360智脳", "zhipu": "智譜AI", - "gpustack": "GPUStack" + "gpustack": "GPUStack", + "alayanew": "Alaya NeW" }, "restore": { "confirm": "データを復元しますか?", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index 9ccd2d13..8e3e8b24 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -629,7 +629,8 @@ "yi": "Yi", "zhinao": "360AI", "zhipu": "ZHIPU AI", - "gpustack": "GPUStack" + "gpustack": "GPUStack", + "alayanew": "Alaya NeW" }, "restore": { "confirm": "Вы уверены, что хотите восстановить данные?", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index a933b69f..1289fcee 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -623,7 +623,8 @@ "yi": "零一万物", "zhinao": "360智脑", "zhipu": "智谱AI", - "gpustack": "GPUStack" + "gpustack": "GPUStack", + "alayanew": "Alaya NeW" }, "restore": { "confirm": "确定要恢复数据吗?", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index eec4668a..b1808cb3 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -623,7 +623,8 @@ "yi": "零一萬物", "zhinao": "360 智腦", "zhipu": "智譜 AI", - "gpustack": "GPUStack" + "gpustack": "GPUStack", + "alayanew": "Alaya NeW" }, "restore": { "confirm": "確定要復原資料嗎?", diff --git a/src/renderer/src/store/index.ts b/src/renderer/src/store/index.ts index da059823..97dc9a53 100644 --- a/src/renderer/src/store/index.ts +++ b/src/renderer/src/store/index.ts @@ -36,7 +36,7 @@ const persistedReducer = persistReducer( { key: 'cherry-studio', storage, - version: 79, + version: 80, blacklist: ['runtime', 'messages'], migrate }, diff --git a/src/renderer/src/store/llm.ts b/src/renderer/src/store/llm.ts index cdc32582..30011f40 100644 --- a/src/renderer/src/store/llm.ts +++ b/src/renderer/src/store/llm.ts @@ -119,6 +119,16 @@ const initialState: LlmState = { isSystem: true, enabled: false }, + { + id: 'alayanew', + name: 'AlayaNew', + type: 'openai', + apiKey: '', + apiHost: 'https://deepseek.alayanew.com', + models: SYSTEM_MODELS.alayanew, + isSystem: true, + enabled: false + }, { id: 'infini', name: 'Infini', diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index 575c5c55..ed006331 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -1256,6 +1256,20 @@ const migrateConfig = { enabled: false }) return state + }, + '80': (state: RootState) => { + state.llm.providers.push({ + id: 'alayanew', + name: 'AlayaNew', + type: 'openai', + apiKey: '', + apiHost: 'https://deepseek.alayanew.com', + models: SYSTEM_MODELS.alayanew, + isSystem: true, + enabled: false + }) + state.llm.providers = moveProvider(state.llm.providers, 'alayanew', 10) + return state } }