add providers

新增服务商:
1.无问芯穹
2Perplexity
3.DMXAPI

补充部分embedding模型信息
This commit is contained in:
首都爱护动物协会 2025-02-14 03:34:31 +08:00 committed by 亢奋猫
parent bb0cb1cecc
commit 0278228a84
17 changed files with 294 additions and 43 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -226,6 +226,18 @@ export const EMBEDDING_MODELS = [
{
id: 'text-embedding-004',
max_context: 2048
},
{
id: 'deepset-mxbai-embed-de-large-v1',
max_context: 512
},
{
id: 'mxbai-embed-large-v1',
max_context: 512
},
{
id: 'mxbai-embed-2d-large-v1',
max_context: 512
}
]

View File

@ -99,6 +99,8 @@ import NvidiaModelLogo from '@renderer/assets/images/models/nvidia.png'
import NvidiaModelLogoDark from '@renderer/assets/images/models/nvidia_dark.png'
import PalmModelLogo from '@renderer/assets/images/models/palm.png'
import PalmModelLogoDark from '@renderer/assets/images/models/palm_dark.png'
import PerplexityModelLogo from '@renderer/assets/images/models/perplexity.png'
import PerplexityModelLogoDark from '@renderer/assets/images/models/perplexity.png'
import PixtralModelLogo from '@renderer/assets/images/models/pixtral.png'
import PixtralModelLogoDark from '@renderer/assets/images/models/pixtral_dark.png'
import QwenModelLogo from '@renderer/assets/images/models/qwen.png'
@ -184,6 +186,8 @@ export function getModelLogo(modelId: string) {
'babbage-': isLight ? ChatGptModelLogo : ChatGptModelLogoDakr,
'sora-': isLight ? ChatGptModelLogo : ChatGptModelLogoDakr,
'omni-': isLight ? ChatGptModelLogo : ChatGptModelLogoDakr,
'Embedding-V1': isLight ? WenxinModelLogo : WenxinModelLogoDark,
'text-embedding-v': isLight ? QwenModelLogo : QwenModelLogoDark,
'text-embedding': isLight ? ChatGptModelLogo : ChatGptModelLogoDakr,
'davinci-': isLight ? ChatGptModelLogo : ChatGptModelLogoDakr,
glm: isLight ? ChatGLMModelLogo : ChatGLMModelLogoDark,
@ -265,6 +269,8 @@ export function getModelLogo(modelId: string) {
'google/': isLight ? GoogleModelLogo : GoogleModelLogoDark,
hugging: isLight ? HuggingfaceModelLogo : HuggingfaceModelLogoDark,
embedding: isLight ? EmbeddingModelLogo : EmbeddingModelLogoDark,
perplexity: isLight ? PerplexityModelLogo : PerplexityModelLogoDark,
sonar: isLight ? PerplexityModelLogo : PerplexityModelLogoDark,
'bge-': BgeModelLogo
}
@ -658,6 +664,42 @@ export const SYSTEM_MODELS: Record<string, Model[]> = {
}
],
ocoolai: [
{
id: 'deepseek-chat',
provider: 'ocoolai',
name: 'deepseek-chat',
group: 'DeepSeek'
},
{
id: 'deepseek-reasoner',
provider: 'ocoolai',
name: 'deepseek-reasoner',
group: 'DeepSeek'
},
{
id: 'deepseek-ai/DeepSeek-R1',
provider: 'ocoolai',
name: 'deepseek-ai/DeepSeek-R1',
group: 'DeepSeek'
},
{
id: 'HiSpeed/DeepSeek-R1',
provider: 'ocoolai',
name: 'HiSpeed/DeepSeek-R1',
group: 'DeepSeek'
},
{
id: 'ocoolAI/DeepSeek-R1',
provider: 'ocoolai',
name: 'ocoolAI/DeepSeek-R1',
group: 'DeepSeek'
},
{
id: 'Azure/DeepSeek-R1',
provider: 'ocoolai',
name: 'Azure/DeepSeek-R1',
group: 'DeepSeek'
},
{
id: 'gpt-4o',
provider: 'ocoolai',
@ -670,12 +712,6 @@ export const SYSTEM_MODELS: Record<string, Model[]> = {
name: 'gpt-4o-all',
group: 'OpenAI'
},
{
id: 'gpt-4-all',
provider: 'ocoolai',
name: 'gpt-4-all',
group: 'OpenAI'
},
{
id: 'gpt-4o-mini',
provider: 'ocoolai',
@ -688,12 +724,6 @@ export const SYSTEM_MODELS: Record<string, Model[]> = {
name: 'gpt-4',
group: 'OpenAI'
},
{
id: 'gpt-4-turbo',
provider: 'ocoolai',
name: 'gpt-4-turbo',
group: 'OpenAI'
},
{
id: 'o1-preview',
provider: 'ocoolai',
@ -706,12 +736,6 @@ export const SYSTEM_MODELS: Record<string, Model[]> = {
name: 'o1-mini',
group: 'OpenAI'
},
{
id: 'gpt-3.5-turbo',
provider: 'ocoolai',
name: 'gpt-3.5-turbo',
group: 'OpenAI'
},
{
id: 'claude-3-5-sonnet-20240620',
provider: 'ocoolai',
@ -719,21 +743,9 @@ export const SYSTEM_MODELS: Record<string, Model[]> = {
group: 'Anthropic'
},
{
id: 'claude-3-opus-20240229',
id: 'claude-3-5-haiku-20241022',
provider: 'ocoolai',
name: 'claude-3-opus-20240229',
group: 'Anthropic'
},
{
id: 'claude-3-sonnet-20240229',
provider: 'ocoolai',
name: 'claude-3-sonnet-20240229',
group: 'Anthropic'
},
{
id: 'claude-3-haiku-20240307',
provider: 'ocoolai',
name: 'claude-3-haiku-20240307',
name: 'claude-3-5-haiku-20241022',
group: 'Anthropic'
},
{
@ -777,6 +789,30 @@ export const SYSTEM_MODELS: Record<string, Model[]> = {
provider: 'ocoolai',
name: 'gemma-2-9b-it',
group: 'Gemma'
},
{
id: 'Doubao-embedding',
provider: 'ocoolai',
name: 'Doubao-embedding',
group: 'Doubao'
},
{
id: 'text-embedding-3-large',
provider: 'ocoolai',
name: 'text-embedding-3-large',
group: 'Embedding'
},
{
id: 'text-embedding-3-small',
provider: 'ocoolai',
name: 'text-embedding-3-small',
group: 'Embedding'
},
{
id: 'text-embedding-v2',
provider: 'ocoolai',
name: 'text-embedding-v2',
group: 'Embedding'
}
],
github: [
@ -1253,6 +1289,78 @@ export const SYSTEM_MODELS: Record<string, Model[]> = {
name: 'BGE Large EN',
group: 'Embedding'
}
],
dmxapi: [
{
id: 'gpt-3.5-turbo',
provider: 'dmxapi',
name: 'GPT-3.5-Turbo',
group: 'OpenAI'
},
{
id: 'gpt-4o',
provider: 'dmxapi',
name: 'GPT-4o',
group: 'OpenAI'
},
{
id: 'gpt-4o-mini',
provider: 'dmxapi',
name: 'GPT-4o-Mini',
group: 'OpenAI'
},
{
id: 'deepseek-reasoner',
provider: 'dmxapi',
name: 'DeepSeek Reasoner',
group: 'DeepSeek'
},
{
id: 'deepseek-chat',
provider: 'dmxapi',
name: 'DeepSeek Chat',
group: 'DeepSeek'
}
],
perplexity: [
{
id: 'sonar-reasoning-pro',
provider: 'perplexity',
name: 'sonar-reasoning-pro',
group: 'Sonar'
},
{
id: 'sonar-reasoning',
provider: 'perplexity',
name: 'sonar-reasoning',
group: 'Sonar'
},
{
id: 'sonar-pro',
provider: 'perplexity',
name: 'sonar-pro',
group: 'Sonar'
},
{
id: 'sonar',
provider: 'perplexity',
name: 'sonar',
group: 'Sonar'
}
],
infini: [
{
id: 'deepseek-r1',
provider: 'infini',
name: 'deepseek-r1',
group: 'Deepseek'
},
{
id: 'deepseek-v3',
provider: 'infini',
name: 'deepseek-v3',
group: 'Deepseek'
}
]
}

View File

@ -6,8 +6,8 @@ import AnthropicProviderLogo from '@renderer/assets/images/providers/anthropic.p
import BaichuanProviderLogo from '@renderer/assets/images/providers/baichuan.png'
import BaiduCloudProviderLogo from '@renderer/assets/images/providers/baidu-cloud.svg'
import BailianProviderLogo from '@renderer/assets/images/providers/bailian.png'
import BytedanceProviderLogo from '@renderer/assets/images/providers/bytedance.png'
import DeepSeekProviderLogo from '@renderer/assets/images/providers/deepseek.png'
import DmxapiProviderLogo from '@renderer/assets/images/providers/DMXAPI.png'
import FireworksProviderLogo from '@renderer/assets/images/providers/fireworks.png'
import GiteeAIProviderLogo from '@renderer/assets/images/providers/gitee-ai.png'
import GithubProviderLogo from '@renderer/assets/images/providers/github.png'
@ -16,6 +16,7 @@ import GraphRagProviderLogo from '@renderer/assets/images/providers/graph-rag.pn
import GrokProviderLogo from '@renderer/assets/images/providers/grok.png'
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 MinimaxProviderLogo from '@renderer/assets/images/providers/minimax.png'
import MistralProviderLogo from '@renderer/assets/images/providers/mistral.png'
@ -25,13 +26,14 @@ 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'
import PerplexityProviderLogo from '@renderer/assets/images/providers/perplexity.png'
import PPIOProviderLogo from '@renderer/assets/images/providers/ppio.png'
import SiliconFlowProviderLogo from '@renderer/assets/images/providers/silicon.png'
import StepProviderLogo from '@renderer/assets/images/providers/step.png'
import TogetherProviderLogo from '@renderer/assets/images/providers/together.png'
import BytedanceProviderLogo from '@renderer/assets/images/providers/volcengine.png'
import ZeroOneProviderLogo from '@renderer/assets/images/providers/zero-one.png'
import ZhipuProviderLogo from '@renderer/assets/images/providers/zhipu.png'
export function getProviderLogo(providerId: string) {
switch (providerId) {
case 'openai':
@ -100,6 +102,12 @@ export function getProviderLogo(providerId: string) {
return PPIOProviderLogo
case 'baidu-cloud':
return BaiduCloudProviderLogo
case 'dmxapi':
return DmxapiProviderLogo
case 'perplexity':
return PerplexityProviderLogo
case 'infini':
return InfiniProviderLogo
default:
return undefined
}
@ -181,8 +189,8 @@ export const PROVIDER_CONFIG = {
websites: {
official: 'https://one.ocoolai.com/',
apiKey: 'https://one.ocoolai.com/token',
docs: 'https://docs.ooo.cool/',
models: 'https://docs.ooo.cool/guides/jiage/'
docs: 'https://docs.ocoolai.com/',
models: 'https://api.ocoolai.com/info/models/'
}
},
together: {
@ -196,6 +204,39 @@ export const PROVIDER_CONFIG = {
models: 'https://docs.together.ai/docs/chat-models'
}
},
dmxapi: {
api: {
url: 'https://api.dmxapi.com'
},
websites: {
official: 'https://dmxapi.com/',
apiKey: 'https://www.dmxapi.com/token',
docs: 'https://dmxapi.com/models.html#code-block',
models: 'https://www.dmxapi.com/pricing'
}
},
perplexity: {
api: {
url: 'https://api.perplexity.ai/'
},
websites: {
official: 'https://perplexity.ai/',
apiKey: 'https://www.perplexity.ai/settings/api',
docs: 'https://docs.perplexity.ai/home',
models: 'https://docs.perplexity.ai/guides/model-cards'
}
},
infini: {
api: {
url: 'https://cloud.infini-ai.com'
},
websites: {
official: 'https://cloud.infini-ai.com/',
apiKey: 'https://cloud.infini-ai.com/iam/secret/key',
docs: 'https://docs.infini-ai.com/gen-studio/api/maas.html#/operations/chatCompletions',
models: 'https://cloud.infini-ai.com/genstudio/model'
}
},
github: {
api: {
url: 'https://models.inference.ai.azure.com/'

View File

@ -466,6 +466,9 @@
"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": {
"infini": "Infini",
"perplexity": "Perplexity",
"dmxapi": "DMXAPI",
"aihubmix": "AiHubMix",
"anthropic": "Anthropic",
"azure-openai": "Azure OpenAI",
@ -473,7 +476,7 @@
"baidu-cloud": "Baidu Cloud",
"dashscope": "Alibaba Cloud",
"deepseek": "DeepSeek",
"doubao": "Doubao",
"doubao": "Volcengine",
"fireworks": "Fireworks",
"gemini": "Gemini",
"gitee-ai": "Gitee AI",

View File

@ -466,6 +466,9 @@
"title": "あなたは会話を得意とするアシスタントです。ユーザーの会話を10文字以内のタイトルに要約し、ユーザーの主言語と一致していることを確認してください。句読点や特殊記号は使用しないでください。"
},
"provider": {
"infini": "Infini",
"perplexity": "Perplexity",
"dmxapi": "DMXAPI",
"aihubmix": "AiHubMix",
"anthropic": "Anthropic",
"azure-openai": "Azure OpenAI",
@ -473,7 +476,7 @@
"baidu-cloud": "Baidu Cloud",
"dashscope": "Alibaba Cloud",
"deepseek": "DeepSeek",
"doubao": "豆包",
"doubao": "Volcengine",
"fireworks": "Fireworks",
"gemini": "Gemini",
"gitee-ai": "Gitee AI",

View File

@ -466,6 +466,9 @@
"title": "Вы - эксперт в общении, который суммирует разговоры пользователя в 10-символьном заголовке, совпадающем с языком пользователя, без использования знаков препинания и других специальных символов"
},
"provider": {
"infini": "Infini",
"perplexity": "Perplexity",
"dmxapi": "DMXAPI",
"aihubmix": "AiHubMix",
"anthropic": "Anthropic",
"azure-openai": "Azure OpenAI",
@ -473,7 +476,7 @@
"baidu-cloud": "Baidu Cloud",
"dashscope": "Alibaba Cloud",
"deepseek": "DeepSeek",
"doubao": "Doubao",
"doubao": "Volcengine",
"fireworks": "Fireworks",
"gemini": "Gemini",
"gitee-ai": "Gitee AI",

View File

@ -466,6 +466,9 @@
"title": "你是一名擅长会话的助理,你需要将用户的会话总结为 10 个字以内的标题,标题语言与用户的首要语言一致,不要使用标点符号和其他特殊符号"
},
"provider": {
"infini": "无问芯穹",
"perplexity": "Perplexity",
"dmxapi": "DMXAPI",
"aihubmix": "AiHubMix",
"anthropic": "Anthropic",
"azure-openai": "Azure OpenAI",
@ -473,7 +476,7 @@
"baidu-cloud": "百度云千帆",
"dashscope": "阿里云百炼",
"deepseek": "深度求索",
"doubao": "豆包",
"doubao": "火山引擎",
"fireworks": "Fireworks",
"gemini": "Gemini",
"gitee-ai": "Gitee AI",

View File

@ -440,6 +440,9 @@
"title": "Ollama"
},
"paintings": {
"infini": "無問芯穹",
"perplexity": "Perplexity",
"dmxapi": "DMXAPI",
"button.delete.image": "刪除繪圖",
"button.delete.image.confirm": "確定要刪除此繪圖嗎?",
"button.new.image": "新繪圖",
@ -473,7 +476,7 @@
"baidu-cloud": "百度云千帆",
"dashscope": "阿里雲百鍊",
"deepseek": "深度求索",
"doubao": "豆包",
"doubao": "火山引擎",
"fireworks": "Fireworks",
"gemini": "Gemini",
"gitee-ai": "Gitee AI",

View File

@ -30,7 +30,7 @@ const persistedReducer = persistReducer(
{
key: 'cherry-studio',
storage,
version: 66,
version: 67,
blacklist: ['runtime'],
migrate
},

View File

@ -58,7 +58,7 @@ const initialState: LlmState = {
name: 'ocoolAI',
type: 'openai',
apiKey: '',
apiHost: 'https://one.ooo.cool',
apiHost: 'https://api.ocoolai.com',
models: SYSTEM_MODELS.ocoolai,
isSystem: true,
enabled: false
@ -134,6 +134,16 @@ const initialState: LlmState = {
isSystem: true,
enabled: false
},
{
id: 'dmxapi',
name: 'DMXAPI',
type: 'openai',
apiKey: '',
apiHost: 'https://api.dmxapi.com',
models: SYSTEM_MODELS.dmxapi,
isSystem: true,
enabled: false
},
{
id: 'yi',
name: 'Yi',
@ -343,6 +353,26 @@ const initialState: LlmState = {
models: SYSTEM_MODELS.ppio,
isSystem: true,
enabled: false
},
{
id: 'perplexity',
name: 'Perplexity',
type: 'openai',
apiKey: '',
apiHost: 'https://api.perplexity.ai/',
models: SYSTEM_MODELS.perplexity,
isSystem: true,
enabled: false
},
{
id: 'infini',
name: 'Infini',
type: 'openai',
apiKey: '',
apiHost: 'https://cloud.infini-ai.com/maas',
models: SYSTEM_MODELS.infini,
isSystem: true,
enabled: false
}
],
settings: {

View File

@ -959,6 +959,51 @@ const migrateConfig = {
}
}
return state
},
'67': (state: RootState) => {
state.llm.providers.push(
{
id: 'perplexity',
name: 'Perplexity',
type: 'openai',
apiKey: '',
apiHost: 'https://api.perplexity.ai/',
models: SYSTEM_MODELS.perplexity,
isSystem: true,
enabled: false
},
{
id: 'infini',
name: 'Infini',
type: 'openai',
apiKey: '',
apiHost: 'https://cloud.infini-ai.com/maas',
models: SYSTEM_MODELS.infini,
isSystem: true,
enabled: false
},
{
id: 'dmxapi',
name: 'DMXAPI',
type: 'openai',
apiKey: '',
apiHost: 'https://api.dmxapi.com',
models: SYSTEM_MODELS.dmxapi,
isSystem: true,
enabled: false
}
)
state.llm.providers = state.llm.providers.filter((provider) => provider.id !== 'graphrag-kylin-mountain')
if (state.minapps) {
const aistudio = DEFAULT_MIN_APPS.find((app) => app.id === 'aistudio')
if (aistudio) {
state.minapps.enabled.push(aistudio)
}
}
return state
}
}