File size: 2,976 Bytes
e55650e
 
3054c20
452020d
058cd84
452020d
 
 
 
e55650e
8c4ec99
 
 
 
 
3054c20
 
 
 
 
 
 
452020d
 
 
 
 
 
 
 
 
 
 
 
 
3054c20
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
452020d
84f80c5
 
 
 
 
b7adc24
84f80c5
8c4ec99
 
 
 
 
 
 
 
 
 
b7adc24
 
8c4ec99
 
452020d
ae21b62
 
 
b7adc24
ae21b62
 
452020d
 
8c4ec99
b7adc24
8c4ec99
b7adc24
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
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 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 normFile = (e: any) => {
    if (Array.isArray(e)) {
      return e;
    }
    return e?.fileList;
  };

  return (
    <section
      className={classNames({
        [styles.segmentedHidden]: !show,
      })}
    >
      <Form.Item
        name={'name'}
        label="Assistant name"
        rules={[{ required: true }]}
      >
        <Input placeholder="e.g. Resume Jarvis" />
      </Form.Item>
      <Form.Item
        name="icon"
        label="Assistant avatar"
        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 }}>Upload</div>
          </button>
        </Upload>
      </Form.Item>
      <Form.Item
        name={'language'}
        label="Language"
        initialValue={'Chinese'}
        tooltip="coming soon"
        style={{display:'none'}}
      >
        <Select
          options={[
            { value: 'Chinese', label: 'Chinese' },
            { value: 'English', label: 'English' },
          ]}
        />
      </Form.Item>
      <Form.Item
        name={['prompt_config', 'empty_response']}
        label="Empty response"
        tooltip="If nothing is retrieved with user's question in the knowledgebase, it will use this as an answer.
        If you want LLM comes up with its own opinion when nothing is retrieved, leave this blank."
      >
        <Input placeholder="" />
      </Form.Item>
      <Form.Item
        name={['prompt_config', 'prologue']}
        label="Set an opener"
        tooltip="How do you want to welcome your clients?"
        initialValue={"Hi! I'm your assistant, what can I do for you?"}
      >
        <Input.TextArea autoSize={{ minRows: 5 }} />
      </Form.Item>
      <Form.Item
        label="Knowledgebases"
        name="kb_ids"
        tooltip="Select knowledgebases associated."
        rules={[
          {
            required: true,
            message: 'Please select!',
            type: 'array',
          },
        ]}
      >
        <Select
          mode="multiple"
          options={knowledgeOptions}
          placeholder="Please select"
        ></Select>
      </Form.Item>
    </section>
  );
};

export default AssistantSetting;