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.

index.tsx 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. import { useTranslate } from '@/hooks/common-hooks';
  2. import { IModalProps } from '@/interfaces/common';
  3. import { IAddLlmRequestBody } from '@/interfaces/request/llm';
  4. import { Flex, Form, Input, Modal, Select, Space } from 'antd';
  5. import omit from 'lodash/omit';
  6. type FieldType = IAddLlmRequestBody & {
  7. TencentCloud_sid: string;
  8. TencentCloud_sk: string;
  9. };
  10. const { Option } = Select;
  11. const TencentCloudModal = ({
  12. visible,
  13. hideModal,
  14. onOk,
  15. loading,
  16. llmFactory,
  17. }: IModalProps<IAddLlmRequestBody> & { llmFactory: string }) => {
  18. const [form] = Form.useForm<FieldType>();
  19. const { t } = useTranslate('setting');
  20. const handleOk = async () => {
  21. const values = await form.validateFields();
  22. const modelType = values.model_type;
  23. const data = {
  24. ...omit(values),
  25. model_type: modelType,
  26. llm_factory: llmFactory,
  27. max_tokens: 16000,
  28. };
  29. console.info(data);
  30. onOk?.(data);
  31. };
  32. const handleKeyDown = async (e: React.KeyboardEvent) => {
  33. if (e.key === 'Enter') {
  34. await handleOk();
  35. }
  36. };
  37. return (
  38. <Modal
  39. title={t('addLlmTitle', { name: llmFactory })}
  40. open={visible}
  41. onOk={handleOk}
  42. onCancel={hideModal}
  43. okButtonProps={{ loading }}
  44. footer={(originNode: React.ReactNode) => {
  45. return (
  46. <Flex justify={'space-between'}>
  47. <a
  48. href={`https://cloud.tencent.com/document/api/1093/37823`}
  49. target="_blank"
  50. rel="noreferrer"
  51. >
  52. {t('TencentCloudLink')}
  53. </a>
  54. <Space>{originNode}</Space>
  55. </Flex>
  56. );
  57. }}
  58. confirmLoading={loading}
  59. >
  60. <Form>
  61. <Form.Item<FieldType>
  62. label={t('modelType')}
  63. name="model_type"
  64. initialValue={'speech2text'}
  65. rules={[{ required: true, message: t('modelTypeMessage') }]}
  66. >
  67. <Select placeholder={t('modelTypeMessage')}>
  68. <Option value="speech2text">speech2text</Option>
  69. </Select>
  70. </Form.Item>
  71. <Form.Item<FieldType>
  72. label={t('modelName')}
  73. name="llm_name"
  74. initialValue={'16k_zh'}
  75. rules={[{ required: true, message: t('SparkModelNameMessage') }]}
  76. >
  77. <Select placeholder={t('modelTypeMessage')}>
  78. <Option value="16k_zh">16k_zh</Option>
  79. <Option value="16k_zh_large">16k_zh_large</Option>
  80. <Option value="16k_multi_lang">16k_multi_lang</Option>
  81. <Option value="16k_zh_dialect">16k_zh_dialect</Option>
  82. <Option value="16k_en">16k_en</Option>
  83. <Option value="16k_yue">16k_yue</Option>
  84. <Option value="16k_zh-PY">16k_zh-PY</Option>
  85. <Option value="16k_ja">16k_ja</Option>
  86. <Option value="16k_ko">16k_ko</Option>
  87. <Option value="16k_vi">16k_vi</Option>
  88. <Option value="16k_ms">16k_ms</Option>
  89. <Option value="16k_id">16k_id</Option>
  90. <Option value="16k_fil">16k_fil</Option>
  91. <Option value="16k_th">16k_th</Option>
  92. <Option value="16k_pt">16k_pt</Option>
  93. <Option value="16k_tr">16k_tr</Option>
  94. <Option value="16k_ar">16k_ar</Option>
  95. <Option value="16k_es">16k_es</Option>
  96. <Option value="16k_hi">16k_hi</Option>
  97. <Option value="16k_fr">16k_fr</Option>
  98. <Option value="16k_zh_medical">16k_zh_medical</Option>
  99. <Option value="16k_de">16k_de</Option>
  100. </Select>
  101. </Form.Item>
  102. <Form.Item<FieldType>
  103. label={t('addTencentCloudSID')}
  104. name="TencentCloud_sid"
  105. rules={[{ required: true, message: t('TencentCloudSIDMessage') }]}
  106. >
  107. <Input
  108. placeholder={t('TencentCloudSIDMessage')}
  109. onKeyDown={handleKeyDown}
  110. />
  111. </Form.Item>
  112. <Form.Item<FieldType>
  113. label={t('addTencentCloudSK')}
  114. name="TencentCloud_sk"
  115. rules={[{ required: true, message: t('TencentCloudSKMessage') }]}
  116. >
  117. <Input
  118. placeholder={t('TencentCloudSKMessage')}
  119. onKeyDown={handleKeyDown}
  120. />
  121. </Form.Item>
  122. </Form>
  123. </Modal>
  124. );
  125. };
  126. export default TencentCloudModal;