diff --git a/src/assets/model_icons/01ai.png b/src/assets/model_icons/01ai.png new file mode 100644 index 00000000..3555a480 Binary files /dev/null and b/src/assets/model_icons/01ai.png differ diff --git a/src/assets/model_icons/ERNIE.png b/src/assets/model_icons/ERNIE.png new file mode 100644 index 00000000..802777d6 Binary files /dev/null and b/src/assets/model_icons/ERNIE.png differ diff --git a/src/assets/model_icons/FunAudioLLM.png b/src/assets/model_icons/FunAudioLLM.png new file mode 100644 index 00000000..043cd42e Binary files /dev/null and b/src/assets/model_icons/FunAudioLLM.png differ diff --git a/src/assets/model_icons/OpenBMB.png b/src/assets/model_icons/OpenBMB.png new file mode 100644 index 00000000..a96053ce Binary files /dev/null and b/src/assets/model_icons/OpenBMB.png differ diff --git a/src/assets/model_icons/OpenGVLab.jpeg b/src/assets/model_icons/OpenGVLab.jpeg new file mode 100644 index 00000000..80dd0493 Binary files /dev/null and b/src/assets/model_icons/OpenGVLab.jpeg differ diff --git a/src/assets/model_icons/THUDM.png b/src/assets/model_icons/THUDM.png new file mode 100644 index 00000000..63af50ac Binary files /dev/null and b/src/assets/model_icons/THUDM.png differ diff --git a/src/assets/model_icons/XiaomiMiMo.png b/src/assets/model_icons/XiaomiMiMo.png new file mode 100644 index 00000000..f4b83781 Binary files /dev/null and b/src/assets/model_icons/XiaomiMiMo.png differ diff --git a/src/assets/model_icons/alibaba.png b/src/assets/model_icons/alibaba.png new file mode 100644 index 00000000..38911373 Binary files /dev/null and b/src/assets/model_icons/alibaba.png differ diff --git a/src/assets/model_icons/bagel.png b/src/assets/model_icons/bagel.png new file mode 100644 index 00000000..0ec8550b Binary files /dev/null and b/src/assets/model_icons/bagel.png differ diff --git a/src/assets/model_icons/baidu.jpeg b/src/assets/model_icons/baidu.jpeg new file mode 100644 index 00000000..f4c51bf8 Binary files /dev/null and b/src/assets/model_icons/baidu.jpeg differ diff --git a/src/assets/model_icons/bge.jpeg b/src/assets/model_icons/bge.jpeg new file mode 100644 index 00000000..0e5410fd Binary files /dev/null and b/src/assets/model_icons/bge.jpeg differ diff --git a/src/assets/model_icons/blackforestlabs.png b/src/assets/model_icons/blackforestlabs.png new file mode 100644 index 00000000..acebde2e Binary files /dev/null and b/src/assets/model_icons/blackforestlabs.png differ diff --git a/src/assets/model_icons/cohere.png b/src/assets/model_icons/cohere.png new file mode 100644 index 00000000..e35b19e3 Binary files /dev/null and b/src/assets/model_icons/cohere.png differ diff --git a/src/assets/model_icons/deepseek.png b/src/assets/model_icons/deepseek.png new file mode 100644 index 00000000..f9af429e Binary files /dev/null and b/src/assets/model_icons/deepseek.png differ diff --git a/src/assets/model_icons/falcon3.png b/src/assets/model_icons/falcon3.png new file mode 100644 index 00000000..1a10afb4 Binary files /dev/null and b/src/assets/model_icons/falcon3.png differ diff --git a/src/assets/model_icons/freepik.jpeg b/src/assets/model_icons/freepik.jpeg new file mode 100644 index 00000000..a1f16024 Binary files /dev/null and b/src/assets/model_icons/freepik.jpeg differ diff --git a/src/assets/model_icons/google.png b/src/assets/model_icons/google.png new file mode 100644 index 00000000..a987f9ae Binary files /dev/null and b/src/assets/model_icons/google.png differ diff --git a/src/assets/model_icons/hunyuan.png b/src/assets/model_icons/hunyuan.png new file mode 100644 index 00000000..e128df03 Binary files /dev/null and b/src/assets/model_icons/hunyuan.png differ diff --git a/src/assets/model_icons/ibm.png b/src/assets/model_icons/ibm.png new file mode 100644 index 00000000..1dbf6b5e Binary files /dev/null and b/src/assets/model_icons/ibm.png differ diff --git a/src/assets/model_icons/jetbrains.png b/src/assets/model_icons/jetbrains.png new file mode 100644 index 00000000..f5ed65b9 Binary files /dev/null and b/src/assets/model_icons/jetbrains.png differ diff --git a/src/assets/model_icons/jina.png b/src/assets/model_icons/jina.png new file mode 100644 index 00000000..9900cd7d Binary files /dev/null and b/src/assets/model_icons/jina.png differ diff --git a/src/assets/model_icons/kimi.png b/src/assets/model_icons/kimi.png new file mode 100644 index 00000000..1d36f9cb Binary files /dev/null and b/src/assets/model_icons/kimi.png differ diff --git a/src/assets/model_icons/lighton.png b/src/assets/model_icons/lighton.png new file mode 100644 index 00000000..4c51c116 Binary files /dev/null and b/src/assets/model_icons/lighton.png differ diff --git a/src/assets/model_icons/liquidai.png b/src/assets/model_icons/liquidai.png new file mode 100644 index 00000000..d9d1c6c5 Binary files /dev/null and b/src/assets/model_icons/liquidai.png differ diff --git a/src/assets/model_icons/llm-icon.png b/src/assets/model_icons/llm-icon.png new file mode 100644 index 00000000..3fd107cd Binary files /dev/null and b/src/assets/model_icons/llm-icon.png differ diff --git a/src/assets/model_icons/meta.png b/src/assets/model_icons/meta.png new file mode 100644 index 00000000..1c55fb85 Binary files /dev/null and b/src/assets/model_icons/meta.png differ diff --git a/src/assets/model_icons/microsoft.png b/src/assets/model_icons/microsoft.png new file mode 100644 index 00000000..68f668cc Binary files /dev/null and b/src/assets/model_icons/microsoft.png differ diff --git a/src/assets/model_icons/minimax.png b/src/assets/model_icons/minimax.png new file mode 100644 index 00000000..ccbecf77 Binary files /dev/null and b/src/assets/model_icons/minimax.png differ diff --git a/src/assets/model_icons/mistral.png b/src/assets/model_icons/mistral.png new file mode 100644 index 00000000..0298e563 Binary files /dev/null and b/src/assets/model_icons/mistral.png differ diff --git a/src/assets/model_icons/nanbeige.png b/src/assets/model_icons/nanbeige.png new file mode 100644 index 00000000..3466c5a7 Binary files /dev/null and b/src/assets/model_icons/nanbeige.png differ diff --git a/src/assets/model_icons/narilabs.png b/src/assets/model_icons/narilabs.png new file mode 100644 index 00000000..c3a969a2 Binary files /dev/null and b/src/assets/model_icons/narilabs.png differ diff --git a/src/assets/model_icons/nomic.png b/src/assets/model_icons/nomic.png new file mode 100644 index 00000000..e28f327f Binary files /dev/null and b/src/assets/model_icons/nomic.png differ diff --git a/src/assets/model_icons/nvidia.png b/src/assets/model_icons/nvidia.png new file mode 100644 index 00000000..47bb9631 Binary files /dev/null and b/src/assets/model_icons/nvidia.png differ diff --git a/src/assets/model_icons/openai.png b/src/assets/model_icons/openai.png new file mode 100644 index 00000000..f26045cd Binary files /dev/null and b/src/assets/model_icons/openai.png differ diff --git a/src/assets/model_icons/paddlepaddle.jpeg b/src/assets/model_icons/paddlepaddle.jpeg new file mode 100644 index 00000000..12536748 Binary files /dev/null and b/src/assets/model_icons/paddlepaddle.jpeg differ diff --git a/src/assets/model_icons/qwen.png b/src/assets/model_icons/qwen.png new file mode 100644 index 00000000..b8ef2287 Binary files /dev/null and b/src/assets/model_icons/qwen.png differ diff --git a/src/assets/model_icons/stability.png b/src/assets/model_icons/stability.png new file mode 100644 index 00000000..26e316d3 Binary files /dev/null and b/src/assets/model_icons/stability.png differ diff --git a/src/assets/model_icons/stepfun.png b/src/assets/model_icons/stepfun.png new file mode 100644 index 00000000..bfa3a392 Binary files /dev/null and b/src/assets/model_icons/stepfun.png differ diff --git a/src/assets/model_icons/systran.png b/src/assets/model_icons/systran.png new file mode 100644 index 00000000..f94a161f Binary files /dev/null and b/src/assets/model_icons/systran.png differ diff --git a/src/assets/model_icons/tencentARC.png b/src/assets/model_icons/tencentARC.png new file mode 100644 index 00000000..ca3ede25 Binary files /dev/null and b/src/assets/model_icons/tencentARC.png differ diff --git a/src/assets/model_icons/tii.png b/src/assets/model_icons/tii.png new file mode 100644 index 00000000..438f6cec Binary files /dev/null and b/src/assets/model_icons/tii.png differ diff --git a/src/assets/model_icons/youdao.png b/src/assets/model_icons/youdao.png new file mode 100644 index 00000000..3b1a11fe Binary files /dev/null and b/src/assets/model_icons/youdao.png differ diff --git a/src/assets/model_icons/zai.png b/src/assets/model_icons/zai.png new file mode 100644 index 00000000..3615694c Binary files /dev/null and b/src/assets/model_icons/zai.png differ diff --git a/src/pages/llmodels/components/model-item.tsx b/src/pages/llmodels/components/model-item.tsx index 99139e90..20405613 100644 --- a/src/pages/llmodels/components/model-item.tsx +++ b/src/pages/llmodels/components/model-item.tsx @@ -1,5 +1,4 @@ import { - IconFont, StatusTag, TagsWrapper, TemplateCard, @@ -20,6 +19,7 @@ import { MyModelsStatusValueMap } from '../config'; import { categoryToPathMap } from '../config/button-actions'; +import { getModelLogo } from '../utils/model-logo'; const CardWrapper = styled.div` &:hover { @@ -84,6 +84,14 @@ const ModelItemContent = styled.div` } `; +const ModelLogo = styled.img` + width: 24px; + height: 24px; + border-radius: 4px; + object-fit: contain; + flex: none; +`; + const Header = styled.div` margin-bottom: 8px; display: flex; @@ -176,10 +184,11 @@ const ModelItem: React.FC<{ header={
- + /> */} + {model.name} resolved asset url. +const iconMap: Record = iconContext + .keys() + .reduce((acc: Record, key: string) => { + const base = key + .replace(/^\.\//, '') + .replace(/\.(png|jpe?g|svg)$/, '') + .toLowerCase(); + acc[base] = iconContext(key).default || iconContext(key); + return acc; + }, {}); + +// 模型名关键字 → logo 文件名(按顺序匹配第一个命中的子串)。 +const MODEL_ICON_RULES: [string, string][] = [ + ['llama', 'meta'], + ['qwen', 'qwen'], + ['deepseek', 'deepseek'], + ['mixtral', 'mistral'], + ['mistral', 'mistral'], + ['phi', 'microsoft'], + ['gemma', 'google'], + ['command-r', 'cohere'], + ['cohere', 'cohere'], + ['glm', 'thudm'], + ['yi-', '01ai'], + ['ernie', 'ernie'], + ['hunyuan', 'hunyuan'], + ['kimi', 'kimi'], + ['minimax', 'minimax'], + ['falcon', 'falcon3'], + ['stable-diffusion', 'stability'], + ['sdxl', 'stability'], + ['stepfun', 'stepfun'], + ['nvidia', 'nvidia'], + // 其余厂商/系列 → 对应 logo(按子串命中) + ['gemini', 'google'], + ['gpt', 'openai'], + ['openai', 'openai'], + ['internvl', 'opengvlab'], + ['minicpm', 'openbmb'], + ['mimo', 'xiaomimimo'], + ['flux', 'blackforestlabs'], + ['granite', 'ibm'], + ['lfm', 'liquidai'], + ['liquid', 'liquidai'], + ['nomic', 'nomic'], + ['jina', 'jina'], + ['bge', 'bge'], + ['cosyvoice', 'funaudiollm'], + ['sensevoice', 'funaudiollm'], + ['paddle', 'paddlepaddle'], + ['baidu', 'baidu'], + ['youdao', 'youdao'], + ['systran', 'systran'], + ['nanbeige', 'nanbeige'], + ['nari', 'narilabs'], + ['bagel', 'bagel'], + ['zai', 'zai'], + ['tencent', 'tencentarc'], + ['jetbrains', 'jetbrains'], + ['freepik', 'freepik'], + ['alibaba', 'alibaba'] +]; + +/** + * Resolve a model logo from its name. + * 1. Match against the keyword rules in order (first substring hit wins). + * 2. Fall back to a direct match where the name contains an icon filename. + * 3. Fall back to the default llm icon. + */ +export const getModelLogo = (modelName?: string): string => { + const name = (modelName || '').toLowerCase(); + + const rule = MODEL_ICON_RULES.find(([keyword]) => name.includes(keyword)); + if (rule && iconMap[rule[1]]) { + return iconMap[rule[1]]; + } + + const directHit = Object.keys(iconMap) + .filter((iconName) => iconName !== DEFAULT_ICON) + .sort((a, b) => b.length - a.length) + .find((iconName) => name.includes(iconName)); + + return iconMap[directHit || DEFAULT_ICON] || iconMap[DEFAULT_ICON]; +};