chore: copy model-tag from user-view

main
jialin 11 months ago
parent 4c77151877
commit 6ea8cc9986

@ -0,0 +1,71 @@
import IconFont from '@/components/icon-font';
import {
AudioOutlined,
PictureOutlined,
WechatWorkOutlined
} from '@ant-design/icons';
import { Tag } from 'antd';
import { modelCategoriesMap } from '../config';
const categoryConfig = {
[modelCategoriesMap.reranker]: {
icon: <IconFont type="icon-rank1" />,
color: 'cyan',
label: 'Reranker'
},
[modelCategoriesMap.embedding]: {
icon: <IconFont type="icon-cube" />,
color: 'purple',
label: 'Embedding'
},
[modelCategoriesMap.text_to_speech]: {
icon: <IconFont type="icon-sound-wave" />,
color: 'geekblue',
label: 'Text-To-Speech'
},
[modelCategoriesMap.speech_to_text]: {
icon: <AudioOutlined />,
color: 'processing',
label: 'Speech-To-Text'
},
[modelCategoriesMap.image]: {
icon: <PictureOutlined />,
color: 'orange',
label: 'Image'
},
[modelCategoriesMap.llm]: {
icon: <WechatWorkOutlined />,
color: 'green',
label: 'LLM'
}
};
interface ModelTagProps {
categoryKey: keyof typeof categoryConfig;
size?: number;
}
const ModelTag: React.FC<ModelTagProps> = ({ categoryKey, size }) => {
const config = categoryConfig[categoryKey];
if (!config) return null;
return (
<Tag
icon={config.icon}
style={{
height: size,
margin: 0,
opacity: 1,
paddingInline: 8,
borderRadius: 12,
transform: 'scale(0.9)'
}}
color={config.color}
>
{config.label}
</Tag>
);
};
export default ModelTag;

@ -19,28 +19,16 @@ import {
} from '@/pages/resources/config/types';
import { handleBatchRequest } from '@/utils';
import {
AudioOutlined,
DeleteOutlined,
DownOutlined,
EditOutlined,
ExperimentOutlined,
PictureOutlined,
QuestionCircleOutlined,
SyncOutlined,
WechatWorkOutlined
SyncOutlined
} from '@ant-design/icons';
import { PageContainer } from '@ant-design/pro-components';
import { Access, useAccess, useIntl, useNavigate } from '@umijs/max';
import {
Button,
Dropdown,
Input,
Select,
Space,
Tag,
Tooltip,
message
} from 'antd';
import { Button, Dropdown, Input, Select, Space, Tooltip, message } from 'antd';
import dayjs from 'dayjs';
import { useAtom } from 'jotai';
import _ from 'lodash';
@ -66,6 +54,7 @@ import { FormData, ListItem, ModelInstanceListItem } from '../config/types';
import DeployDropdown from './deploy-dropdown';
import DeployModal from './deploy-modal';
import InstanceItem from './instance-item';
import ModelTag from './model-tag';
import UpdateModel from './update-modal';
import ViewLogsModal from './view-logs-modal';
@ -584,116 +573,6 @@ const Models: React.FC<ModelsProps> = ({
[handleViewLogs, handleDeleteInstace]
);
const renderModelTags = useCallback(
(record: ListItem) => {
if (record.categories?.includes(modelCategoriesMap.reranker)) {
return (
<Tag
icon={<IconFont type="icon-rank1"></IconFont>}
style={{
margin: 0,
opacity: 1,
paddingInline: 8,
borderRadius: 12,
transform: 'scale(0.9)'
}}
color="cyan"
>
Reranker
</Tag>
);
}
if (record.categories?.includes(modelCategoriesMap.embedding)) {
return (
<Tag
icon={<IconFont type="icon-cube"></IconFont>}
style={{
margin: 0,
opacity: 1,
paddingInline: 8,
borderRadius: 12,
transform: 'scale(0.9)'
}}
color="purple"
>
Embedding
</Tag>
);
}
if (record.categories?.includes(modelCategoriesMap.text_to_speech)) {
return (
<Tag
icon={<IconFont type="icon-sound-wave"></IconFont>}
style={{
margin: 0,
opacity: 1,
paddingInline: 8,
borderRadius: 12,
transform: 'scale(0.9)'
}}
color="geekblue"
>
Text-To-Speech
</Tag>
);
}
if (record.categories?.includes(modelCategoriesMap.speech_to_text)) {
return (
<Tag
icon={<AudioOutlined />}
style={{
margin: 0,
opacity: 1,
paddingInline: 8,
borderRadius: 12,
transform: 'scale(0.9)'
}}
color="processing"
>
Speech-To-Text
</Tag>
);
}
if (record.categories?.includes(modelCategoriesMap.image)) {
return (
<Tag
icon={<PictureOutlined />}
style={{
margin: 0,
opacity: 1,
paddingInline: 8,
borderRadius: 12,
transform: 'scale(0.9)'
}}
color="orange"
>
Image
</Tag>
);
}
if (record.categories?.includes(modelCategoriesMap.llm)) {
return (
<Tag
icon={<WechatWorkOutlined />}
style={{
margin: 0,
opacity: 1,
paddingInline: 8,
borderRadius: 12,
transform: 'scale(0.9)'
}}
color="green"
>
LLM
</Tag>
);
}
return null;
},
[intl]
);
const renderChildren = useCallback(
(list: any, parent?: any) => {
return (
@ -939,7 +818,9 @@ const Models: React.FC<ModelsProps> = ({
<AutoTooltip ghost>
<span className="m-r-5">{text}</span>
</AutoTooltip>
{renderModelTags(record)}
<ModelTag
categoryKey={record.categories?.[0] || ''}
></ModelTag>
</span>
);
}}

Loading…
Cancel
Save