diff --git a/src/renderer/src/assets/images/providers/302ai.png b/src/renderer/src/assets/images/providers/302ai.png new file mode 100644 index 0000000000..ece610cd0e Binary files /dev/null and b/src/renderer/src/assets/images/providers/302ai.png differ diff --git a/src/renderer/src/config/models.ts b/src/renderer/src/config/models.ts index 9d776a7df2..acebf6171c 100644 --- a/src/renderer/src/config/models.ts +++ b/src/renderer/src/config/models.ts @@ -429,7 +429,86 @@ export const SYSTEM_MODELS: Record = { group: 'deepseek-ai' } ], - + '302ai': [ + { + id: 'deepseek-chat', + name: 'deepseek-chat', + provider: '302ai', + group: 'DeepSeek' + }, + { + id: 'deepseek-reasoner', + name: 'deepseek-reasoner', + provider: '302ai', + group: 'DeepSeek' + }, + { + id: 'chatgpt-4o-latest', + name: 'chatgpt-4o-latest', + provider: '302ai', + group: 'OpenAI' + }, + { + id: 'gpt-4.1', + name: 'gpt-4.1', + provider: '302ai', + group: 'OpenAI' + }, + { + id: 'o3', + name: 'o3', + provider: '302ai', + group: 'OpenAI' + }, + { + id: 'o4-mini', + name: 'o4-mini', + provider: '302ai', + group: 'OpenAI' + }, + { + id: 'qwen3-235b-a22b', + name: 'qwen3-235b-a22b', + provider: '302ai', + group: 'Qwen' + }, + { + id: 'gemini-2.5-flash-preview-05-20', + name: 'gemini-2.5-flash-preview-05-20', + provider: '302ai', + group: 'Gemini' + }, + { + id: 'gemini-2.5-pro-preview-06-05', + name: 'gemini-2.5-pro-preview-06-05', + provider: '302ai', + group: 'Gemini' + }, + { + id: 'claude-sonnet-4-20250514', + provider: '302ai', + name: 'claude-sonnet-4-20250514', + group: 'Anthropic' + }, + { + id: 'claude-opus-4-20250514', + provider: '302ai', + name: 'claude-opus-4-20250514', + group: 'Anthropic' + }, + { + id: 'jina-clip-v2', + name: 'jina-clip-v2', + provider: '302ai', + group: 'Jina AI' + }, + { + id: 'jina-reranker-m0', + name: 'jina-reranker-m0', + provider: '302ai', + group: 'Jina AI' + } + ], aihubmix: [ { id: 'gpt-4o', diff --git a/src/renderer/src/config/providers.ts b/src/renderer/src/config/providers.ts index 0ae4f1a458..c3dad2c436 100644 --- a/src/renderer/src/config/providers.ts +++ b/src/renderer/src/config/providers.ts @@ -1,6 +1,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 Ai302ProviderLogo from '@renderer/assets/images/providers/302ai.png' import AiHubMixProviderLogo from '@renderer/assets/images/providers/aihubmix.webp' import AlayaNewProviderLogo from '@renderer/assets/images/providers/alayanew.webp' import AnthropicProviderLogo from '@renderer/assets/images/providers/anthropic.png' @@ -49,6 +50,7 @@ import CephalonProviderLogo from '@renderer/assets/images/providers/cephalon.jpe import { TOKENFLUX_HOST } from './constant' const PROVIDER_LOGO_MAP = { + '302ai': Ai302ProviderLogo, openai: OpenAiProviderLogo, silicon: SiliconFlowProviderLogo, deepseek: DeepSeekProviderLogo, @@ -108,6 +110,17 @@ export const NOT_SUPPORTED_REANK_PROVIDERS = ['ollama'] export const ONLY_SUPPORTED_DIMENSION_PROVIDERS = ['ollama', 'infini'] export const PROVIDER_CONFIG = { + '302ai': { + api: { + url: 'https://api.302.ai' + }, + websites: { + official: 'https://302.ai', + apiKey: 'https://dash.302.ai/apis/list', + docs: 'https://302ai.apifox.cn/api-147522039', + models: 'https://302.ai/pricing/' + } + }, openai: { api: { url: 'https://api.openai.com' diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index e493e3d96b..a7201ec1cb 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -1019,7 +1019,8 @@ "zhipu": "ZHIPU AI", "voyageai": "Voyage AI", "qiniu": "Qiniu AI", - "tokenflux": "TokenFlux" + "tokenflux": "TokenFlux", + "302ai": "302.AI" }, "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 808f4ac8c7..b1aef10846 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -1017,7 +1017,8 @@ "zhipu": "智譜AI", "voyageai": "Voyage AI", "qiniu": "七牛云 AI 推理", - "tokenflux": "TokenFlux" + "tokenflux": "TokenFlux", + "302ai": "302.AI" }, "restore": { "confirm": "データを復元しますか?", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index c242b8d552..13b1d21ab4 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -1018,7 +1018,8 @@ "zhipu": "ZHIPU AI", "voyageai": "Voyage AI", "qiniu": "Qiniu AI", - "tokenflux": "TokenFlux" + "tokenflux": "TokenFlux", + "302ai": "302.AI" }, "restore": { "confirm": "Вы уверены, что хотите восстановить данные?", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 284666183a..f2cee104a4 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -1019,7 +1019,8 @@ "zhipu": "智谱AI", "voyageai": "Voyage AI", "qiniu": "七牛云 AI 推理", - "tokenflux": "TokenFlux" + "tokenflux": "TokenFlux", + "302ai": "302.AI" }, "restore": { "confirm": "确定要恢复数据吗?", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 6b493a46b8..1a6d1371e5 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -1019,7 +1019,8 @@ "zhipu": "智譜 AI", "voyageai": "Voyage AI", "qiniu": "七牛雲 AI 推理", - "tokenflux": "TokenFlux" + "tokenflux": "TokenFlux", + "302ai": "302.AI" }, "restore": { "confirm": "確定要復原資料嗎?", diff --git a/src/renderer/src/store/llm.ts b/src/renderer/src/store/llm.ts index a88737965f..377760aa53 100644 --- a/src/renderer/src/store/llm.ts +++ b/src/renderer/src/store/llm.ts @@ -26,16 +26,6 @@ export interface LlmState { } export const INITIAL_PROVIDERS: Provider[] = [ - { - id: 'cephalon', - name: 'Cephalon', - type: 'openai', - apiKey: '', - apiHost: 'https://cephalon.cloud/user-center/v1/model', - models: SYSTEM_MODELS.cephalon, - isSystem: true, - enabled: true - }, { id: 'silicon', name: 'Silicon', @@ -146,6 +136,26 @@ export const INITIAL_PROVIDERS: Provider[] = [ isSystem: true, enabled: false }, + { + id: '302ai', + name: '302.AI', + type: 'openai', + apiKey: '', + apiHost: 'https://api.302.ai', + models: SYSTEM_MODELS['302ai'], + isSystem: true, + enabled: true + }, + { + id: 'cephalon', + name: 'Cephalon', + type: 'openai', + apiKey: '', + apiHost: 'https://cephalon.cloud/user-center/v1/model', + models: SYSTEM_MODELS.cephalon, + isSystem: true, + enabled: true + }, { id: 'openrouter', name: 'OpenRouter', diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index f5f54c6b9c..d8e77e903c 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -1566,6 +1566,14 @@ const migrateConfig = { } catch (error) { return state } + }, + '112': (state: RootState) => { + try { + addProvider(state, '302ai') + return state + } catch (error) { + return state + } } }