liuhua
Add api for sessions and add max_tokens for tenant_llm (#3472)
99ac12c
raw
history blame
3.4 kB
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;