You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

configuration.tsx 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. import EntityTypesItem from '@/components/entity-types-item';
  2. import LayoutRecognize from '@/components/layout-recognize';
  3. import MaxTokenNumber from '@/components/max-token-number';
  4. import ParseConfiguration, {
  5. showRaptorParseConfiguration,
  6. } from '@/components/parse-configuration';
  7. import { useTranslate } from '@/hooks/common-hooks';
  8. import { normFile } from '@/utils/file-util';
  9. import { PlusOutlined } from '@ant-design/icons';
  10. import { Button, Form, Input, Radio, Select, Space, Upload } from 'antd';
  11. import { FormInstance } from 'antd/lib';
  12. import {
  13. useFetchKnowledgeConfigurationOnMount,
  14. useSubmitKnowledgeConfiguration,
  15. } from './hooks';
  16. import styles from './index.less';
  17. const { Option } = Select;
  18. const ConfigurationForm = ({ form }: { form: FormInstance }) => {
  19. const { submitKnowledgeConfiguration, submitLoading, navigateToDataset } =
  20. useSubmitKnowledgeConfiguration(form);
  21. const { parserList, embeddingModelOptions, disabled } =
  22. useFetchKnowledgeConfigurationOnMount(form);
  23. const { t } = useTranslate('knowledgeConfiguration');
  24. return (
  25. <Form form={form} name="validateOnly" layout="vertical" autoComplete="off">
  26. <Form.Item name="name" label={t('name')} rules={[{ required: true }]}>
  27. <Input />
  28. </Form.Item>
  29. <Form.Item
  30. name="avatar"
  31. label={t('photo')}
  32. valuePropName="fileList"
  33. getValueFromEvent={normFile}
  34. >
  35. <Upload
  36. listType="picture-card"
  37. maxCount={1}
  38. beforeUpload={() => false}
  39. showUploadList={{ showPreviewIcon: false, showRemoveIcon: false }}
  40. >
  41. <button style={{ border: 0, background: 'none' }} type="button">
  42. <PlusOutlined />
  43. <div style={{ marginTop: 8 }}>{t('upload')}</div>
  44. </button>
  45. </Upload>
  46. </Form.Item>
  47. <Form.Item name="description" label={t('description')}>
  48. <Input />
  49. </Form.Item>
  50. <Form.Item
  51. label={t('language')}
  52. name="language"
  53. initialValue={'English'}
  54. rules={[{ required: true, message: t('languageMessage') }]}
  55. >
  56. <Select placeholder={t('languagePlaceholder')}>
  57. <Option value="English">{t('english')}</Option>
  58. <Option value="Chinese">{t('chinese')}</Option>
  59. </Select>
  60. </Form.Item>
  61. <Form.Item
  62. name="permission"
  63. label={t('permissions')}
  64. tooltip={t('permissionsTip')}
  65. rules={[{ required: true }]}
  66. >
  67. <Radio.Group>
  68. <Radio value="me">{t('me')}</Radio>
  69. <Radio value="team">{t('team')}</Radio>
  70. </Radio.Group>
  71. </Form.Item>
  72. <Form.Item
  73. name="embd_id"
  74. label={t('embeddingModel')}
  75. rules={[{ required: true }]}
  76. tooltip={t('embeddingModelTip')}
  77. >
  78. <Select
  79. placeholder={t('embeddingModelPlaceholder')}
  80. options={embeddingModelOptions}
  81. disabled={disabled}
  82. ></Select>
  83. </Form.Item>
  84. <Form.Item
  85. name="parser_id"
  86. label={t('chunkMethod')}
  87. tooltip={t('chunkMethodTip')}
  88. rules={[{ required: true }]}
  89. >
  90. <Select placeholder={t('chunkMethodPlaceholder')} disabled={disabled}>
  91. {parserList.map((x) => (
  92. <Option value={x.value} key={x.value}>
  93. {x.label}
  94. </Option>
  95. ))}
  96. </Select>
  97. </Form.Item>
  98. <Form.Item noStyle dependencies={['parser_id']}>
  99. {({ getFieldValue }) => {
  100. const parserId = getFieldValue('parser_id');
  101. return (
  102. <>
  103. {parserId === 'knowledge_graph' && (
  104. <EntityTypesItem></EntityTypesItem>
  105. )}
  106. {parserId === 'naive' && (
  107. <>
  108. <MaxTokenNumber></MaxTokenNumber>
  109. <LayoutRecognize></LayoutRecognize>
  110. </>
  111. )}
  112. {showRaptorParseConfiguration(parserId) && (
  113. <ParseConfiguration></ParseConfiguration>
  114. )}
  115. </>
  116. );
  117. }}
  118. </Form.Item>
  119. <Form.Item>
  120. <div className={styles.buttonWrapper}>
  121. <Space>
  122. <Button size={'middle'} onClick={navigateToDataset}>
  123. {t('cancel')}
  124. </Button>
  125. <Button
  126. type="primary"
  127. size={'middle'}
  128. loading={submitLoading}
  129. onClick={submitKnowledgeConfiguration}
  130. >
  131. {t('save')}
  132. </Button>
  133. </Space>
  134. </div>
  135. </Form.Item>
  136. </Form>
  137. );
  138. };
  139. export default ConfigurationForm;