diff --git a/src/renderer/src/assets/images/providers/lanyun.png b/src/renderer/src/assets/images/providers/lanyun.png new file mode 100644 index 0000000000..30eb729136 Binary files /dev/null and b/src/renderer/src/assets/images/providers/lanyun.png differ diff --git a/src/renderer/src/config/models.ts b/src/renderer/src/config/models.ts index 679511f9c9..50b5b368d8 100644 --- a/src/renderer/src/config/models.ts +++ b/src/renderer/src/config/models.ts @@ -2179,7 +2179,8 @@ export const SYSTEM_MODELS: Record = { name: 'DeepSeek-R1满血版', group: 'DeepSeek' } - ] + ], + lanyun: [] } export const TEXT_TO_IMAGES_MODELS = [ diff --git a/src/renderer/src/config/providers.ts b/src/renderer/src/config/providers.ts index 629e6827fd..fceffa3be8 100644 --- a/src/renderer/src/config/providers.ts +++ b/src/renderer/src/config/providers.ts @@ -22,6 +22,7 @@ import GroqProviderLogo from '@renderer/assets/images/providers/groq.png' import HyperbolicProviderLogo from '@renderer/assets/images/providers/hyperbolic.png' import InfiniProviderLogo from '@renderer/assets/images/providers/infini.png' import JinaProviderLogo from '@renderer/assets/images/providers/jina.png' +import LanyunProviderLogo from '@renderer/assets/images/providers/lanyun.png' import LMStudioProviderLogo from '@renderer/assets/images/providers/lmstudio.png' import MinimaxProviderLogo from '@renderer/assets/images/providers/minimax.png' import MistralProviderLogo from '@renderer/assets/images/providers/mistral.png' @@ -98,7 +99,8 @@ const PROVIDER_LOGO_MAP = { voyageai: VoyageAIProviderLogo, qiniu: QiniuProviderLogo, tokenflux: TokenFluxProviderLogo, - cephalon: CephalonProviderLogo + cephalon: CephalonProviderLogo, + lanyun: LanyunProviderLogo } as const export function getProviderLogo(providerId: string) { @@ -638,5 +640,16 @@ export const PROVIDER_CONFIG = { docs: 'https://cephalon.cloud/apitoken/1864244127731589124', models: 'https://cephalon.cloud/model' } + }, + lanyun: { + api: { + url: 'https://maas-api.lanyun.net' + }, + websites: { + official: 'https://lanyun.net', + apiKey: 'https://maas.lanyun.net/api/#/system/apiKey', + docs: 'https://archive.lanyun.net/maas/doc/', + models: 'https://maas.lanyun.net/api/#/model/modelSquare' + } } } diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 74d4e2428d..dffaa3769e 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -1019,7 +1019,8 @@ "voyageai": "Voyage AI", "qiniu": "Qiniu AI", "tokenflux": "TokenFlux", - "302ai": "302.AI" + "302ai": "302.AI", + "lanyun": "LANYUN" }, "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 5e9b02e2f6..d155eea480 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -1019,7 +1019,8 @@ "qiniu": "七牛云 AI 推理", "tokenflux": "TokenFlux", "302ai": "302.AI", - "cephalon": "Cephalon" + "cephalon": "Cephalon", + "lanyun": "LANYUN" }, "restore": { "confirm": "データを復元しますか?", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index 601f965f8a..444440f604 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -1019,7 +1019,8 @@ "voyageai": "Voyage AI", "qiniu": "Qiniu AI", "tokenflux": "TokenFlux", - "302ai": "302.AI" + "302ai": "302.AI", + "lanyun": "LANYUN" }, "restore": { "confirm": "Вы уверены, что хотите восстановить данные?", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index c141207bae..09ba5b4bdb 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -1019,7 +1019,8 @@ "voyageai": "Voyage AI", "qiniu": "七牛云 AI 推理", "tokenflux": "TokenFlux", - "302ai": "302.AI" + "302ai": "302.AI", + "lanyun": "蓝耘科技" }, "restore": { "confirm": "确定要恢复数据吗?", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index e439528328..bae3c5331c 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -1019,7 +1019,8 @@ "voyageai": "Voyage AI", "qiniu": "七牛雲 AI 推理", "tokenflux": "TokenFlux", - "302ai": "302.AI" + "302ai": "302.AI", + "lanyun": "藍耘" }, "restore": { "confirm": "確定要復原資料嗎?", diff --git a/src/renderer/src/store/llm.ts b/src/renderer/src/store/llm.ts index 1ca1dad6ae..8b3e5ed053 100644 --- a/src/renderer/src/store/llm.ts +++ b/src/renderer/src/store/llm.ts @@ -146,6 +146,16 @@ export const INITIAL_PROVIDERS: Provider[] = [ isSystem: true, enabled: false }, + { + id: 'lanyun', + name: 'LANYUN', + type: 'openai', + apiKey: '', + apiHost: 'https://maas-api.lanyun.net', + models: SYSTEM_MODELS.lanyun, + isSystem: true, + enabled: false + }, { id: 'openrouter', name: 'OpenRouter', diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index 33cd1856e5..3cc36c7d99 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -1563,8 +1563,10 @@ const migrateConfig = { try { addProvider(state, 'cephalon') addProvider(state, '302ai') + addProvider(state, 'lanyun') state.llm.providers = moveProvider(state.llm.providers, 'cephalon', 13) state.llm.providers = moveProvider(state.llm.providers, '302ai', 14) + state.llm.providers = moveProvider(state.llm.providers, 'lanyun', 15) return state } catch (error) { return state