File size: 3,039 Bytes
e55650e
 
3054c20
452020d
058cd84
452020d
88e5a61
452020d
 
 
e55650e
8c4ec99
 
 
 
88e5a61
8c4ec99
3054c20
 
 
 
 
 
 
452020d
 
 
 
 
 
 
 
88e5a61
7c07000
452020d
7c07000
452020d
3054c20
 
88e5a61
3054c20
 
 
 
 
 
 
 
 
 
88e5a61
 
 
3054c20
 
452020d
84f80c5
 
88e5a61
0957ae0
84f80c5
88e5a61
84f80c5
8c4ec99
 
88e5a61
 
8c4ec99
 
 
 
 
88e5a61
 
8c4ec99
 
452020d
ae21b62
 
88e5a61
 
 
ae21b62
452020d
 
8c4ec99
88e5a61
8c4ec99
88e5a61
8c4ec99
 
 
7c07000
8c4ec99
 
 
 
 
 
 
88e5a61
8c4ec99
 
452020d
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import { useFetchKnowledgeList } from '@/hooks/knowledgeHook';
import { PlusOutlined } from '@ant-design/icons';
import { Form, Input, Select, Upload } from 'antd';
import classNames from 'classnames';
import { ISegmentedContentProps } from '../interface';

import { useTranslate } from '@/hooks/commonHooks';
import styles from './index.less';

const AssistantSetting = ({ show }: ISegmentedContentProps) => {
  const { list: knowledgeList } = useFetchKnowledgeList(true);
  const knowledgeOptions = knowledgeList.map((x) => ({
    label: x.name,
    value: x.id,
  }));
  const { t } = useTranslate('chat');

  const normFile = (e: any) => {
    if (Array.isArray(e)) {
      return e;
    }
    return e?.fileList;
  };

  return (
    <section
      className={classNames({
        [styles.segmentedHidden]: !show,
      })}
    >
      <Form.Item
        name={'name'}
        label={t('assistantName')}
        rules={[{ required: true, message: t('assistantNameMessage') }]}
      >
        <Input placeholder={t('namePlaceholder')} />
      </Form.Item>
      <Form.Item
        name="icon"
        label={t('assistantAvatar')}
        valuePropName="fileList"
        getValueFromEvent={normFile}
      >
        <Upload
          listType="picture-card"
          maxCount={1}
          showUploadList={{ showPreviewIcon: false, showRemoveIcon: false }}
        >
          <button style={{ border: 0, background: 'none' }} type="button">
            <PlusOutlined />
            <div style={{ marginTop: 8 }}>
              {t('upload', { keyPrefix: 'common' })}
            </div>
          </button>
        </Upload>
      </Form.Item>
      <Form.Item
        name={'language'}
        label={t('language')}
        initialValue={'English'}
        tooltip="coming soon"
        style={{ display: 'none' }}
      >
        <Select
          options={[
            { value: 'Chinese', label: t('chinese', { keyPrefix: 'common' }) },
            { value: 'English', label: t('english', { keyPrefix: 'common' }) },
          ]}
        />
      </Form.Item>
      <Form.Item
        name={['prompt_config', 'empty_response']}
        label={t('emptyResponse')}
        tooltip={t('emptyResponseTip')}
      >
        <Input placeholder="" />
      </Form.Item>
      <Form.Item
        name={['prompt_config', 'prologue']}
        label={t('setAnOpener')}
        tooltip={t('setAnOpenerTip')}
        initialValue={t('setAnOpenerInitial')}
      >
        <Input.TextArea autoSize={{ minRows: 5 }} />
      </Form.Item>
      <Form.Item
        label={t('knowledgeBases')}
        name="kb_ids"
        tooltip={t('knowledgeBasesTip')}
        rules={[
          {
            required: true,
            message: t('knowledgeBasesMessage'),
            type: 'array',
          },
        ]}
      >
        <Select
          mode="multiple"
          options={knowledgeOptions}
          placeholder={t('knowledgeBasesMessage')}
        ></Select>
      </Form.Item>
    </section>
  );
};

export default AssistantSetting;