From 5c32d41cd84300e7b23dc4bcccafcb46a8823aa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A6=96=E9=83=BD=E7=88=B1=E6=8A=A4=E5=8A=A8=E7=89=A9?= =?UTF-8?q?=E5=8D=8F=E4=BC=9A?= <87239270+1355873789@users.noreply.github.com> Date: Wed, 26 Feb 2025 09:35:05 +0800 Subject: [PATCH] add o3 --- .../src/assets/images/providers/o3.png | Bin 0 -> 13877 bytes src/renderer/src/config/models.ts | 128 ++++++++++++++++++ src/renderer/src/config/providers.ts | 14 ++ src/renderer/src/i18n/locales/en-us.json | 1 + src/renderer/src/i18n/locales/ja-jp.json | 1 + src/renderer/src/i18n/locales/ru-ru.json | 1 + src/renderer/src/i18n/locales/zh-cn.json | 5 +- src/renderer/src/i18n/locales/zh-tw.json | 1 + src/renderer/src/store/index.ts | 2 +- src/renderer/src/store/llm.ts | 10 ++ src/renderer/src/store/migrate.ts | 20 +++ 11 files changed, 180 insertions(+), 3 deletions(-) create mode 100644 src/renderer/src/assets/images/providers/o3.png diff --git a/src/renderer/src/assets/images/providers/o3.png b/src/renderer/src/assets/images/providers/o3.png new file mode 100644 index 0000000000000000000000000000000000000000..2fdc1100a4afdfc48f8c475521d11f2a8865e440 GIT binary patch literal 13877 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 = { group: 'Qwen' } ], + o3: [ + { + id: 'gpt-4o', + provider: 'o3', + name: 'GPT-4o', + group: 'OpenAI' + }, + { + id: 'o1-mini', + provider: 'o3', + name: 'o1-mini', + group: 'OpenAI' + }, + { + id: 'o1-preview', + provider: 'o3', + name: 'o1-preview', + group: 'OpenAI' + }, + { + id: 'o3-mini', + provider: 'o3', + name: 'o3-mini', + group: 'OpenAI' + }, + { + id: 'o3-mini-high', + provider: 'o3', + name: 'o3-mini-high', + group: 'OpenAI' + }, + { + id: 'claude-3-7-sonnet-20250219', + provider: 'o3', + name: 'claude-3-7-sonnet-20250219', + group: 'Anthropic' + }, + { + id: 'claude-3-5-sonnet-20241022', + provider: 'o3', + name: 'claude-3-5-sonnet-20241022', + group: 'Anthropic' + }, + { + id: 'claude-3-5-haiku-20241022', + provider: 'o3', + name: 'claude-3-5-haiku-20241022', + group: 'Anthropic' + }, + { + id: 'claude-3-opus-20240229', + provider: 'o3', + name: 'claude-3-opus-20240229', + group: 'Anthropic' + }, + { + id: 'claude-3-haiku-20240307', + provider: 'o3', + name: 'claude-3-haiku-20240307', + group: 'Anthropic' + }, + { + id: 'claude-3-5-sonnet-20240620', + provider: 'o3', + name: 'claude-3-5-sonnet-20240620', + group: 'Anthropic' + }, + { + id: 'deepseek-ai/Deepseek-R1', + provider: 'o3', + name: 'DeepSeek R1', + group: 'DeepSeek' + }, + { + id: 'deepseek-reasoner', + provider: 'o3', + name: 'deepseek-reasoner', + group: 'DeepSeek' + }, + { + id: 'deepseek-chat', + provider: 'o3', + name: 'deepseek-chat', + group: 'DeepSeek' + }, + { + id: 'deepseek-ai/DeepSeek-V3', + provider: 'o3', + name: 'DeepSeek V3', + group: 'DeepSeek' + }, + { + id: 'text-embedding-3-small', + provider: 'o3', + name: 'text-embedding-3-small', + group: '嵌入模型' + }, + { + id: 'text-embedding-3-small', + provider: 'o3', + name: 'text-embedding-3-small', + group: '嵌入模型' + }, + { + id: 'text-embedding-ada-002', + provider: 'o3', + name: 'text-embedding-ada-002', + group: '嵌入模型' + }, + { + id: 'text-embedding-v2', + provider: 'o3', + name: 'text-embedding-v2', + group: '嵌入模型' + }, + { + id: 'Doubao-embedding', + provider: 'o3', + name: 'Doubao-embedding', + group: '嵌入模型' + }, + { + id: 'Doubao-embedding-large', + provider: 'o3', + name: 'Doubao-embedding-large', + group: '嵌入模型' + } + ], ollama: [], lmstudio: [], silicon: [ diff --git a/src/renderer/src/config/providers.ts b/src/renderer/src/config/providers.ts index a05900456c..5d49669ae8 100644 --- a/src/renderer/src/config/providers.ts +++ b/src/renderer/src/config/providers.ts @@ -24,6 +24,7 @@ import MistralProviderLogo from '@renderer/assets/images/providers/mistral.png' import ModelScopeProviderLogo from '@renderer/assets/images/providers/modelscope.png' import MoonshotProviderLogo from '@renderer/assets/images/providers/moonshot.png' import NvidiaProviderLogo from '@renderer/assets/images/providers/nvidia.png' +import O3ProviderLogo from '@renderer/assets/images/providers/o3.png' 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' @@ -114,6 +115,8 @@ export function getProviderLogo(providerId: string) { return PerplexityProviderLogo case 'infini': return InfiniProviderLogo + case 'o3': + return O3ProviderLogo default: return undefined } @@ -131,6 +134,17 @@ export const PROVIDER_CONFIG = { models: 'https://platform.openai.com/docs/models' } }, + o3: { + api: { + url: 'https://api.o3.fan' + }, + websites: { + official: 'https://o3.fan', + apiKey: 'https://o3.fan/token', + docs: 'https://docs.o3.fan', + models: 'https://docs.o3.fan/models' + } + }, ppio: { api: { url: 'https://api.ppinfra.com/v3/openai' diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 17e137bb02..0524006c09 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -519,6 +519,7 @@ "title": "You are an assistant who is good at conversation. You need to summarize the user's conversation into a title of 10 characters or less, ensuring it matches the user's primary language without using punctuation or other special symbols." }, "provider": { + "o3": "O3", "aihubmix": "AiHubMix", "anthropic": "Anthropic", "azure-openai": "Azure OpenAI", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index 0ed5b07852..110cb92ecc 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -519,6 +519,7 @@ "title": "あなたは会話を得意とするアシスタントです。ユーザーの会話を10文字以内のタイトルに要約し、ユーザーの主言語と一致していることを確認してください。句読点や特殊記号は使用しないでください。" }, "provider": { + "o3": "O3", "aihubmix": "AiHubMix", "anthropic": "Anthropic", "azure-openai": "Azure OpenAI", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index 256513e3f7..3adf4dc8f7 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -519,6 +519,7 @@ "title": "Вы - эксперт в общении, который суммирует разговоры пользователя в 10-символьном заголовке, совпадающем с языком пользователя, без использования знаков препинания и других специальных символов" }, "provider": { + "o3": "O3", "aihubmix": "AiHubMix", "anthropic": "Anthropic", "azure-openai": "Azure OpenAI", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 2cd0065165..3991331fc7 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -203,9 +203,9 @@ "http": { "400": "请求错误,请检查请求参数是否正确。如果修改了模型设置,请重置到默认设置", "401": "身份验证失败,请检查 API 密钥是否正确", - "403": "禁止访问,请检查是否实名认证,或联系服务商询问被禁止原因", + "403": "禁止访问,请翻译具体报错信息查看原因,或联系服务商询问被禁止原因", "404": "模型不存在或者请求路径错误", - "429": "请求过多,请稍后再试", + "429": "请求速率超过限制,请稍后再试", "500": "服务器错误,请稍后再试", "502": "网关错误,请稍后再试", "503": "服务不可用,请稍后再试", @@ -519,6 +519,7 @@ "title": "你是一名擅长会话的助理,你需要将用户的会话总结为 10 个字以内的标题,标题语言与用户的首要语言一致,不要使用标点符号和其他特殊符号" }, "provider": { + "o3": "O3", "aihubmix": "AiHubMix", "anthropic": "Anthropic", "azure-openai": "Azure OpenAI", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 2e300a4f59..8ac8eba499 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -519,6 +519,7 @@ "title": "你是一名擅長會話的助理,你需要將用戶的會話總結為 10 個字以內的標題,標題語言與用戶的首要語言一致,不要使用標點符號和其他特殊符號" }, "provider": { + "o3": "O3", "aihubmix": "AiHubMix", "anthropic": "Anthropic", "azure-openai": "Azure OpenAI", diff --git a/src/renderer/src/store/index.ts b/src/renderer/src/store/index.ts index d07366f1e1..5eff704c14 100644 --- a/src/renderer/src/store/index.ts +++ b/src/renderer/src/store/index.ts @@ -32,7 +32,7 @@ const persistedReducer = persistReducer( { key: 'cherry-studio', storage, - version: 73, + version: 74, blacklist: ['runtime'], migrate }, diff --git a/src/renderer/src/store/llm.ts b/src/renderer/src/store/llm.ts index 71dd400c5a..60f4477cf6 100644 --- a/src/renderer/src/store/llm.ts +++ b/src/renderer/src/store/llm.ts @@ -36,6 +36,16 @@ const initialState: LlmState = { isSystem: true, enabled: true }, + { + id: 'o3', + name: 'O3', + type: 'openai', + apiKey: '', + apiHost: 'https://api.o3.fan', + models: SYSTEM_MODELS.o3, + isSystem: true, + enabled: false + }, { id: 'aihubmix', name: 'AiHubMix', diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index 34ffd2f74f..ecde9314d7 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -1161,6 +1161,26 @@ const migrateConfig = { .trim() } return state + }, + '74': (state: RootState) => { + return { + ...state, + llm: { + ...state.llm, + providers: [ + ...state.llm.providers, + { + id: 'o3', + name: 'O3', + apiKey: '', + apiHost: 'https://api.o3.fan', + models: SYSTEM_MODELS.o3, + isSystem: true, + enabled: false + } + ] + } + } } }