| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- import { useTranslate } from '@/hooks/common-hooks';
- import { IModalProps } from '@/interfaces/common';
- import { IAddLlmRequestBody } from '@/interfaces/request/llm';
- import { Form, Input, Modal, Select, InputNumber } from 'antd';
- import omit from 'lodash/omit';
-
- type FieldType = IAddLlmRequestBody & {
- vision: boolean;
- yiyan_ak: string;
- yiyan_sk: string;
- };
-
- const { Option } = Select;
-
- const YiyanModal = ({
- visible,
- hideModal,
- onOk,
- loading,
- llmFactory,
- }: IModalProps<IAddLlmRequestBody> & { llmFactory: string }) => {
- const [form] = Form.useForm<FieldType>();
-
- const { t } = useTranslate('setting');
-
- const handleOk = async () => {
- const values = await form.validateFields();
- const modelType =
- values.model_type === 'chat' && values.vision
- ? 'image2text'
- : values.model_type;
-
- const data = {
- ...omit(values, ['vision']),
- model_type: modelType,
- llm_factory: llmFactory,
- max_tokens:values.max_tokens,
- };
- console.info(data);
-
- onOk?.(data);
- };
-
- return (
- <Modal
- title={t('addLlmTitle', { name: llmFactory })}
- open={visible}
- onOk={handleOk}
- onCancel={hideModal}
- okButtonProps={{ loading }}
- confirmLoading={loading}
- >
- <Form
- name="basic"
- style={{ maxWidth: 600 }}
- autoComplete="off"
- layout={'vertical'}
- form={form}
- >
- <Form.Item<FieldType>
- label={t('modelType')}
- name="model_type"
- initialValue={'chat'}
- rules={[{ required: true, message: t('modelTypeMessage') }]}
- >
- <Select placeholder={t('modelTypeMessage')}>
- <Option value="chat">chat</Option>
- <Option value="embedding">embedding</Option>
- <Option value="rerank">rerank</Option>
- </Select>
- </Form.Item>
- <Form.Item<FieldType>
- label={t('modelName')}
- name="llm_name"
- rules={[{ required: true, message: t('yiyanModelNameMessage') }]}
- >
- <Input placeholder={t('yiyanModelNameMessage')} />
- </Form.Item>
- <Form.Item<FieldType>
- label={t('addyiyanAK')}
- name="yiyan_ak"
- rules={[{ required: true, message: t('yiyanAKMessage') }]}
- >
- <Input placeholder={t('yiyanAKMessage')} />
- </Form.Item>
- <Form.Item<FieldType>
- label={t('addyiyanSK')}
- name="yiyan_sk"
- rules={[{ required: true, message: t('yiyanSKMessage') }]}
- >
- <Input placeholder={t('yiyanSKMessage')} />
- </Form.Item>
- <Form.Item<FieldType>
- label={t('maxTokens')}
- name="max_tokens"
- rules={[
- { required: true, message: t('maxTokensMessage') },
- {
- type: 'number',
- message: t('maxTokensInvalidMessage'),
- },
- ({ getFieldValue }) => ({
- validator(_, value) {
- if (value < 0) {
- return Promise.reject(new Error(t('maxTokensMinMessage')));
- }
- return Promise.resolve();
- },
- }),
- ]}
- >
- <InputNumber
- placeholder={t('maxTokensTip')}
- style={{ width: '100%' }}
- />
- </Form.Item>
- </Form>
- </Modal>
- );
- };
-
- export default YiyanModal;
|