@@ -8,6 +8,13 @@ export function getSystemName() {
8
8
if ( ! system_name ) return 'Chat API' ;
9
9
return system_name ;
10
10
}
11
+ import {
12
+ OpenAI , Claude , Gemini , DeepSeek , Zhipu , Hunyuan ,
13
+ Spark , Minimax , Yi , Groq , Ollama ,
14
+ Doubao , Ai360 , Midjourney , Flux , Grok , Suno ,
15
+ Pika , Vidu , BaiduCloud , AlibabaCloud , Cohere , Baichuan , Kimi
16
+ } from '@lobehub/icons' ;
17
+
11
18
12
19
export function isMobile ( ) {
13
20
return window . innerWidth <= 600 ;
@@ -288,3 +295,66 @@ export function removeTrailingSlash(url) {
288
295
return url ;
289
296
}
290
297
}
298
+
299
+ export const getModelIcon = ( modelName ) => {
300
+ if ( modelName . startsWith ( 'gpt-3' ) ) {
301
+ return < OpenAI . Avatar size = { 20 } type = "gpt3" /> ;
302
+ } else if ( modelName . startsWith ( 'gpt-4' ) || modelName . startsWith ( 'chatgpt' ) ) {
303
+ return < OpenAI . Avatar size = { 20 } type = "gpt4" /> ;
304
+ } else if ( modelName . startsWith ( 'o1' ) || modelName . startsWith ( 'o3' ) ) {
305
+ return < OpenAI . Avatar size = { 20 } type = "o1" /> ;
306
+ } else if ( modelName . startsWith ( 'tts' ) || modelName . startsWith ( 'dall-e' ) ||
307
+ modelName . startsWith ( 'whisper' ) || modelName . startsWith ( 'omni-' ) ||
308
+ modelName . startsWith ( 'text-embedding' ) || modelName . startsWith ( 'text-moderation-' )
309
+ || modelName . startsWith ( 'davinci' ) || modelName . startsWith ( 'babbage' )
310
+ ) {
311
+ return < OpenAI . Avatar size = { 20 } /> ;
312
+ } else if ( modelName . startsWith ( 'claude' ) ) {
313
+ return < Claude . Color size = { 20 } /> ;
314
+ } else if ( modelName . startsWith ( 'gemini' ) ) {
315
+ return < Gemini . Color size = { 20 } /> ;
316
+ } else if ( modelName . startsWith ( 'deepseek' ) ) {
317
+ return < DeepSeek . Color size = { 20 } /> ;
318
+ } else if ( modelName . startsWith ( 'glm' ) || modelName . startsWith ( 'chatglm' ) ) {
319
+ return < Zhipu . Color size = { 20 } /> ;
320
+ } else if ( modelName . startsWith ( 'hunyuan' ) ) {
321
+ return < Hunyuan . Color size = { 20 } /> ;
322
+ } else if ( modelName . startsWith ( 'Spark' ) ) {
323
+ return < Spark . Color size = { 20 } /> ;
324
+ } else if ( modelName . startsWith ( 'abab' ) ) {
325
+ return < Minimax . Color size = { 20 } /> ;
326
+ } else if ( modelName . startsWith ( 'moonshot' ) ) {
327
+ return < Kimi . Color size = { 20 } /> ;
328
+ } else if ( modelName . startsWith ( 'yi' ) ) {
329
+ return < Yi . Color size = { 20 } /> ;
330
+ } else if ( modelName . startsWith ( 'groq' ) ) {
331
+ return < Groq size = { 20 } /> ;
332
+ } else if ( modelName . startsWith ( 'ollama' ) || modelName . startsWith ( 'llama' ) ) {
333
+ return < Ollama size = { 20 } /> ;
334
+ } else if ( modelName . startsWith ( 'doubao' ) ) {
335
+ return < Doubao . Color size = { 20 } /> ;
336
+ } else if ( modelName . startsWith ( '360' ) ) {
337
+ return < Ai360 . Color size = { 20 } /> ;
338
+ } else if ( modelName . startsWith ( 'midjourney' ) || modelName . startsWith ( 'mj-chat' ) ) {
339
+ return < Midjourney size = { 20 } /> ;
340
+ } else if ( modelName . startsWith ( 'flux' ) ) {
341
+ return < Flux size = { 20 } /> ;
342
+ } else if ( modelName . startsWith ( 'grok' ) ) {
343
+ return < Grok size = { 20 } /> ;
344
+ } else if ( modelName . startsWith ( 'suno' ) ) {
345
+ return < Suno size = { 20 } /> ;
346
+ } else if ( modelName . startsWith ( 'pika' ) ) {
347
+ return < Pika size = { 20 } /> ;
348
+ } else if ( modelName . startsWith ( 'vidu' ) ) {
349
+ return < Vidu . Color size = { 20 } /> ;
350
+ } else if ( modelName . startsWith ( 'ERNIE-' ) ) {
351
+ return < BaiduCloud . Color size = { 20 } /> ;
352
+ } else if ( modelName . startsWith ( 'qwen-' ) ) {
353
+ return < AlibabaCloud . Color size = { 20 } /> ;
354
+ } else if ( modelName . startsWith ( 'command' ) ) {
355
+ return < Cohere . Color size = { 20 } /> ;
356
+ } else if ( modelName . startsWith ( 'Baichuan' ) ) {
357
+ return < Baichuan . Color size = { 20 } /> ;
358
+ }
359
+ return null ;
360
+ } ;
0 commit comments