import Ai360ModelLogo from '@renderer/assets/images/models/360.png' import Ai360ModelLogoDark from '@renderer/assets/images/models/360_dark.png' import Ai21ModelLogo from '@renderer/assets/images/models/ai21.png' import Ai21ModelLogoDark from '@renderer/assets/images/models/ai21_dark.png' import AimassModelLogo from '@renderer/assets/images/models/aimass.png' import AimassModelLogoDark from '@renderer/assets/images/models/aimass_dark.png' import BaichuanModelLogo from '@renderer/assets/images/models/baichuan.png' import BaichuanModelLogoDark from '@renderer/assets/images/models/baichuan_dark.png' import ChatGLMModelLogo from '@renderer/assets/images/models/chatglm.png' import ChatGLMModelLogoDark from '@renderer/assets/images/models/chatglm_dark.png' import ChatGptModelLogo from '@renderer/assets/images/models/chatgpt.jpeg' import ClaudeModelLogo from '@renderer/assets/images/models/claude.png' import ClaudeModelLogoDark from '@renderer/assets/images/models/claude_dark.png' import CodegeexModelLogo from '@renderer/assets/images/models/codegeex.png' import CodegeexModelLogoDark from '@renderer/assets/images/models/codegeex_dark.png' import CohereModelLogo from '@renderer/assets/images/models/cohere.png' import CohereModelLogoDark from '@renderer/assets/images/models/cohere_dark.png' import CopilotModelLogo from '@renderer/assets/images/models/copilot.png' import CopilotModelLogoDark from '@renderer/assets/images/models/copilot_dark.png' import DalleModelLogo from '@renderer/assets/images/models/dalle.png' import DalleModelLogoDark from '@renderer/assets/images/models/dalle_dark.png' import DbrxModelLogo from '@renderer/assets/images/models/dbrx.png' import DeepSeekModelLogo from '@renderer/assets/images/models/deepseek.png' import DeepSeekModelLogoDark from '@renderer/assets/images/models/deepseek_dark.png' import DoubaoModelLogo from '@renderer/assets/images/models/doubao.png' import DoubaoModelLogoDark from '@renderer/assets/images/models/doubao_dark.png' import EmbeddingModelLogo from '@renderer/assets/images/models/embedding.png' import EmbeddingModelLogoDark from '@renderer/assets/images/models/embedding.png' import FlashaudioModelLogo from '@renderer/assets/images/models/flashaudio.png' import FlashaudioModelLogoDark from '@renderer/assets/images/models/flashaudio_dark.png' import FluxModelLogo from '@renderer/assets/images/models/flux.png' import FluxModelLogoDark from '@renderer/assets/images/models/flux_dark.png' import GeminiModelLogo from '@renderer/assets/images/models/gemini.png' import GeminiModelLogoDark from '@renderer/assets/images/models/gemini_dark.png' import GemmaModelLogo from '@renderer/assets/images/models/gemma.png' import GemmaModelLogoDark from '@renderer/assets/images/models/gemma_dark.png' import GorkModelLogo from '@renderer/assets/images/models/gork.png' import GorkModelLogoDark from '@renderer/assets/images/models/gork_dark.png' import ChatGPT35ModelLogo from '@renderer/assets/images/models/gpt_3.5.png' import ChatGPT4ModelLogo from '@renderer/assets/images/models/gpt_4.png' import ChatGptModelLogoDakr from '@renderer/assets/images/models/gpt_dark.png' import ChatGPT35ModelLogoDark from '@renderer/assets/images/models/gpt_dark.png' import ChatGPT4ModelLogoDark from '@renderer/assets/images/models/gpt_dark.png' import ChatGPTo1ModelLogoDark from '@renderer/assets/images/models/gpt_dark.png' import ChatGPTo1ModelLogo from '@renderer/assets/images/models/gpt_o1.png' import GrypheModelLogo from '@renderer/assets/images/models/gryphe.png' import GrypheModelLogoDark from '@renderer/assets/images/models/gryphe_dark.png' import HailuoModelLogo from '@renderer/assets/images/models/hailuo.png' import HailuoModelLogoDark from '@renderer/assets/images/models/hailuo_dark.png' import HunyuanModelLogo from '@renderer/assets/images/models/hunyuan.png' import HunyuanModelLogoDark from '@renderer/assets/images/models/hunyuan_dark.png' import InternlmModelLogo from '@renderer/assets/images/models/internlm.png' import InternlmModelLogoDark from '@renderer/assets/images/models/internlm_dark.png' import KeLingModelLogo from '@renderer/assets/images/models/keling.png' import KeLingModelLogoDark from '@renderer/assets/images/models/keling_dark.png' import LlamaModelLogo from '@renderer/assets/images/models/llama.png' import LlamaModelLogoDark from '@renderer/assets/images/models/llama_dark.png' import LLavaModelLogo from '@renderer/assets/images/models/llava.png' import LLavaModelLogoDark from '@renderer/assets/images/models/llava_dark.png' import LumaModelLogo from '@renderer/assets/images/models/luma.png' import LumaModelLogoDark from '@renderer/assets/images/models/luma_dark.png' import MagicModelLogo from '@renderer/assets/images/models/magic.png' import MagicModelLogoDark from '@renderer/assets/images/models/magic_dark.png' import MicrosoftModelLogo from '@renderer/assets/images/models/microsoft.png' import MicrosoftModelLogoDark from '@renderer/assets/images/models/microsoft_dark.png' import MidjourneyModelLogo from '@renderer/assets/images/models/midjourney.png' import MidjourneyModelLogoDark from '@renderer/assets/images/models/midjourney_dark.png' import MinicpmModelLogo 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 MistralModelLogoDark from '@renderer/assets/images/models/mixtral_dark.png' import MoonshotModelLogo from '@renderer/assets/images/models/moonshot.png' import MoonshotModelLogoDark from '@renderer/assets/images/models/moonshot_dark.png' import NousResearchModelLogo from '@renderer/assets/images/models/nousresearch.png' import NousResearchModelLogoDark from '@renderer/assets/images/models/nousresearch.png' import PalmModelLogo from '@renderer/assets/images/models/palm.png' import PalmModelLogoDark from '@renderer/assets/images/models/palm_dark.png' import QwenModelLogo from '@renderer/assets/images/models/qwen.png' import QwenModelLogoDark from '@renderer/assets/images/models/qwen_dark.png' import SparkDeskModelLogo from '@renderer/assets/images/models/sparkdesk.png' import SparkDeskModelLogoDark from '@renderer/assets/images/models/sparkdesk_dark.png' import StabilityModelLogo from '@renderer/assets/images/models/stability.png' import StabilityModelLogoDark from '@renderer/assets/images/models/stability_dark.png' import StepModelLogo from '@renderer/assets/images/models/step.png' import StepModelLogoDark from '@renderer/assets/images/models/step_dark.png' import SunoModelLogo from '@renderer/assets/images/models/suno.png' import SunoModelLogoDark from '@renderer/assets/images/models/suno_dark.png' import ViduModelLogo from '@renderer/assets/images/models/vidu.png' import ViduModelLogoDark from '@renderer/assets/images/models/vidu_dark.png' import WenxinModelLogo from '@renderer/assets/images/models/wenxin.png' import WenxinModelLogoDark from '@renderer/assets/images/models/wenxin_dark.png' import YiModelLogo from '@renderer/assets/images/models/yi.png' import YiModelLogoDark from '@renderer/assets/images/models/yi_dark.png' import { Model } from '@renderer/types' import OpenAI from 'openai' const TEXT_TO_IMAGE_REGEX = /flux|diffusion|stabilityai|sd-turbo|dall|cogview/i const VISION_REGEX = /llava|moondream|minicpm|gemini-1.5|claude-3|vision|glm-4v|gpt-4|qwen-vl/i const EMBEDDING_REGEX = /embed|rerank/i const NOT_SUPPORTED_REGEX = /embed|tts|rerank|whisper|speech/i export function getModelLogo(modelId: string) { const isLight = true if (!modelId) { return undefined } const logoMap = { 'o1-': isLight ? ChatGPTo1ModelLogo : ChatGPTo1ModelLogoDark, 'gpt-3': isLight ? ChatGPT35ModelLogo : ChatGPT35ModelLogoDark, 'gpt-4': isLight ? ChatGPT4ModelLogo : ChatGPT4ModelLogoDark, gpts: isLight ? ChatGPT4ModelLogo : ChatGPT4ModelLogoDark, 'text-moderation': isLight ? ChatGptModelLogo : ChatGptModelLogoDakr, 'babbage-': isLight ? ChatGptModelLogo : ChatGptModelLogoDakr, 'text-embedding': isLight ? ChatGptModelLogo : ChatGptModelLogoDakr, 'davinci-': isLight ? ChatGptModelLogo : ChatGptModelLogoDakr, glm: isLight ? ChatGLMModelLogo : ChatGLMModelLogoDark, deepseek: isLight ? DeepSeekModelLogo : DeepSeekModelLogoDark, qwen: isLight ? QwenModelLogo : QwenModelLogoDark, gemma: isLight ? GemmaModelLogo : GemmaModelLogoDark, 'yi-': isLight ? YiModelLogo : YiModelLogoDark, llama: isLight ? LlamaModelLogo : LlamaModelLogoDark, mixtral: isLight ? MistralModelLogo : MistralModelLogo, mistral: isLight ? MistralModelLogo : MistralModelLogoDark, moonshot: isLight ? MoonshotModelLogo : MoonshotModelLogoDark, phi: isLight ? MicrosoftModelLogo : MicrosoftModelLogoDark, baichuan: isLight ? BaichuanModelLogo : BaichuanModelLogoDark, claude: isLight ? ClaudeModelLogo : ClaudeModelLogoDark, gemini: isLight ? GeminiModelLogo : GeminiModelLogoDark, embedding: isLight ? EmbeddingModelLogo : EmbeddingModelLogoDark, bison: isLight ? PalmModelLogo : PalmModelLogoDark, palm: isLight ? PalmModelLogo : PalmModelLogoDark, step: isLight ? StepModelLogo : StepModelLogoDark, abab: isLight ? HailuoModelLogo : HailuoModelLogoDark, 'ep-202': isLight ? DoubaoModelLogo : DoubaoModelLogoDark, cohere: isLight ? CohereModelLogo : CohereModelLogoDark, command: isLight ? CohereModelLogo : CohereModelLogoDark, minicpm: isLight ? MinicpmModelLogo : MinicpmModelLogoDark, '360': isLight ? Ai360ModelLogo : Ai360ModelLogoDark, aimass: isLight ? AimassModelLogo : AimassModelLogoDark, codegeex: isLight ? CodegeexModelLogo : CodegeexModelLogoDark, copilot: isLight ? CopilotModelLogo : CopilotModelLogoDark, creative: isLight ? CopilotModelLogo : CopilotModelLogoDark, balanced: isLight ? CopilotModelLogo : CopilotModelLogoDark, precise: isLight ? CopilotModelLogo : CopilotModelLogoDark, dalle: isLight ? DalleModelLogo : DalleModelLogoDark, 'dall-e': isLight ? DalleModelLogo : DalleModelLogoDark, dbrx: isLight ? DbrxModelLogo : DbrxModelLogo, flashaudio: isLight ? FlashaudioModelLogo : FlashaudioModelLogoDark, flux: isLight ? FluxModelLogo : FluxModelLogoDark, gork: isLight ? GorkModelLogo : GorkModelLogoDark, hunyuan: isLight ? HunyuanModelLogo : HunyuanModelLogoDark, internlm: isLight ? InternlmModelLogo : InternlmModelLogoDark, llava: isLight ? LLavaModelLogo : LLavaModelLogoDark, magic: isLight ? MagicModelLogo : MagicModelLogoDark, midjourney: isLight ? MidjourneyModelLogo : MidjourneyModelLogoDark, 'mj-': isLight ? MidjourneyModelLogo : MidjourneyModelLogoDark, abab: isLight ? MinimaxModelLogo : MinimaxModelLogoDark, 'ernie-': isLight ? WenxinModelLogo : WenxinModelLogoDark, voice: isLight ? FlashaudioModelLogo : FlashaudioModelLogoDark, 'tts-1': isLight ? ChatGptModelLogo : ChatGptModelLogoDakr, 'whisper-': isLight ? ChatGptModelLogo : ChatGptModelLogoDakr, 'stable-': isLight ? StabilityModelLogo : StabilityModelLogoDark, sd2: isLight ? StabilityModelLogo : StabilityModelLogoDark, sd3: isLight ? StabilityModelLogo : StabilityModelLogoDark, sdxl: isLight ? StabilityModelLogo : StabilityModelLogoDark, sparkdesk: isLight ? SparkDeskModelLogo : SparkDeskModelLogoDark, generalv: isLight ? SparkDeskModelLogo : SparkDeskModelLogoDark, wizardlm: isLight ? MicrosoftModelLogo : MicrosoftModelLogoDark, hermes: isLight ? NousResearchModelLogo : NousResearchModelLogoDark, gryphe: isLight ? GrypheModelLogo : GrypheModelLogoDark, suno: isLight ? SunoModelLogo : SunoModelLogoDark, chirp: isLight ? SunoModelLogo : SunoModelLogoDark, luma: isLight ? LumaModelLogo : LumaModelLogoDark, keling: isLight ? KeLingModelLogo : KeLingModelLogoDark, 'vidu-': isLight ? ViduModelLogo : ViduModelLogoDark, ai21: isLight ? Ai21ModelLogo : Ai21ModelLogoDark, 'jamba-': isLight ? Ai21ModelLogo : Ai21ModelLogoDark, mythomax: isLight ? GrypheModelLogo : GrypheModelLogoDark } for (const key in logoMap) { if (modelId.toLowerCase().includes(key)) { return logoMap[key] } } return undefined } export const SYSTEM_MODELS: Record = { ollama: [], silicon: [ { id: 'Qwen/Qwen2-7B-Instruct', provider: 'silicon', name: 'Qwen2-7B-Instruct', group: 'Qwen2' }, { id: 'Qwen/Qwen2-72B-Instruct', provider: 'silicon', name: 'Qwen2-72B-Instruct', group: 'Qwen2' }, { id: 'THUDM/glm-4-9b-chat', provider: 'silicon', name: 'GLM-4-9B-Chat', group: 'GLM' }, { id: 'deepseek-ai/DeepSeek-V2-Chat', provider: 'silicon', name: 'DeepSeek-V2-Chat', group: 'DeepSeek' }, { id: 'deepseek-ai/DeepSeek-Coder-V2-Instruct', provider: 'silicon', name: 'DeepSeek-Coder-V2-Instruct', group: 'DeepSeek' } ], openai: [ { id: 'gpt-4o', provider: 'openai', name: ' GPT-4o', group: 'GPT 4o' }, { id: 'gpt-4o-mini', provider: 'openai', name: ' GPT-4o-mini', group: 'GPT 4o' }, { id: 'gpt-4-turbo', provider: 'openai', name: ' GPT-4 Turbo', group: 'GPT 4' }, { id: 'gpt-4', provider: 'openai', name: ' GPT-4', group: 'GPT 4' } ], gemini: [ { id: 'gemini-1.5-flash', provider: 'gemini', name: 'Gemini 1.5 Flash', group: 'Gemini 1.5' }, { id: 'gemini-1.5-pro-exp-0801', provider: 'gemini', name: 'Gemini 1.5 Pro Experimental 0801', group: 'Gemini 1.5' } ], anthropic: [ { id: 'claude-3-5-sonnet-20240620', provider: 'anthropic', name: 'Claude 3.5 Sonnet', group: 'Claude 3.5' }, { id: 'claude-3-opus-20240229', provider: 'anthropic', name: 'Claude 3 Opus', group: 'Claude 3' }, { id: 'claude-3-sonnet-20240229', provider: 'anthropic', name: 'Claude 3 Sonnet', group: 'Claude 3' }, { id: 'claude-3-haiku-20240307', provider: 'anthropic', name: 'Claude 3 Haiku', group: 'Claude 3' } ], deepseek: [ { id: 'deepseek-chat', provider: 'deepseek', name: 'DeepSeek Chat', group: 'DeepSeek Chat' }, { id: 'deepseek-coder', provider: 'deepseek', name: 'DeepSeek Coder', group: 'DeepSeek Coder' } ], ocoolai: [ { id: 'gpt-4o', provider: 'ocoolai', name: 'gpt-4o', group: 'OpenAI' }, { id: 'gpt-4o-all', provider: 'ocoolai', name: 'gpt-4o-all', group: 'OpenAI' }, { id: 'gpt-4-all', provider: 'ocoolai', name: 'gpt-4-all', group: 'OpenAI' }, { id: 'gpt-4o-mini', provider: 'ocoolai', name: 'gpt-4o-mini', group: 'OpenAI' }, { id: 'gpt-4', provider: 'ocoolai', name: 'gpt-4', group: 'OpenAI' }, { id: 'gpt-4-turbo', provider: 'ocoolai', name: 'gpt-4-turbo', group: 'OpenAI' }, { id: 'o1-preview', provider: 'ocoolai', name: 'o1-preview', group: 'OpenAI' }, { id: 'o1-mini', provider: 'ocoolai', 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', name: 'claude-3-5-sonnet-20240620', group: 'Anthropic' }, { id: 'claude-3-opus-20240229', 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', group: 'Anthropic' } ], github: [ { id: 'gpt-4o', provider: 'github', name: 'OpenAI GPT-4o', group: 'OpenAI' } ], yi: [ { id: 'yi-large', provider: 'yi', name: 'Yi-Large', group: 'Yi' }, { id: 'yi-large-turbo', provider: 'yi', name: 'Yi-Large-Turbo', group: 'Yi' }, { id: 'yi-large-rag', provider: 'yi', name: 'Yi-Large-Rag', group: 'Yi' }, { id: 'yi-medium', provider: 'yi', name: 'Yi-Medium', group: 'Yi' }, { id: 'yi-medium-200k', provider: 'yi', name: 'Yi-Medium-200k', group: 'Yi' }, { id: 'yi-spark', provider: 'yi', name: 'Yi-Spark', group: 'Yi' } ], zhipu: [ { id: 'glm-4', provider: 'zhipu', name: 'GLM-4', group: 'GLM-4' }, { id: 'glm-4-plus', provider: 'zhipu', name: 'GLM-4-Plus', group: 'GLM-4' }, { id: 'glm-4-air', provider: 'zhipu', name: 'GLM-4-Air', group: 'GLM-4' }, { id: 'glm-4-airx', provider: 'zhipu', name: 'GLM-4-AirX', group: 'GLM-4' }, { id: 'glm-4-flash', provider: 'zhipu', name: 'GLM-4-Flash', group: 'GLM-4' }, { id: 'glm-4v', provider: 'zhipu', name: 'GLM 4V', group: 'GLM-4v' }, { id: 'glm-4v-plus', provider: 'zhipu', name: 'GLM-4V-Plus', group: 'GLM-4v' }, { id: 'glm-4-alltools', provider: 'zhipu', name: 'GLM-4-AllTools', group: 'GLM-4-AllTools' } ], moonshot: [ { id: 'moonshot-v1-8k', provider: 'moonshot', name: 'Moonshot V1 8k', group: 'Moonshot V1' }, { id: 'moonshot-v1-32k', provider: 'moonshot', name: 'Moonshot V1 32k', group: 'Moonshot V1' }, { id: 'moonshot-v1-128k', provider: 'moonshot', name: 'Moonshot V1 128k', group: 'Moonshot V1' } ], baichuan: [ { id: 'Baichuan4', provider: 'baichuan', name: 'Baichuan4', group: 'Baichuan4' }, { id: 'Baichuan3-Turbo', provider: 'baichuan', name: 'Baichuan3 Turbo', group: 'Baichuan3' }, { id: 'Baichuan3-Turbo-128k', provider: 'baichuan', name: 'Baichuan3 Turbo 128k', group: 'Baichuan3' } ], dashscope: [ { id: 'qwen-turbo', provider: 'dashscope', name: 'Qwen Turbo', group: 'Qwen' }, { id: 'qwen-plus', provider: 'dashscope', name: 'Qwen Plus', group: 'Qwen' }, { id: 'qwen-max', provider: 'dashscope', name: 'Qwen Max', group: 'Qwen' } ], stepfun: [ { id: 'step-1-8k', provider: 'stepfun', name: 'Step 1 8K', group: 'Step 1' }, { id: 'step-1-flash', provider: 'stepfun', name: 'Step 1 Flash', group: 'Step 1' } ], doubao: [], minimax: [ { id: 'abab6.5s-chat', provider: 'minimax', name: 'abab6.5s', group: 'abab6' }, { id: 'abab6.5g-chat', provider: 'minimax', name: 'abab6.5g', group: 'abab6' }, { id: 'abab6.5t-chat', provider: 'minimax', name: 'abab6.5t', group: 'abab6' }, { id: 'abab5.5s-chat', provider: 'minimax', name: 'abab5.5s', group: 'abab5' } ], aihubmix: [ { id: 'gpt-4o-mini', provider: 'aihubmix', name: 'GPT-4o Mini', group: 'GPT-4o' }, { id: 'aihubmix-Llama-3-70B-Instruct', provider: 'aihubmix', name: 'Llama 3 70B Instruct', group: 'Llama3' } ], openrouter: [ { id: 'google/gemma-2-9b-it:free', provider: 'openrouter', name: 'Google: Gemma 2 9B', group: 'Gemma' }, { id: 'microsoft/phi-3-mini-128k-instruct:free', provider: 'openrouter', name: 'Phi-3 Mini 128K Instruct', group: 'Phi' }, { id: 'microsoft/phi-3-medium-128k-instruct:free', provider: 'openrouter', name: 'Phi-3 Medium 128K Instruct', group: 'Phi' }, { id: 'meta-llama/llama-3-8b-instruct:free', provider: 'openrouter', name: 'Meta: Llama 3 8B Instruct', group: 'Llama3' }, { id: 'mistralai/mistral-7b-instruct:free', provider: 'openrouter', name: 'Mistral: Mistral 7B Instruct', group: 'Mistral' } ], groq: [ { id: 'llama3-8b-8192', provider: 'groq', name: 'LLaMA3 8B', group: 'Llama3' }, { id: 'llama3-70b-8192', provider: 'groq', name: 'LLaMA3 70B', group: 'Llama3' }, { id: 'mixtral-8x7b-32768', provider: 'groq', name: 'Mixtral 8x7B', group: 'Mixtral' }, { id: 'gemma-7b-it', provider: 'groq', name: 'Gemma 7B', group: 'Gemma' } ] } export function isTextToImageModel(model: Model): boolean { return TEXT_TO_IMAGE_REGEX.test(model.id) } export function isEmbeddingModel(model: Model): boolean { return EMBEDDING_REGEX.test(model.id) } export function isVisionModel(model: Model): boolean { return VISION_REGEX.test(model.id) } export function isSupportedModel(model: OpenAI.Models.Model): boolean { return !NOT_SUPPORTED_REGEX.test(model.id) }