|
import { connect, Dispatch } from 'umi';
|
|
import i18n from 'i18next';
|
|
import { useTranslation, Trans } from 'react-i18next'
|
|
|
|
import styles from './index.less';
|
|
import type { ColumnsType } from 'antd/es/table';
|
|
import { useEffect, useState, FC } from 'react';
|
|
|
|
import { RadarChartOutlined } from '@ant-design/icons';
|
|
import { ProCard } from '@ant-design/pro-components';
|
|
import { Button, Tag, Row, Col, Card } from 'antd';
|
|
|
|
|
|
interface DataType {
|
|
key: React.Key;
|
|
name: string;
|
|
age: number;
|
|
address: string;
|
|
description: string;
|
|
}
|
|
interface ListProps {
|
|
dispatch: Dispatch;
|
|
settingModel: any
|
|
}
|
|
const Index: FC<ListProps> = ({ settingModel, dispatch }) => {
|
|
const { llmInfo = {}, factoriesList, myLlm = [] } = settingModel
|
|
const { OpenAI = [], tongyi = [] } = llmInfo
|
|
console.log(OpenAI)
|
|
const [collapsed, setCollapsed] = useState(true);
|
|
const { t } = useTranslation()
|
|
const columns: ColumnsType<DataType> = [
|
|
{ title: 'Name', dataIndex: 'name', key: 'name' },
|
|
{ title: 'Age', dataIndex: 'age', key: 'age' },
|
|
{
|
|
title: 'Action',
|
|
dataIndex: '',
|
|
key: 'x',
|
|
render: () => <a>Delete</a>,
|
|
},
|
|
];
|
|
useEffect(() => {
|
|
dispatch({
|
|
type: 'settingModel/factories_list',
|
|
payload: {
|
|
},
|
|
});
|
|
dispatch({
|
|
type: 'settingModel/llm_list',
|
|
payload: {
|
|
},
|
|
});
|
|
dispatch({
|
|
type: 'settingModel/my_llm',
|
|
payload: {
|
|
},
|
|
});
|
|
|
|
}, [])
|
|
const data: DataType[] = [
|
|
{
|
|
key: 1,
|
|
name: 'John Brown',
|
|
age: 32,
|
|
address: 'New York No. 1 Lake Park',
|
|
description: 'My name is John Brown, I am 32 years old, living in New York No. 1 Lake Park.',
|
|
},
|
|
{
|
|
key: 2,
|
|
name: 'Jim Green',
|
|
age: 42,
|
|
address: 'London No. 1 Lake Park',
|
|
description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.',
|
|
},
|
|
{
|
|
key: 3,
|
|
name: 'Not Expandable',
|
|
age: 29,
|
|
address: 'Jiangsu No. 1 Lake Park',
|
|
description: 'This not expandable',
|
|
},
|
|
{
|
|
key: 4,
|
|
name: 'Joe Black',
|
|
age: 32,
|
|
address: 'Sydney No. 1 Lake Park',
|
|
description: 'My name is Joe Black, I am 32 years old, living in Sydney No. 1 Lake Park.',
|
|
},
|
|
];
|
|
|
|
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
|
|
>
|
|
{/* <ul>
|
|
{OpenAI.map(item => {
|
|
return <li key={item.llm_name}>
|
|
<span>{item.llm_name}</span>
|
|
<span className={styles[item.available ? 'statusAvailable' : 'statusDisaabled']}>
|
|
</span>
|
|
</li>
|
|
})}
|
|
</ul> */}
|
|
</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 connect(({ settingModel, loading }) => ({ settingModel, loading }))(Index);
|
|
|