新增:模型服务商together (#148)

* 新增:模型服务商together

新增:模型服务商together
修复:providers为null或undefined时会抛出错误。

* 新增服务商:fireworks、360智脑、英伟达

* 新增:若干模型头像

* 谷歌其他系列模型匹配头像

* 1

* version+
This commit is contained in:
牡丹凤凰 2024-09-30 13:30:09 +08:00 committed by GitHub
parent 6aaa6bf042
commit a605ae6043
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
32 changed files with 378 additions and 7 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,13 +1,17 @@
import Ai360ModelLogo from '@renderer/assets/images/models/360.png' import Ai360ModelLogo from '@renderer/assets/images/models/360.png'
import Ai360ModelLogoDark from '@renderer/assets/images/models/360_dark.png' import Ai360ModelLogoDark from '@renderer/assets/images/models/360_dark.png'
import AdeptModelLogo from '@renderer/assets/images/models/adept.png'
import AdeptModelLogoDark from '@renderer/assets/images/models/adept_dark.png'
import Ai21ModelLogo from '@renderer/assets/images/models/ai21.png' import Ai21ModelLogo from '@renderer/assets/images/models/ai21.png'
import Ai21ModelLogoDark from '@renderer/assets/images/models/ai21_dark.png' import Ai21ModelLogoDark from '@renderer/assets/images/models/ai21_dark.png'
import AimassModelLogo from '@renderer/assets/images/models/aimass.png' import AimassModelLogo from '@renderer/assets/images/models/aimass.png'
import AimassModelLogoDark from '@renderer/assets/images/models/aimass_dark.png' import AimassModelLogoDark from '@renderer/assets/images/models/aimass_dark.png'
import MinimaxModelLogo from '@renderer/assets/images/models/minimax.png' import AisingaporeModelLogo from '@renderer/assets/images/models/aisingapore.png'
import MinimaxModelLogoDark from '@renderer/assets/images/models/minimax_dark.png' import AisingaporeModelLogoDark from '@renderer/assets/images/models/aisingapore_dark.png'
import BaichuanModelLogo from '@renderer/assets/images/models/baichuan.png' import BaichuanModelLogo from '@renderer/assets/images/models/baichuan.png'
import BaichuanModelLogoDark from '@renderer/assets/images/models/baichuan_dark.png' import BaichuanModelLogoDark from '@renderer/assets/images/models/baichuan_dark.png'
import BigcodeModelLogo from '@renderer/assets/images/models/bigcode.png'
import BigcodeModelLogoDark from '@renderer/assets/images/models/bigcode_dark.png'
import ChatGLMModelLogo from '@renderer/assets/images/models/chatglm.png' import ChatGLMModelLogo from '@renderer/assets/images/models/chatglm.png'
import ChatGLMModelLogoDark from '@renderer/assets/images/models/chatglm_dark.png' import ChatGLMModelLogoDark from '@renderer/assets/images/models/chatglm_dark.png'
import ChatGptModelLogo from '@renderer/assets/images/models/chatgpt.jpeg' import ChatGptModelLogo from '@renderer/assets/images/models/chatgpt.jpeg'
@ -24,6 +28,8 @@ import DalleModelLogoDark from '@renderer/assets/images/models/dalle_dark.png'
import DbrxModelLogo from '@renderer/assets/images/models/dbrx.png' import DbrxModelLogo from '@renderer/assets/images/models/dbrx.png'
import DeepSeekModelLogo from '@renderer/assets/images/models/deepseek.png' import DeepSeekModelLogo from '@renderer/assets/images/models/deepseek.png'
import DeepSeekModelLogoDark from '@renderer/assets/images/models/deepseek_dark.png' import DeepSeekModelLogoDark from '@renderer/assets/images/models/deepseek_dark.png'
import DianxinModelLogo from '@renderer/assets/images/models/dianxin.png'
import DianxinModelLogoDark from '@renderer/assets/images/models/dianxin_dark.png'
import DoubaoModelLogo from '@renderer/assets/images/models/doubao.png' import DoubaoModelLogo from '@renderer/assets/images/models/doubao.png'
import DoubaoModelLogoDark from '@renderer/assets/images/models/doubao_dark.png' import DoubaoModelLogoDark from '@renderer/assets/images/models/doubao_dark.png'
import EmbeddingModelLogo from '@renderer/assets/images/models/embedding.png' import EmbeddingModelLogo from '@renderer/assets/images/models/embedding.png'
@ -36,6 +42,8 @@ import GeminiModelLogo from '@renderer/assets/images/models/gemini.png'
import GeminiModelLogoDark from '@renderer/assets/images/models/gemini_dark.png' import GeminiModelLogoDark from '@renderer/assets/images/models/gemini_dark.png'
import GemmaModelLogo from '@renderer/assets/images/models/gemma.png' import GemmaModelLogo from '@renderer/assets/images/models/gemma.png'
import GemmaModelLogoDark from '@renderer/assets/images/models/gemma_dark.png' import GemmaModelLogoDark from '@renderer/assets/images/models/gemma_dark.png'
import GoogleModelLogo from '@renderer/assets/images/models/google.png'
import GoogleModelLogoDark from '@renderer/assets/images/models/google.png'
import GorkModelLogo from '@renderer/assets/images/models/gork.png' import GorkModelLogo from '@renderer/assets/images/models/gork.png'
import GorkModelLogoDark from '@renderer/assets/images/models/gork_dark.png' import GorkModelLogoDark from '@renderer/assets/images/models/gork_dark.png'
import ChatGPT35ModelLogo from '@renderer/assets/images/models/gpt_3.5.png' import ChatGPT35ModelLogo from '@renderer/assets/images/models/gpt_3.5.png'
@ -51,6 +59,8 @@ import HailuoModelLogo from '@renderer/assets/images/models/hailuo.png'
import HailuoModelLogoDark from '@renderer/assets/images/models/hailuo_dark.png' import HailuoModelLogoDark from '@renderer/assets/images/models/hailuo_dark.png'
import HunyuanModelLogo from '@renderer/assets/images/models/hunyuan.png' import HunyuanModelLogo from '@renderer/assets/images/models/hunyuan.png'
import HunyuanModelLogoDark from '@renderer/assets/images/models/hunyuan_dark.png' import HunyuanModelLogoDark from '@renderer/assets/images/models/hunyuan_dark.png'
import IbmModelLogo from '@renderer/assets/images/models/ibm.png'
import IbmModelLogoDark from '@renderer/assets/images/models/ibm_dark.png'
import InternlmModelLogo from '@renderer/assets/images/models/internlm.png' import InternlmModelLogo from '@renderer/assets/images/models/internlm.png'
import InternlmModelLogoDark from '@renderer/assets/images/models/internlm_dark.png' import InternlmModelLogoDark from '@renderer/assets/images/models/internlm_dark.png'
import KeLingModelLogo from '@renderer/assets/images/models/keling.png' import KeLingModelLogo from '@renderer/assets/images/models/keling.png'
@ -63,22 +73,30 @@ import LumaModelLogo from '@renderer/assets/images/models/luma.png'
import LumaModelLogoDark from '@renderer/assets/images/models/luma_dark.png' import LumaModelLogoDark from '@renderer/assets/images/models/luma_dark.png'
import MagicModelLogo from '@renderer/assets/images/models/magic.png' import MagicModelLogo from '@renderer/assets/images/models/magic.png'
import MagicModelLogoDark from '@renderer/assets/images/models/magic_dark.png' import MagicModelLogoDark from '@renderer/assets/images/models/magic_dark.png'
import MediatekModelLogo from '@renderer/assets/images/models/mediatek.png'
import MediatekModelLogoDark from '@renderer/assets/images/models/mediatek_dark.png'
import MicrosoftModelLogo from '@renderer/assets/images/models/microsoft.png' import MicrosoftModelLogo from '@renderer/assets/images/models/microsoft.png'
import MicrosoftModelLogoDark from '@renderer/assets/images/models/microsoft_dark.png' import MicrosoftModelLogoDark from '@renderer/assets/images/models/microsoft_dark.png'
import MidjourneyModelLogo from '@renderer/assets/images/models/midjourney.png' import MidjourneyModelLogo from '@renderer/assets/images/models/midjourney.png'
import MidjourneyModelLogoDark from '@renderer/assets/images/models/midjourney_dark.png' import MidjourneyModelLogoDark from '@renderer/assets/images/models/midjourney_dark.png'
import MinicpmModelLogo from '@renderer/assets/images/models/minicpm.webp' import MinicpmModelLogo from '@renderer/assets/images/models/minicpm.webp'
import MinicpmModelLogoDark from '@renderer/assets/images/models/minicpm.webp' import MinicpmModelLogoDark from '@renderer/assets/images/models/minicpm.webp'
import MinimaxModelLogo from '@renderer/assets/images/models/minimax.png'
import MinimaxModelLogoDark from '@renderer/assets/images/models/minimax_dark.png'
import MistralModelLogo from '@renderer/assets/images/models/mixtral.png' import MistralModelLogo from '@renderer/assets/images/models/mixtral.png'
import MistralModelLogoDark from '@renderer/assets/images/models/mixtral_dark.png' import MistralModelLogoDark from '@renderer/assets/images/models/mixtral_dark.png'
import MoonshotModelLogo from '@renderer/assets/images/models/moonshot.png' import MoonshotModelLogo from '@renderer/assets/images/models/moonshot.png'
import MoonshotModelLogoDark from '@renderer/assets/images/models/moonshot_dark.png' import MoonshotModelLogoDark from '@renderer/assets/images/models/moonshot_dark.png'
import NousResearchModelLogo from '@renderer/assets/images/models/nousresearch.png' import NousResearchModelLogo from '@renderer/assets/images/models/nousresearch.png'
import NousResearchModelLogoDark from '@renderer/assets/images/models/nousresearch.png' import NousResearchModelLogoDark from '@renderer/assets/images/models/nousresearch.png'
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 PalmModelLogo from '@renderer/assets/images/models/palm.png'
import PalmModelLogoDark from '@renderer/assets/images/models/palm_dark.png' import PalmModelLogoDark from '@renderer/assets/images/models/palm_dark.png'
import QwenModelLogo from '@renderer/assets/images/models/qwen.png' import QwenModelLogo from '@renderer/assets/images/models/qwen.png'
import QwenModelLogoDark from '@renderer/assets/images/models/qwen_dark.png' import QwenModelLogoDark from '@renderer/assets/images/models/qwen_dark.png'
import RakutenaiModelLogo from '@renderer/assets/images/models/rakutenai.png'
import RakutenaiModelLogoDark from '@renderer/assets/images/models/rakutenai_dark.png'
import SparkDeskModelLogo from '@renderer/assets/images/models/sparkdesk.png' import SparkDeskModelLogo from '@renderer/assets/images/models/sparkdesk.png'
import SparkDeskModelLogoDark from '@renderer/assets/images/models/sparkdesk_dark.png' import SparkDeskModelLogoDark from '@renderer/assets/images/models/sparkdesk_dark.png'
import StabilityModelLogo from '@renderer/assets/images/models/stability.png' import StabilityModelLogo from '@renderer/assets/images/models/stability.png'
@ -87,6 +105,10 @@ import StepModelLogo from '@renderer/assets/images/models/step.png'
import StepModelLogoDark from '@renderer/assets/images/models/step_dark.png' import StepModelLogoDark from '@renderer/assets/images/models/step_dark.png'
import SunoModelLogo from '@renderer/assets/images/models/suno.png' import SunoModelLogo from '@renderer/assets/images/models/suno.png'
import SunoModelLogoDark from '@renderer/assets/images/models/suno_dark.png' import SunoModelLogoDark from '@renderer/assets/images/models/suno_dark.png'
import TeleModelLogo from '@renderer/assets/images/models/tele.png'
import TeleModelLogoDark from '@renderer/assets/images/models/tele_dark.png'
import UpstageModelLogo from '@renderer/assets/images/models/upstage.png'
import UpstageModelLogoDark from '@renderer/assets/images/models/upstage_dark.png'
import ViduModelLogo from '@renderer/assets/images/models/vidu.png' import ViduModelLogo from '@renderer/assets/images/models/vidu.png'
import ViduModelLogoDark from '@renderer/assets/images/models/vidu_dark.png' import ViduModelLogoDark from '@renderer/assets/images/models/vidu_dark.png'
import WenxinModelLogo from '@renderer/assets/images/models/wenxin.png' import WenxinModelLogo from '@renderer/assets/images/models/wenxin.png'
@ -183,6 +205,7 @@ export function getModelLogo(modelId: string) {
sparkdesk: isLight ? SparkDeskModelLogo : SparkDeskModelLogoDark, sparkdesk: isLight ? SparkDeskModelLogo : SparkDeskModelLogoDark,
generalv: isLight ? SparkDeskModelLogo : SparkDeskModelLogoDark, generalv: isLight ? SparkDeskModelLogo : SparkDeskModelLogoDark,
wizardlm: isLight ? MicrosoftModelLogo : MicrosoftModelLogoDark, wizardlm: isLight ? MicrosoftModelLogo : MicrosoftModelLogoDark,
microsoft: isLight ? MicrosoftModelLogo : MicrosoftModelLogoDark,
hermes: isLight ? NousResearchModelLogo : NousResearchModelLogoDark, hermes: isLight ? NousResearchModelLogo : NousResearchModelLogoDark,
gryphe: isLight ? GrypheModelLogo : GrypheModelLogoDark, gryphe: isLight ? GrypheModelLogo : GrypheModelLogoDark,
suno: isLight ? SunoModelLogo : SunoModelLogoDark, suno: isLight ? SunoModelLogo : SunoModelLogoDark,
@ -192,7 +215,18 @@ export function getModelLogo(modelId: string) {
'vidu-': isLight ? ViduModelLogo : ViduModelLogoDark, 'vidu-': isLight ? ViduModelLogo : ViduModelLogoDark,
ai21: isLight ? Ai21ModelLogo : Ai21ModelLogoDark, ai21: isLight ? Ai21ModelLogo : Ai21ModelLogoDark,
'jamba-': isLight ? Ai21ModelLogo : Ai21ModelLogoDark, 'jamba-': isLight ? Ai21ModelLogo : Ai21ModelLogoDark,
mythomax: isLight ? GrypheModelLogo : GrypheModelLogoDark mythomax: isLight ? GrypheModelLogo : GrypheModelLogoDark,
nvidia: isLight ? NvidiaModelLogo : NvidiaModelLogoDark,
dianxin: isLight ? DianxinModelLogo : DianxinModelLogoDark,
tele: isLight ? TeleModelLogo : TeleModelLogoDark,
adept: isLight ? AdeptModelLogo : AdeptModelLogoDark,
aisingapore: isLight ? AisingaporeModelLogo : AisingaporeModelLogoDark,
bigcode: isLight ? BigcodeModelLogo : BigcodeModelLogoDark,
mediatek: isLight ? MediatekModelLogo : MediatekModelLogoDark,
upstage: isLight ? UpstageModelLogo : UpstageModelLogoDark,
rakutenai: isLight ? RakutenaiModelLogo : RakutenaiModelLogoDark,
ibm: isLight ? IbmModelLogo : IbmModelLogoDark,
'google/': isLight ? GoogleModelLogo : GoogleModelLogoDark
} }
for (const key in logoMap) { for (const key in logoMap) {
@ -207,6 +241,30 @@ export function getModelLogo(modelId: string) {
export const SYSTEM_MODELS: Record<string, Model[]> = { export const SYSTEM_MODELS: Record<string, Model[]> = {
ollama: [], ollama: [],
silicon: [ silicon: [
{
id: 'Qwen/Qwen2.5-72B-Instruct',
provider: 'silicon',
name: 'Qwen2.5-72B-Instruct',
group: 'Qwen2.5'
},
{
id: 'Qwen/Qwen2.5-32B-Instruct',
provider: 'silicon',
name: 'Qwen2.5-32B-Instruct',
group: 'Qwen2.5'
},
{
id: 'Qwen/Qwen2.5-14B-Instruct',
provider: 'silicon',
name: 'Qwen2.5-14B-Instruct',
group: 'Qwen2.5'
},
{
id: 'Qwen/Qwen2.5-7B-Instruct',
provider: 'silicon',
name: 'Qwen2.5-7B-Instruct',
group: 'Qwen2.5'
},
{ {
id: 'Qwen/Qwen2-7B-Instruct', id: 'Qwen/Qwen2-7B-Instruct',
provider: 'silicon', provider: 'silicon',
@ -262,6 +320,24 @@ export const SYSTEM_MODELS: Record<string, Model[]> = {
provider: 'openai', provider: 'openai',
name: ' GPT-4', name: ' GPT-4',
group: 'GPT 4' group: 'GPT 4'
},
{
id: 'gpt-3.5-turbo',
provider: 'openai',
name: ' GPT-3.5-turbo',
group: 'GPT 3.5'
},
{
id: 'o1-mini',
provider: 'openai',
name: ' o1-mini',
group: 'o1'
},
{
id: 'o1-preview',
provider: 'openai',
name: ' o1-preview',
group: 'o1'
} }
], ],
gemini: [ gemini: [
@ -318,6 +394,32 @@ export const SYSTEM_MODELS: Record<string, Model[]> = {
group: 'DeepSeek Coder' group: 'DeepSeek Coder'
} }
], ],
together: [
{
id: 'meta-llama/Llama-3.2-11B-Vision-Instruct-Turbo',
provider: 'together',
name: 'Llama-3.2-11B-Vision',
group: 'Llama-3.2'
},
{
id: 'meta-llama/Llama-3.2-90B-Vision-Instruct-Turbo',
provider: 'together',
name: 'Llama-3.2-90B-Vision',
group: 'Llama-3.2'
},
{
id: 'google/gemma-2-27b-it',
provider: 'together',
name: 'gemma-2-27b-it',
group: 'Gemma'
},
{
id: 'google/gemma-2-9b-it',
provider: 'together',
name: 'gemma-2-9b-it',
group: 'Gemma'
}
],
ocoolai: [ ocoolai: [
{ {
id: 'gpt-4o', id: 'gpt-4o',
@ -396,6 +498,48 @@ export const SYSTEM_MODELS: Record<string, Model[]> = {
provider: 'ocoolai', provider: 'ocoolai',
name: 'claude-3-haiku-20240307', name: 'claude-3-haiku-20240307',
group: 'Anthropic' group: 'Anthropic'
},
{
id: 'gemini-pro',
provider: 'ocoolai',
name: 'gemini-pro',
group: 'Gemini'
},
{
id: 'gemini-1.5-pro',
provider: 'ocoolai',
name: 'gemini-1.5-pro',
group: 'Gemini'
},
{
id: 'meta-llama/Llama-3.2-90B-Vision-Instruct-Turbo',
provider: 'ocoolai',
name: 'Llama-3.2-90B-Vision-Instruct-Turbo',
group: 'Llama-3.2'
},
{
id: 'meta-llama/Llama-3.2-11B-Vision-Instruct-Turbo',
provider: 'ocoolai',
name: 'Llama-3.2-11B-Vision-Instruct-Turbo',
group: 'Llama-3.2'
},
{
id: 'meta-llama/Llama-3.2-3B-Vision-Instruct-Turbo',
provider: 'ocoolai',
name: 'Llama-3.2-3B-Vision-Instruct-Turbo',
group: 'Llama-3.2'
},
{
id: 'google/gemma-2-27b-it',
provider: 'ocoolai',
name: 'gemma-2-27b-it',
group: 'Gemma'
},
{
id: 'google/gemma-2-9b-it',
provider: 'ocoolai',
name: 'gemma-2-9b-it',
group: 'Gemma'
} }
], ],
github: [ github: [
@ -609,6 +753,48 @@ export const SYSTEM_MODELS: Record<string, Model[]> = {
group: 'Llama3' group: 'Llama3'
} }
], ],
fireworks: [
{
id: 'accounts/fireworks/models/mythomax-l2-13b',
provider: 'fireworks',
name: 'mythomax-l2-13b',
group: 'Gryphe'
},
{
id: 'accounts/fireworks/models/llama-v3-70b-instruct',
provider: 'fireworks',
name: 'Llama-3-70B-Instruct',
group: 'Llama3'
}
],
zhinao: [
{
id: '360gpt-pro',
provider: 'zhinao',
name: '360gpt-pro',
group: '360Gpt'
},
{
id: '360gpt-turbo',
provider: 'zhinao',
name: '360gpt-turbo',
group: '360Gpt'
}
],
nvidia: [
{
id: '01-ai/yi-large',
provider: 'nvidia',
name: 'yi-large',
group: 'Yi'
},
{
id: 'meta/llama-3.1-405b-instruct',
provider: 'nvidia',
name: 'llama-3.1-405b-instruct',
group: 'llama-3.1'
}
],
openrouter: [ openrouter: [
{ {
id: 'google/gemma-2-9b-it:free', id: 'google/gemma-2-9b-it:free',

View File

@ -1,21 +1,25 @@
import ZhinaoProviderLogo from '@renderer/assets/images/models/360.png'
import AiHubMixProviderLogo from '@renderer/assets/images/providers/aihubmix.jpg' import AiHubMixProviderLogo from '@renderer/assets/images/providers/aihubmix.jpg'
import AnthropicProviderLogo from '@renderer/assets/images/providers/anthropic.png' import AnthropicProviderLogo from '@renderer/assets/images/providers/anthropic.png'
import BaichuanProviderLogo from '@renderer/assets/images/providers/baichuan.png' import BaichuanProviderLogo from '@renderer/assets/images/providers/baichuan.png'
import BytedanceProviderLogo from '@renderer/assets/images/providers/bytedance.png' import BytedanceProviderLogo from '@renderer/assets/images/providers/bytedance.png'
import DashScopeProviderLogo from '@renderer/assets/images/providers/dashscope.png' import DashScopeProviderLogo from '@renderer/assets/images/providers/dashscope.png'
import DeepSeekProviderLogo from '@renderer/assets/images/providers/deepseek.png' import DeepSeekProviderLogo from '@renderer/assets/images/providers/deepseek.png'
import FireworksProviderLogo from '@renderer/assets/images/providers/fireworks.png'
import GithubProviderLogo from '@renderer/assets/images/providers/github.png' import GithubProviderLogo from '@renderer/assets/images/providers/github.png'
import GoogleProviderLogo from '@renderer/assets/images/providers/google.png' import GoogleProviderLogo from '@renderer/assets/images/providers/google.png'
import GraphRagProviderLogo from '@renderer/assets/images/providers/graph-rag.png' import GraphRagProviderLogo from '@renderer/assets/images/providers/graph-rag.png'
import GroqProviderLogo from '@renderer/assets/images/providers/groq.png' import GroqProviderLogo from '@renderer/assets/images/providers/groq.png'
import MinimaxProviderLogo from '@renderer/assets/images/providers/minimax.png' import MinimaxProviderLogo from '@renderer/assets/images/providers/minimax.png'
import MoonshotProviderLogo from '@renderer/assets/images/providers/moonshot.png' import MoonshotProviderLogo from '@renderer/assets/images/providers/moonshot.png'
import NvidiaProviderLogo from '@renderer/assets/images/providers/nvidia.png'
import OcoolAiProviderLogo from '@renderer/assets/images/providers/ocoolai.png' import OcoolAiProviderLogo from '@renderer/assets/images/providers/ocoolai.png'
import OllamaProviderLogo from '@renderer/assets/images/providers/ollama.png' import OllamaProviderLogo from '@renderer/assets/images/providers/ollama.png'
import OpenAiProviderLogo from '@renderer/assets/images/providers/openai.png' import OpenAiProviderLogo from '@renderer/assets/images/providers/openai.png'
import OpenRouterProviderLogo from '@renderer/assets/images/providers/openrouter.png' import OpenRouterProviderLogo from '@renderer/assets/images/providers/openrouter.png'
import SiliconFlowProviderLogo from '@renderer/assets/images/providers/silicon.png' import SiliconFlowProviderLogo from '@renderer/assets/images/providers/silicon.png'
import StepProviderLogo from '@renderer/assets/images/providers/step.png' import StepProviderLogo from '@renderer/assets/images/providers/step.png'
import TogetherProviderLogo from '@renderer/assets/images/providers/together.png'
import ZeroOneProviderLogo from '@renderer/assets/images/providers/zero-one.png' import ZeroOneProviderLogo from '@renderer/assets/images/providers/zero-one.png'
import ZhipuProviderLogo from '@renderer/assets/images/providers/zhipu.png' import ZhipuProviderLogo from '@renderer/assets/images/providers/zhipu.png'
@ -61,6 +65,15 @@ export function getProviderLogo(providerId: string) {
return GithubProviderLogo return GithubProviderLogo
case 'ocoolai': case 'ocoolai':
return OcoolAiProviderLogo return OcoolAiProviderLogo
case 'together':
return TogetherProviderLogo
case 'fireworks':
return FireworksProviderLogo
case 'zhinao':
return ZhinaoProviderLogo
case 'nvidia':
return NvidiaProviderLogo
default: default:
return undefined return undefined
} }
@ -122,6 +135,17 @@ export const PROVIDER_CONFIG = {
models: 'https://docs.ooo.cool/guides/jiage/' models: 'https://docs.ooo.cool/guides/jiage/'
} }
}, },
together: {
api: {
url: 'https://api.tohgether.xyz'
},
websites: {
official: 'https://www.together.ai/',
apiKey: 'https://api.together.ai/settings/api-keys',
docs: 'https://docs.together.ai/docs/introduction',
models: 'https://docs.together.ai/docs/chat-models'
}
},
github: { github: {
api: { api: {
url: 'https://models.inference.ai.azure.com/' url: 'https://models.inference.ai.azure.com/'
@ -279,5 +303,38 @@ export const PROVIDER_CONFIG = {
docs: 'https://doc.aihubmix.com/', docs: 'https://doc.aihubmix.com/',
models: 'https://aihubmix.com/models' models: 'https://aihubmix.com/models'
} }
},
fireworks: {
api: {
url: 'https://api.fireworks.ai/inference'
},
websites: {
official: 'https://fireworks.ai/',
apiKey: 'https://fireworks.ai/account/api-keys',
docs: 'https://docs.fireworks.ai/getting-started/introduction',
models: 'https://fireworks.ai/dashboard/models'
}
},
zhinao: {
api: {
url: 'https://api.360.cn'
},
websites: {
official: 'https://ai.360.com/',
apiKey: 'https://ai.360.com/platform/keys',
docs: 'https://ai.360.com/platform/docs/overview',
models: 'https://ai.360.com/platform/limit'
}
},
navida: {
api: {
url: 'https://integrate.api.nvidia.com'
},
websites: {
official: 'https://ai.360.com/',
apiKey: 'https://build.nvidia.com/meta/llama-3_1-405b-instruct',
docs: 'https://docs.api.nvidia.com/nim/reference/llm-apis',
models: 'https://build.nvidia.com/nim'
}
} }
} }

View File

@ -142,6 +142,10 @@
"tag.user": "Mine" "tag.user": "Mine"
}, },
"provider": { "provider": {
"nvidia": "Nvidia",
"zhinao": "360AI",
"fireworks": "Fireworks",
"together": "Together",
"openai": "OpenAI", "openai": "OpenAI",
"gemini": "Gemini", "gemini": "Gemini",
"deepseek": "DeepSeek", "deepseek": "DeepSeek",

View File

@ -142,6 +142,10 @@
"tag.user": "我的" "tag.user": "我的"
}, },
"provider": { "provider": {
"nvidia": "英伟达",
"zhinao": "360智脑",
"fireworks": "Fireworks",
"together": "Together",
"openai": "OpenAI", "openai": "OpenAI",
"gemini": "Gemini", "gemini": "Gemini",
"deepseek": "深度求索", "deepseek": "深度求索",

View File

@ -142,6 +142,10 @@
"tag.user": "我的" "tag.user": "我的"
}, },
"provider": { "provider": {
"nvidia": "輝達",
"zhinao": "360智腦",
"fireworks": "Fireworks",
"together": "Together",
"openai": "OpenAI", "openai": "OpenAI",
"gemini": "Gemini", "gemini": "Gemini",
"deepseek": "深度求索", "deepseek": "深度求索",

View File

@ -18,8 +18,8 @@ const SelectModelDropdown: FC<Props & PropsWithChildren> = ({ children, model, o
const { t } = useTranslation() const { t } = useTranslation()
const { providers } = useProviders() const { providers } = useProviders()
const items: MenuProps['items'] = providers const items: MenuProps['items'] = (providers || [])
.filter((p) => p.models.length > 0) .filter((p) => p.models && p.models.length > 0)
.map((p) => ({ .map((p) => ({
key: p.id, key: p.id,
label: p.isSystem ? t(`provider.${p.id}`) : p.name, label: p.isSystem ? t(`provider.${p.id}`) : p.name,

View File

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

View File

@ -82,7 +82,7 @@ const initialState: LlmState = {
name: 'ocoolAI', name: 'ocoolAI',
apiKey: '', apiKey: '',
apiHost: 'https://one.ooo.cool', apiHost: 'https://one.ooo.cool',
models: [], models: SYSTEM_MODELS.ocoolai,
isSystem: true, isSystem: true,
enabled: false enabled: false
}, },
@ -194,6 +194,42 @@ const initialState: LlmState = {
isSystem: true, isSystem: true,
enabled: false enabled: false
}, },
{
id: 'together',
name: 'Together',
apiKey: '',
apiHost: 'https://api.together.xyz',
models: SYSTEM_MODELS.together,
isSystem: true,
enabled: false
},
{
id: 'fireworks',
name: 'Fireworks',
apiKey: '',
apiHost: 'https://api.fireworks.ai/inference',
models: SYSTEM_MODELS.fireworks,
isSystem: true,
enabled: false
},
{
id: 'zhinao',
name: 'zhinao',
apiKey: '',
apiHost: 'https://api.360.cn',
models: SYSTEM_MODELS.zhinao,
isSystem: true,
enabled: false
},
{
id: 'nvidia',
name: 'nvidia',
apiKey: '',
apiHost: 'https://integrate.api.nvidia.com',
models: SYSTEM_MODELS.nvidia,
isSystem: true,
enabled: false
},
{ {
id: 'aihubmix', id: 'aihubmix',
name: 'AiHubMix', name: 'AiHubMix',

View File

@ -442,6 +442,86 @@ const migrateConfig = {
renderInputMessageAsMarkdown: true renderInputMessageAsMarkdown: true
} }
} }
},
'28': (state: RootState) => {
return {
...state,
llm: {
...state.llm,
providers: [
...state.llm.providers,
{
id: 'together',
name: 'Together',
apiKey: '',
apiHost: 'https://api.together.xyz',
models: [],
isSystem: true,
enabled: false
}
]
}
}
},
'29': (state: RootState) => {
return {
...state,
llm: {
...state.llm,
providers: [
...state.llm.providers,
{
id: 'fireworks',
name: 'Fireworks',
apiKey: '',
apiHost: 'https://api.fireworks.ai/inference',
models: [],
isSystem: true,
enabled: false
}
]
}
}
},
'30': (state: RootState) => {
return {
...state,
llm: {
...state.llm,
providers: [
...state.llm.providers,
{
id: 'zhinao',
name: 'zhinao',
apiKey: '',
apiHost: 'https://api.360.cn',
models: [],
isSystem: true,
enabled: false
}
]
}
}
},
'31': (state: RootState) => {
return {
...state,
llm: {
...state.llm,
providers: [
...state.llm.providers,
{
id: 'nvidia',
name: 'nvidia',
apiKey: '',
apiHost: 'https://integrate.api.nvidia.com',
models: [],
isSystem: true,
enabled: false
}
]
}
}
} }
} }