diff --git a/src/renderer/src/assets/images/providers/ofoxai.png b/src/renderer/src/assets/images/providers/ofoxai.png new file mode 100644 index 00000000000..aa2a7eab318 Binary files /dev/null and b/src/renderer/src/assets/images/providers/ofoxai.png differ diff --git a/src/renderer/src/config/models/default.ts b/src/renderer/src/config/models/default.ts index dd83ac206d5..8f017f546d7 100644 --- a/src/renderer/src/config/models/default.ts +++ b/src/renderer/src/config/models/default.ts @@ -170,12 +170,6 @@ export const SYSTEM_MODELS: Record = name: 'gpt-image-1', group: 'OpenAI' }, - { - id: 'gpt-image-2', - provider: 'aihubmix', - name: 'gpt-image-2', - group: 'OpenAI' - }, { id: 'DeepSeek-V3', provider: 'aihubmix', @@ -237,6 +231,68 @@ export const SYSTEM_MODELS: Record = group: 'llama' } ], + ofoxai: [ + { + id: 'gpt-4o', + name: 'gpt-4o', + provider: 'ofoxai', + group: 'OpenAI' + }, + { + id: 'gpt-4o-mini', + name: 'gpt-4o-mini', + provider: 'ofoxai', + group: 'OpenAI' + }, + { + id: 'o3-mini', + name: 'o3-mini', + provider: 'ofoxai', + group: 'OpenAI' + }, + { + id: 'claude-sonnet-4-20250514', + name: 'claude-sonnet-4', + provider: 'ofoxai', + group: 'Anthropic' + }, + { + id: 'claude-3-7-sonnet-20250219', + name: 'claude-3.7-sonnet', + provider: 'ofoxai', + group: 'Anthropic' + }, + { + id: 'gemini-2.5-pro', + name: 'gemini-2.5-pro', + provider: 'ofoxai', + group: 'Gemini' + }, + { + id: 'gemini-2.5-flash', + name: 'gemini-2.5-flash', + provider: 'ofoxai', + group: 'Gemini' + }, + { + id: 'deepseek-v3', + name: 'deepseek-v3', + provider: 'ofoxai', + group: 'DeepSeek' + }, + { + id: 'deepseek-r1', + name: 'deepseek-r1', + provider: 'ofoxai', + group: 'DeepSeek' + }, + { + id: 'qwen2.5-coder-32b-instruct', + name: 'qwen2.5-coder-32b-instruct', + provider: 'ofoxai', + group: 'Qwen' + } + ], burncloud: [ { id: 'claude-opus-4-5-20251101', provider: 'burncloud', name: 'Claude 4.5 Opus', group: 'Claude 4.5' }, { id: 'claude-sonnet-4-5-20250929', provider: 'burncloud', name: 'Claude 4.5 Sonnet', group: 'Claude 4.5' }, @@ -379,12 +435,6 @@ export const SYSTEM_MODELS: Record = } ], anthropic: [ - { - id: 'claude-opus-4-7', - provider: 'anthropic', - name: 'Claude Opus 4.7', - group: 'Claude 4.7' - }, { id: 'claude-opus-4-6', provider: 'anthropic', @@ -418,16 +468,16 @@ export const SYSTEM_MODELS: Record = ], deepseek: [ { - id: 'deepseek-v4-flash', + id: 'deepseek-chat', provider: 'deepseek', - name: 'deepseek-v4-flash', - group: 'DeepSeek' + name: 'DeepSeek Chat', + group: 'DeepSeek Chat' }, { - id: 'deepseek-v4-pro', + id: 'deepseek-reasoner', provider: 'deepseek', - name: 'deepseek-v4-pro', - group: 'DeepSeek' + name: 'DeepSeek Reasoner', + group: 'DeepSeek Reasoner' } ], together: [ diff --git a/src/renderer/src/config/providers.ts b/src/renderer/src/config/providers.ts index 0eaf815ea83..a67ded4b8fa 100644 --- a/src/renderer/src/config/providers.ts +++ b/src/renderer/src/config/providers.ts @@ -40,6 +40,7 @@ import NewAPIProviderLogo from '@renderer/assets/images/providers/newapi.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 OfoxAiProviderLogo from '@renderer/assets/images/providers/ofoxai.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' @@ -112,6 +113,17 @@ export const SYSTEM_PROVIDERS_CONFIG: Record = isSystem: true, enabled: false }, + ofoxai: { + id: 'ofoxai', + name: 'OfoxAI', + type: 'openai', + apiKey: '', + apiHost: 'https://api.ofox.ai/v1', + anthropicApiHost: 'https://api.ofox.ai/anthropic', + models: SYSTEM_MODELS.ofoxai, + isSystem: true, + enabled: false + }, ovms: { id: 'ovms', name: 'OpenVINO Model Server', @@ -764,6 +776,7 @@ export const PROVIDER_LOGO_MAP: AtLeast = { xirang: XirangProviderLogo, anthropic: AnthropicProviderLogo, aihubmix: AiHubMixProviderLogo, + ofoxai: OfoxAiProviderLogo, burncloud: BurnCloudProviderLogo, gemini: GoogleProviderLogo, stepfun: StepProviderLogo, @@ -1273,6 +1286,17 @@ export const PROVIDER_URLS: Record = { models: 'https://aihubmix.com/models' } }, + ofoxai: { + api: { + url: 'https://api.ofox.ai/v1' + }, + websites: { + official: 'https://ofox.ai', + apiKey: 'https://app.ofox.ai', + docs: 'https://docs.ofox.ai', + models: 'https://docs.ofox.ai' + } + }, fireworks: { api: { url: 'https://api.fireworks.ai/inference' diff --git a/src/renderer/src/types/provider.ts b/src/renderer/src/types/provider.ts index 1cfee653811..553580db5cc 100644 --- a/src/renderer/src/types/provider.ts +++ b/src/renderer/src/types/provider.ts @@ -201,7 +201,8 @@ export const SystemProviderIdSchema = z.enum([ 'cerebras', 'mimo', 'minimax-global', - 'zai' + 'zai', + 'ofoxai' ]) export type SystemProviderId = z.infer @@ -273,7 +274,8 @@ export const SystemProviderIds = { cerebras: 'cerebras', mimo: 'mimo', 'minimax-global': 'minimax-global', - zai: 'zai' + zai: 'zai', + ofoxai: 'ofoxai' } as const satisfies Record type SystemProviderIdTypeMap = typeof SystemProviderIds