From 4413528d0e89c873bbf410dbe6f84cd684420390 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Tue, 24 Sep 2024 20:56:19 +0800 Subject: [PATCH] feat: add ocoolai provider --- src/renderer/src/config/models.ts | 8 ++++++++ src/renderer/src/config/provider.ts | 14 ++++++++++++++ src/renderer/src/i18n/index.ts | 6 ++++-- src/renderer/src/providers/OpenAIProvider.ts | 3 +-- src/renderer/src/store/index.ts | 2 +- src/renderer/src/store/llm.ts | 9 +++++++++ src/renderer/src/store/migrate.ts | 20 ++++++++++++++++++++ 7 files changed, 57 insertions(+), 5 deletions(-) diff --git a/src/renderer/src/config/models.ts b/src/renderer/src/config/models.ts index 3aa3a0d0..056af6c6 100644 --- a/src/renderer/src/config/models.ts +++ b/src/renderer/src/config/models.ts @@ -260,6 +260,14 @@ export const SYSTEM_MODELS: Record = { group: 'DeepSeek Coder' } ], + ocoolai: [ + { + id: 'gpt-4o', + provider: 'ocoolai', + name: 'OpenAI GPT-4o', + group: 'OpenAI' + } + ], github: [ { id: 'gpt-4o', diff --git a/src/renderer/src/config/provider.ts b/src/renderer/src/config/provider.ts index 3387d370..77997b68 100644 --- a/src/renderer/src/config/provider.ts +++ b/src/renderer/src/config/provider.ts @@ -15,6 +15,7 @@ import GraphRagProviderLogo from '@renderer/assets/images/providers/graph-rag.pn import GroqProviderLogo from '@renderer/assets/images/providers/groq.png' import MinimaxProviderLogo from '@renderer/assets/images/providers/minimax.png' import MoonshotProviderLogo from '@renderer/assets/images/providers/moonshot.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' import OpenRouterProviderLogo from '@renderer/assets/images/providers/openrouter.png' @@ -63,6 +64,8 @@ export function getProviderLogo(providerId: string) { return MinimaxProviderLogo case 'github': return GithubProviderLogo + case 'ocoolai': + return OcoolAiProviderLogo default: return undefined } @@ -137,6 +140,17 @@ export const PROVIDER_CONFIG = { logo: DeepSeekProviderLogo } }, + ocoolai: { + api: { + url: 'https://one.ooo.cool' + }, + websites: { + official: 'https://ocoolai.com/', + apiKey: 'https://one.ocoolai.com/token', + docs: 'https://docs.ooo.cool/', + models: 'https://docs.ooo.cool/guides/jiage/' + } + }, github: { api: { url: 'https://models.inference.ai.azure.com/' diff --git a/src/renderer/src/i18n/index.ts b/src/renderer/src/i18n/index.ts index 6f00f7e9..621ffbd4 100644 --- a/src/renderer/src/i18n/index.ts +++ b/src/renderer/src/i18n/index.ts @@ -159,7 +159,8 @@ const resources = { doubao: 'Doubao', minimax: 'MiniMax', 'graphrag-kylin-mountain': 'GraphRAG', - github: 'GitHub Models' + github: 'GitHub Models', + ocoolai: 'ocoolAI' }, settings: { title: 'Settings', @@ -440,7 +441,8 @@ const resources = { doubao: '豆包', minimax: 'MiniMax', 'graphrag-kylin-mountain': 'GraphRAG', - github: 'GitHub Models' + github: 'GitHub Models', + ocoolai: 'ocoolAI' }, settings: { title: '设置', diff --git a/src/renderer/src/providers/OpenAIProvider.ts b/src/renderer/src/providers/OpenAIProvider.ts index c1cb3aeb..6040ad0c 100644 --- a/src/renderer/src/providers/OpenAIProvider.ts +++ b/src/renderer/src/providers/OpenAIProvider.ts @@ -263,8 +263,6 @@ export default class OpenAIProvider extends BaseProvider { public async models(): Promise { try { - const response = await this.sdk.models.list() - if (this.provider.id === 'github') { // @ts-ignore key is not typed return response.body.map((model) => ({ @@ -275,6 +273,7 @@ export default class OpenAIProvider extends BaseProvider { })) } + const response = await this.sdk.models.list() return response.data } catch (error) { return [] diff --git a/src/renderer/src/store/index.ts b/src/renderer/src/store/index.ts index 75d64117..5a8ed93d 100644 --- a/src/renderer/src/store/index.ts +++ b/src/renderer/src/store/index.ts @@ -22,7 +22,7 @@ const persistedReducer = persistReducer( { key: 'cherry-studio', storage, - version: 25, + version: 26, blacklist: ['runtime'], migrate }, diff --git a/src/renderer/src/store/llm.ts b/src/renderer/src/store/llm.ts index 5db48e41..5dd3d4a3 100644 --- a/src/renderer/src/store/llm.ts +++ b/src/renderer/src/store/llm.ts @@ -77,6 +77,15 @@ const initialState: LlmState = { isSystem: true, enabled: false }, + { + id: 'ocoolai', + name: 'ocoolAI', + apiKey: '', + apiHost: 'https://one.ooo.cool', + models: [], + isSystem: true, + enabled: false + }, { id: 'github', name: 'Github Models', diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index d562d9b4..49340332 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -413,6 +413,26 @@ const migrateConfig = { ] } } + }, + '26': (state: RootState) => { + return { + ...state, + llm: { + ...state.llm, + providers: [ + ...state.llm.providers, + { + id: 'ocoolai', + name: 'ocoolAI', + apiKey: '', + apiHost: 'https://one.ooo.cool', + models: [], + isSystem: true, + enabled: false + } + ] + } + } } }