327 lines
12 KiB
TypeScript
327 lines
12 KiB
TypeScript
export type LobeModelAvatarAsset = 'color' | 'mono'
|
|
|
|
export interface LobeModelAvatarConfig {
|
|
asset: LobeModelAvatarAsset
|
|
background: string
|
|
color: string
|
|
multiple: number
|
|
}
|
|
|
|
export interface LobeModelIconMapping {
|
|
keywords: string[]
|
|
openAIType?: 'gpt3' | 'gpt4' | 'gpt5' | 'o1' | 'oss' | 'platform'
|
|
slug: string
|
|
}
|
|
|
|
const avatar = (
|
|
background: string,
|
|
color: string,
|
|
multiple: number,
|
|
asset: LobeModelAvatarAsset = 'mono',
|
|
): LobeModelAvatarConfig => ({ asset, background, color, multiple })
|
|
|
|
export const lobeModelAvatarBrands: Record<string, LobeModelAvatarConfig> = {
|
|
ace: avatar('#000', '#fff', 0.65),
|
|
adobe: avatar('#EB1000', '#fff', 0.6),
|
|
ai2: avatar('#f0529c', '#fff', 0.7),
|
|
ai21: avatar('#E91E63', '#fff', 0.7),
|
|
ai360: avatar('linear-gradient(to bottom, #12B7FA, #006ffb)', '#fff', 0.75),
|
|
aihubmix: avatar('#006FFB', '#fff', 0.75),
|
|
aimass: avatar('#fff', '#fff', 0.8, 'color'),
|
|
aionlabs: avatar('#fff', '#0f172a', 0.8),
|
|
anthropic: avatar('#F1F0E8', '#141413', 0.75),
|
|
arcee: avatar('#008C8C', '#fff', 0.7),
|
|
assemblyai: avatar('#2545D3', '#fff', 0.6),
|
|
aws: avatar('#222F3E', '#fff', 0.75, 'color'),
|
|
aya: avatar('#416FDC', '#fff', 0.6),
|
|
baai: avatar('#000', '#fff', 0.6),
|
|
baichuan: avatar('#FF6933', '#fff', 0.6),
|
|
baiducloud: avatar('#2468f2', '#fff', 0.75),
|
|
bilibili: avatar('#FB7299', '#fff', 0.65),
|
|
bilibiliindex: avatar('#5E19B7', '#fff', 0.7),
|
|
burncloud: avatar('#E95513', '#fff', 0.75),
|
|
bytedance: avatar('#325AB4', '#fff', 0.6),
|
|
chatglm: avatar('#4268FA', '#fff', 0.75),
|
|
claude: avatar('#D97757', '#fff', 0.75),
|
|
codegeex: avatar('#00e7e7', '#000', 0.75),
|
|
cogview: avatar('#000', '#fff', 0.6, 'color'),
|
|
cohere: avatar('#39594D', '#fff', 0.6),
|
|
dalle: avatar(
|
|
'conic-gradient(from 180deg, #FFFF67, #43FFFF, #50DA4C, #FF6E3D, #3C46FF)',
|
|
'#fff',
|
|
0.6,
|
|
),
|
|
dbrx: avatar('#EE3D2C', '#fff', 0.6),
|
|
deepcogito: avatar('#4e81ee', '#fff', 0.7),
|
|
deepmind: avatar('#4285F4', '#fff', 0.75),
|
|
deepseek: avatar('#4D6BFE', '#fff', 0.75),
|
|
dolphin: avatar('#6186db', '#fff', 0.75),
|
|
doubao: avatar('#FFF', '#fff', 0.75, 'color'),
|
|
essentialai: avatar('linear-gradient(135deg, #5E38A5, #31018C 63%)', '#fff', 0.7),
|
|
fireworks: avatar('#5019C5', '#000', 0.75),
|
|
fishaudio: avatar('#fff', '#000', 0.75),
|
|
flux: avatar('#fff', '#000', 0.7),
|
|
glmv: avatar('#0039C6', '#fff', 0.7),
|
|
gemini: avatar('#fff', '#fff', 0.8, 'color'),
|
|
gemma: avatar('linear-gradient(45deg, #446EFF 14%, #2E96FF 40%, #B1C5FF 73%)', '#fff', 1),
|
|
google: avatar('#fff', '#fff', 0.75, 'color'),
|
|
grok: avatar('#000', '#fff', 0.75),
|
|
hunyuan: avatar('#0053e0', '#fff', 0.75),
|
|
ibm: avatar('#0F62FE', '#fff', 0.75),
|
|
ideogram: avatar('#fff', '#000', 0.75),
|
|
inception: avatar('#fff', '#000', 0.8),
|
|
inflection: avatar('#038247', '#fff', 0.6),
|
|
internlm: avatar('#1B3882', '#fff', 0.75),
|
|
jimeng: avatar('#000', '#fff', 0.6, 'color'),
|
|
jina: avatar('#000', '#fff', 0.6),
|
|
kling: avatar('#000', '#fff', 0.75, 'color'),
|
|
kolors: avatar('radial-gradient(#CBFF00,#7EF426)', '#fff', 0.75),
|
|
kwaipilot: avatar('#000', '#fff', 0.8, 'color'),
|
|
lg: avatar('#C00C3F', '#FFF', 1),
|
|
llava: avatar('#CB2D30', '#fff', 0.6),
|
|
liquid: avatar('#fff', '#000', 0.75),
|
|
longcat: avatar('#fff', '#000', 0.7, 'color'),
|
|
menlo: avatar('#FF5C00', '#fff', 0.6),
|
|
meta: avatar('linear-gradient(45deg, #007FF8, #0668E1, #007FF8)', '#fff', 0.75),
|
|
microsoft: avatar('#00A4EF', '#fff', 0.6),
|
|
minimax: avatar('linear-gradient(to right, #E2167E, #FE603C)', '#fff', 0.75),
|
|
mistral: avatar('#FA520F', '#fff', 0.75),
|
|
moonshot: avatar('#16191E', '#fff', 0.75),
|
|
morph: avatar('#000', '#99d52a', 0.7),
|
|
nanobanana: avatar('#FCD53F', '#fff', 0.8),
|
|
nousresearch: avatar('#fff', '#000', 0.75),
|
|
nova: avatar('linear-gradient(-45deg, #ff6200, #e433ff 39.9%, #6842ff 96%)', '#fff', 0.7),
|
|
nvidia: avatar('#74B71B', '#fff', 0.75),
|
|
openai: avatar('#000', '#fff', 0.75),
|
|
openchat: avatar('#4A7FE3', '#fff', 0.6),
|
|
openrouter: avatar('#000', '#C8FF00', 0.75),
|
|
palm: avatar('#FFF', '#fff', 0.75, 'color'),
|
|
perplexity: avatar('#22B8CD', '#000', 0.75),
|
|
phind: avatar('#000', '#fff', 0.6),
|
|
qiniu: avatar('#06AEEF', '#fff', 0.75),
|
|
qwen: avatar('#615ced', '#fff', 0.75),
|
|
relace: avatar('#000', '#fff', 0.66),
|
|
rwkv: avatar('#3431C3', '#fff', 0.6),
|
|
sensenova: avatar('#5B2AD8', '#fff', 0.7),
|
|
skywork: avatar('#fff', '#000', 0.75, 'color'),
|
|
sora: avatar('linear-gradient(180deg, #012659 0%, #0968DA 100%)', '#fff', 0.7),
|
|
spark: avatar('#0070f0', '#fff', 0.75),
|
|
stability: avatar('linear-gradient(to bottom, #9D39FF, #A380FF)', '#fff', 0.7),
|
|
stepfun: avatar('#fff', '#000', 0.65),
|
|
suno: avatar('#000', '#fff', 0.6),
|
|
tii: avatar('#6400FF', '#fff', 0.75),
|
|
udio: avatar('#e30a5d', '#fff', 0.6),
|
|
upstage: avatar('linear-gradient(to bottom, #AEBCFE, #805DFA)', '#fff', 0.6),
|
|
v0: avatar('#000', '#fff', 0.75),
|
|
vertexai: avatar('#4285F4', '#fff', 0.6),
|
|
voyage: avatar('#012E33', '#fff', 0.6),
|
|
wenxin: avatar('linear-gradient(to right, #0A51C3, #23A4FB)', '#fff', 0.75),
|
|
xiaomimimo: avatar('#000', '#fff', 0.7),
|
|
yi: avatar('#003425', '#fff', 0.6, 'color'),
|
|
zai: avatar('#000', '#fff', 0.6),
|
|
}
|
|
|
|
export const lobeModelIconMappings: LobeModelIconMapping[] = [
|
|
{ slug: 'openai', keywords: ['gpt-3'], openAIType: 'gpt3' },
|
|
{ slug: 'openai', keywords: ['gpt-4'], openAIType: 'gpt4' },
|
|
{ slug: 'openai', keywords: ['gpt-5'], openAIType: 'gpt5' },
|
|
{ slug: 'sora', keywords: ['sora'] },
|
|
{ slug: 'openai', keywords: ['gpt-oss'], openAIType: 'oss' },
|
|
{
|
|
slug: 'openai',
|
|
keywords: ['o1-', '^o1', '/o1', 'o3-', '^o3', '/o3', 'o4-', '^o4', '/o4'],
|
|
openAIType: 'o1',
|
|
},
|
|
{ slug: 'dalle', keywords: ['dalle', 'dall-e'] },
|
|
{
|
|
slug: 'openai',
|
|
keywords: [
|
|
'text-embedding-',
|
|
'tts-',
|
|
'whisper-',
|
|
'codex',
|
|
'davinci',
|
|
'babbage',
|
|
'omni-moderation',
|
|
'text-moderation',
|
|
'text-adb',
|
|
'text-ada',
|
|
'computer-use',
|
|
],
|
|
openAIType: 'platform',
|
|
},
|
|
{ slug: 'openai', keywords: ['^gpt-', '/gpt-', 'openai'] },
|
|
{ slug: 'glmv', keywords: ['^glm-(.*)v', '/glm-(.*)v', '-glm-(.*)v'] },
|
|
{
|
|
slug: 'zai',
|
|
keywords: ['^glm-5', '/glm-5', '/glm5', '-glm-4', '^glm-4', '/glm-4', '/glm4', '-glm-5'],
|
|
},
|
|
{ slug: 'chatglm', keywords: ['^glm-', '/glm-', 'chatglm', '-glm-'] },
|
|
{ slug: 'codegeex', keywords: ['^codegeex', '/codegeex'] },
|
|
{ slug: 'claude', keywords: ['claude'] },
|
|
{ slug: 'anthropic', keywords: ['anthropic'] },
|
|
{ slug: 'aws', keywords: ['titan'] },
|
|
{ slug: 'fireworks', keywords: ['accounts/fireworks/models/fire'] },
|
|
{ slug: 'internlm', keywords: ['internlm', 'internvl'] },
|
|
{ slug: 'nousresearch', keywords: ['deephermes', 'hermes', 'genstruct', 'minos'] },
|
|
{ slug: 'nvidia', keywords: ['nemotron', 'openreasoning', 'nemoretriever', 'neva-', 'nv-'] },
|
|
{ slug: 'meta', keywords: ['llama', '/l3'] },
|
|
{ slug: 'llava', keywords: ['llava'] },
|
|
{
|
|
slug: 'nanobanana',
|
|
keywords: [
|
|
'gemini-3.1-flash-image-preview',
|
|
'gemini-3-pro-image-preview',
|
|
'gemini-\\d+(?:\\.\\d+)?-(?:flash(?:-lite)?|pro)-image(?:-preview)?(?::|$)',
|
|
'nanobanana',
|
|
'nano-banana',
|
|
],
|
|
},
|
|
{ slug: 'gemini', keywords: ['gemini'] },
|
|
{ slug: 'deepmind', keywords: ['^imagen-', '/imagen-', '^imagen\\d/', '/imagen\\d'] },
|
|
{ slug: 'gemma', keywords: ['gemma'] },
|
|
{ slug: 'moonshot', keywords: ['kimi', 'moonshot'] },
|
|
{ slug: 'qiniu', keywords: ['qiniu'] },
|
|
{
|
|
slug: 'qwen',
|
|
keywords: ['qwen', 'qwq', 'qvq', 'wanx', 'wan\\d/', 'wan\\d\\.\\d-', 'tongyi', 'gte-rerank'],
|
|
},
|
|
{ slug: 'minimax', keywords: ['minimax', 'abab', '^image-'] },
|
|
{
|
|
slug: 'mistral',
|
|
keywords: [
|
|
'mistral',
|
|
'mixtral',
|
|
'codestral',
|
|
'mathstral',
|
|
'/mn-',
|
|
'pixtral',
|
|
'ministral',
|
|
'magistral',
|
|
'devstral',
|
|
'voxtral',
|
|
],
|
|
},
|
|
{ slug: 'perplexity', keywords: ['pplx', 'sonar'] },
|
|
{ slug: 'yi', keywords: ['^yi-', '/yi-', '-yi-'] },
|
|
{ slug: 'openrouter', keywords: ['^openrouter'] },
|
|
{ slug: 'relace', keywords: ['^relace-', '/relace-'] },
|
|
{
|
|
slug: 'arcee',
|
|
keywords: [
|
|
'^trinity-',
|
|
'/trinity-',
|
|
'afm-4.5b',
|
|
'caller-large',
|
|
'spotlight',
|
|
'maestro-reasoning',
|
|
'virtuoso-medium-v2',
|
|
'virtuoso-large',
|
|
'coder-large',
|
|
'arcee-blitz',
|
|
],
|
|
},
|
|
{ slug: 'essentialai', keywords: ['^rnj-', '/rnj-'] },
|
|
{ slug: 'deepcogito', keywords: ['^deepcogito-', '/deepcogito-', '^cogito-', '/cogito-'] },
|
|
{ slug: 'morph', keywords: ['^morph-', '/morph-'] },
|
|
{ slug: 'ai2', keywords: ['^olmo-', '/olmo-'] },
|
|
{ slug: 'inception', keywords: ['^mercury', '/mercury'] },
|
|
{ slug: 'openchat', keywords: ['^openchat'] },
|
|
{ slug: 'aya', keywords: ['aya'] },
|
|
{ slug: 'cohere', keywords: ['command'] },
|
|
{ slug: 'dbrx', keywords: ['dbrx'] },
|
|
{ slug: 'stepfun', keywords: ['step'] },
|
|
{ slug: 'aimass', keywords: ['taichu'] },
|
|
{ slug: 'ai360', keywords: ['360gpt', '360zhinao'] },
|
|
{ slug: 'baichuan', keywords: ['baichuan'] },
|
|
{ slug: 'rwkv', keywords: ['rwkv', '/eagle-'] },
|
|
{ slug: 'wenxin', keywords: ['ernie', 'irag'] },
|
|
{ slug: 'jina', keywords: ['^jina', '/jina'] },
|
|
{ slug: 'jimeng', keywords: ['^jimeng-', '/jimeng-', 'seedream', 'seededit', 'seedance-'] },
|
|
{ slug: 'doubao', keywords: ['^ep-', 'doubao-'] },
|
|
{ slug: 'kling', keywords: ['^kling', 'kling-', 'klingai'] },
|
|
{ slug: 'hunyuan', keywords: ['hunyuan'] },
|
|
{ slug: 'fishaudio', keywords: ['^d_', '^g_', '^wd_'] },
|
|
{ slug: 'bytedance', keywords: ['skylark', 'seed-', 'bytedance'] },
|
|
{ slug: 'burncloud', keywords: ['burncloud'] },
|
|
{
|
|
slug: 'stability',
|
|
keywords: [
|
|
'stable-diffusion',
|
|
'stable-video',
|
|
'stable-cascade',
|
|
'sdxl',
|
|
'stablelm',
|
|
'^stable-',
|
|
'^sd3',
|
|
'^sd2',
|
|
'^sd1',
|
|
],
|
|
},
|
|
{ slug: 'flux', keywords: ['flux'] },
|
|
{ slug: 'suno', keywords: ['suno'] },
|
|
{ slug: 'microsoft', keywords: ['wizardlm', '/phi-', '^phi-', '-phi-', 'mai-', 'microsoft'] },
|
|
{ slug: 'adobe', keywords: ['firefly'] },
|
|
{ slug: 'ai21', keywords: ['jamba', '^j2-', 'ai21'] },
|
|
{ slug: 'upstage', keywords: ['^solar-', '/solar'] },
|
|
{ slug: 'palm', keywords: ['palm'] },
|
|
{ slug: 'sensenova', keywords: ['SenseChat', 'SenseNova'] },
|
|
{ slug: 'grok', keywords: ['^grok-', '/grok-'] },
|
|
{ slug: 'ideogram', keywords: ['ideogram', '^v_1', '^v_2', '^v3$', '^upscale$', '^describe$'] },
|
|
{
|
|
slug: 'spark',
|
|
keywords: [
|
|
'spark',
|
|
'general$',
|
|
'generalv3$',
|
|
'generalv3.5$',
|
|
'4.0ultra$',
|
|
'pro-128k$',
|
|
'^max-32k$',
|
|
'^lite$',
|
|
'^x1$',
|
|
],
|
|
},
|
|
{ slug: 'udio', keywords: ['udio'] },
|
|
{ slug: 'deepseek', keywords: ['deepseek'] },
|
|
{ slug: 'voyage', keywords: ['voyage'] },
|
|
{ slug: 'assemblyai', keywords: ['assemblyai'] },
|
|
{ slug: 'liquid', keywords: ['liquid', 'lfm'] },
|
|
{ slug: 'inflection', keywords: ['inflection-'] },
|
|
{ slug: 'aionlabs', keywords: ['aion-'] },
|
|
{ slug: 'aihubmix', keywords: ['aihubmix'] },
|
|
{ slug: 'v0', keywords: ['^v0-'] },
|
|
{ slug: 'vertexai', keywords: ['^veo-', '/veo-', '^veo3'] },
|
|
{ slug: 'google', keywords: ['google', 'learnlm', 'nano-banana'] },
|
|
{ slug: 'cogview', keywords: ['cogview'] },
|
|
{ slug: 'kolors', keywords: ['kolors'] },
|
|
{ slug: 'baiducloud', keywords: ['baidu', 'qianfan'] },
|
|
{ slug: 'phind', keywords: ['phind'] },
|
|
{ slug: 'dolphin', keywords: ['dolphin'] },
|
|
{ slug: 'ibm', keywords: ['ibm', 'granite'] },
|
|
{ slug: 'skywork', keywords: ['skywork'] },
|
|
{ slug: 'bilibiliindex', keywords: ['bilibili-index', 'index-tts'] },
|
|
{ slug: 'bilibili', keywords: ['bilibili'] },
|
|
{ slug: 'lg', keywords: ['kmmlu', 'exaone', 'lgai'] },
|
|
{ slug: 'tii', keywords: ['falcon'] },
|
|
{ slug: 'menlo', keywords: ['menlo', 'lucy', 'jan-nano'] },
|
|
{ slug: 'longcat', keywords: ['longcat'] },
|
|
{ slug: 'kwaipilot', keywords: ['kat-'] },
|
|
{ slug: 'nova', keywords: ['^nova-', '/nova-'] },
|
|
{ slug: 'xiaomimimo', keywords: ['^mimo-', '/mimo-'] },
|
|
{ slug: 'baai', keywords: ['^baai', '^bge-', '/beg-', 'touchd', 'robobrain'] },
|
|
{ slug: 'ace', keywords: ['ace-step'] },
|
|
]
|
|
|
|
export const openAIModelBackgrounds: Record<
|
|
NonNullable<LobeModelIconMapping['openAIType']>,
|
|
string
|
|
> = {
|
|
gpt3: '#19C37D',
|
|
gpt4: '#AB68FF',
|
|
gpt5: '#F86AA4',
|
|
o1: '#F9C322',
|
|
oss: '#0099FF',
|
|
platform: '#0000FE',
|
|
}
|