From ce66f2e2ea3d7c695d587201e05c69f27d728823 Mon Sep 17 00:00:00 2001 From: cnJasonZ Date: Wed, 12 Feb 2025 14:14:56 +0800 Subject: [PATCH] feat: add new model provider PPIO (#1359) --- .../src/assets/images/providers/ppio.png | Bin 0 -> 4002 bytes src/renderer/src/config/models.ts | 62 ++++++++++++++++++ src/renderer/src/config/providers.ts | 16 +++++ src/renderer/src/i18n/locales/en-us.json | 3 +- src/renderer/src/i18n/locales/zh-cn.json | 3 +- src/renderer/src/i18n/locales/zh-tw.json | 3 +- src/renderer/src/store/llm.ts | 10 +++ 7 files changed, 94 insertions(+), 3 deletions(-) create mode 100644 src/renderer/src/assets/images/providers/ppio.png diff --git a/src/renderer/src/assets/images/providers/ppio.png b/src/renderer/src/assets/images/providers/ppio.png new file mode 100644 index 0000000000000000000000000000000000000000..f7d49f064e48a18fba3c6329e091fc944fce6a69 GIT binary patch literal 4002 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 V+R=wE;pdi`4ySL5sYSbx{tx#{`?CN5 literal 0 HcmV?d00001 diff --git a/src/renderer/src/config/models.ts b/src/renderer/src/config/models.ts index 006d7c6d..0192046f 100644 --- a/src/renderer/src/config/models.ts +++ b/src/renderer/src/config/models.ts @@ -348,6 +348,68 @@ export const SYSTEM_MODELS: Record = { group: 'BAAI' } ], + ppio: [ + { + id: 'deepseek/deepseek-r1/community', + name: 'DeepSeek: DeepSeek R1 (Community)', + provider: 'ppio', + group: 'deepseek' + }, + { + id: 'deepseek/deepseek-v3/community', + name: 'DeepSeek: DeepSeek V3 (Community)', + provider: 'ppio', + group: 'deepseek' + }, + { + id: 'deepseek/deepseek-r1', + provider: 'ppio', + name: 'DeepSeek R1', + group: 'deepseek' + }, + { + id: 'deepseek/deepseek-v3', + provider: 'ppio', + name: 'DeepSeek V3', + group: 'deepseek' + }, + { + id: 'qwen/qwen-2.5-72b-instruct', + provider: 'ppio', + name: 'Qwen2.5-72B-Instruct', + group: 'qwen' + }, + { + id: 'qwen/qwen2.5-32b-instruct', + provider: 'ppio', + name: 'Qwen2.5-32B-Instruct', + group: 'qwen' + }, + { + id: 'meta-llama/llama-3.1-70b-instruct', + provider: 'ppio', + name: 'Llama-3.1-70B-Instruct', + group: 'meta-llama' + }, + { + id: 'meta-llama/llama-3.1-8b-instruct', + provider: 'ppio', + name: 'Llama-3.1-8B-Instruct', + group: 'meta-llama' + }, + { + id: '01-ai/yi-1.5-34b-chat', + provider: 'ppio', + name: 'Yi-1.5-34B-Chat', + group: '01-ai' + }, + { + id: '01-ai/yi-1.5-9b-chat', + provider: 'ppio', + name: 'Yi-1.5-9B-Chat', + group: '01-ai' + } + ], openai: [ { id: 'gpt-4o', provider: 'openai', name: ' GPT-4o', group: 'GPT 4o' }, { id: 'gpt-4o-mini', provider: 'openai', name: ' GPT-4o-mini', group: 'GPT 4o' }, diff --git a/src/renderer/src/config/providers.ts b/src/renderer/src/config/providers.ts index 69c07d5b..0edf7247 100644 --- a/src/renderer/src/config/providers.ts +++ b/src/renderer/src/config/providers.ts @@ -25,6 +25,7 @@ import OcoolAiProviderLogo from '@renderer/assets/images/providers/ocoolai.png' import OllamaProviderLogo from '@renderer/assets/images/providers/ollama.png' import OpenAiProviderLogo from '@renderer/assets/images/providers/openai.png' import OpenRouterProviderLogo from '@renderer/assets/images/providers/openrouter.png' +import PPIOProviderLogo from '@renderer/assets/images/providers/ppio.png' import SiliconFlowProviderLogo from '@renderer/assets/images/providers/silicon.png' import StepProviderLogo from '@renderer/assets/images/providers/step.png' import TogetherProviderLogo from '@renderer/assets/images/providers/together.png' @@ -95,6 +96,8 @@ export function getProviderLogo(providerId: string) { return MistralProviderLogo case 'jina': return JinaProviderLogo + case 'ppio': + return PPIOProviderLogo case 'baidu-cloud': return BaiduCloudProviderLogo default: @@ -114,6 +117,19 @@ export const PROVIDER_CONFIG = { models: 'https://platform.openai.com/docs/models' } }, + ppio: { + api: { + url: 'https://api.ppinfra.com/v3/openai' + }, + websites: { + official: + 'https://ppinfra.com/model-api/product/llm-api?utm_source=github_cherry-studio&utm_medium=github_readme&utm_campaign=link', + apiKey: 'https://ppinfra.com/settings/key-management', + docs: 'https://ppinfra.com/docs/model-api/reference/llm/llm.html', + models: + 'https://ppinfra.com/model-api/product/llm-api?utm_source=github_cherry-studio&utm_medium=github_readme&utm_campaign=link' + } + }, gemini: { api: { url: 'https://generativelanguage.googleapis.com' diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index d27364cb..3ef3a41c 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -372,7 +372,8 @@ "yi": "Yi", "zhinao": "360AI", "zhipu": "ZHIPU AI", - "qwenlm": "QwenLM" + "qwenlm": "QwenLM", + "ppio": "PPIO" }, "settings": { "about": "About & Feedback", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index b0839b37..19eca7d5 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -373,7 +373,8 @@ "yi": "零一万物", "zhinao": "360智脑", "zhipu": "智谱AI", - "qwenlm": "QwenLM" + "qwenlm": "QwenLM", + "ppio": "PPIO 派欧云" }, "settings": { "about": "关于我们", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index deb083c4..60e3e744 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -372,7 +372,8 @@ "yi": "零一萬物", "zhinao": "360智腦", "zhipu": "智譜AI", - "qwenlm": "QwenLM" + "qwenlm": "QwenLM", + "ppio": "PPIO 派歐雲" }, "settings": { "about": "關於與回饋", diff --git a/src/renderer/src/store/llm.ts b/src/renderer/src/store/llm.ts index d6a32503..c9651887 100644 --- a/src/renderer/src/store/llm.ts +++ b/src/renderer/src/store/llm.ts @@ -63,6 +63,16 @@ const initialState: LlmState = { isSystem: true, enabled: false }, + { + id: 'ppio', + name: 'PPIO', + type: 'openai', + apiKey: '', + apiHost: 'https://api.ppinfra.com/v3/openai', + models: SYSTEM_MODELS.ppio, + isSystem: true, + enabled: false + }, { id: 'ocoolai', name: 'ocoolAI',