balibabu
feat: create a chat assistant and extract SimilaritySlider (#67)
8c4ec99
raw
history blame
4.22 kB
import { useTranslation } from 'react-i18next';
import { useEffect, useState } from 'react';
import styles from './index.less';
import { RadarChartOutlined } from '@ant-design/icons';
import { ProCard } from '@ant-design/pro-components';
import { Button, Card, Col, Row, Tag } from 'antd';
import { useDispatch, useSelector } from 'umi';
interface DataType {
key: React.Key;
name: string;
age: number;
address: string;
description: string;
}
const SettingList = () => {
const dispatch = useDispatch();
const settingModel = useSelector((state: any) => state.settingModel);
const { llmInfo = {}, factoriesList, myLlm = [] } = settingModel;
const { OpenAI = [], tongyi = [] } = llmInfo;
const [collapsed, setCollapsed] = useState(true);
const { t } = useTranslation();
useEffect(() => {
dispatch({
type: 'settingModel/factories_list',
payload: {},
});
dispatch({
type: 'settingModel/llm_list',
payload: {},
});
dispatch({
type: 'settingModel/my_llm',
payload: {},
});
}, [dispatch]);
return (
<div
className={styles.list}
style={{
display: 'flex',
flexDirection: 'column',
padding: 24,
gap: 12,
}}
>
{myLlm.map((item: any) => {
return (
<ProCard
key={item.llm_factory}
// title={<div>可折叠-图标自定义</div>}
collapsibleIconRender={({
collapsed: buildInCollapsed,
}: {
collapsed: boolean;
}) => {
return (
<div>
<h3>
<RadarChartOutlined />
{item.llm_factory}
</h3>
<div>
{item.tags.split(',').map((d: string) => {
return <Tag key={d}>{d}</Tag>;
})}
</div>
{buildInCollapsed ? (
<span>显示{OpenAI.length}个模型</span>
) : (
<span>收起{OpenAI.length}个模型 </span>
)}
</div>
);
}}
extra={
<Button
size="small"
type="link"
onClick={(e) => {
e.stopPropagation();
dispatch({
type: 'settingModel/updateState',
payload: {
llm_factory: item.llm_factory,
isShowSAKModal: true,
},
});
}}
>
设置
</Button>
}
style={{ marginBlockStart: 16 }}
headerBordered
collapsible
defaultCollapsed
></ProCard>
);
})}
<Row gutter={{ xs: 8, sm: 16, md: 24, lg: 32 }}>
{factoriesList.map((item: any) => {
return (
<Col key={item.name} xs={24} sm={12} md={8} lg={6}>
<Card
title={item.name}
bordered={false}
extra={
<Button
size="small"
type="link"
onClick={(e) => {
e.stopPropagation();
dispatch({
type: 'settingModel/updateState',
payload: {
llm_factory: item.name,
isShowSAKModal: true,
},
});
}}
>
设置
</Button>
}
>
<div>
{item.tags.split(',').map((d: string) => {
return <Tag key={d}>{d}</Tag>;
})}
</div>
</Card>
</Col>
);
})}
</Row>
</div>
);
};
export default SettingList;