File size: 3,306 Bytes
68ed806 dea956e 63f5b44 dea956e aafe599 63f5b44 aafe599 dea956e 63f5b44 dea956e aafe599 dea956e 63f5b44 dea956e 63f5b44 dea956e 63f5b44 dea956e 63f5b44 dea956e 63f5b44 dea956e 63f5b44 dea956e 63f5b44 dea956e 63f5b44 dea956e 63f5b44 dea956e 63f5b44 dea956e 63f5b44 |
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 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
import { useTranslate } from '@/hooks/common-hooks';
import { IModalProps } from '@/interfaces/common';
import { IAddLlmRequestBody } from '@/interfaces/request/llm';
import { Flex, Form, Input, Modal, Select, Space } from 'antd';
import { useMemo } from 'react';
import { BedrockRegionList } from '../constant';
type FieldType = IAddLlmRequestBody & {
bedrock_ak: string;
bedrock_sk: string;
bedrock_region: string;
};
const { Option } = Select;
const BedrockModal = ({
visible,
hideModal,
onOk,
loading,
llmFactory,
}: IModalProps<IAddLlmRequestBody> & { llmFactory: string }) => {
const [form] = Form.useForm<FieldType>();
const { t } = useTranslate('setting');
const options = useMemo(
() => BedrockRegionList.map((x) => ({ value: x, label: t(x) })),
[t],
);
const handleOk = async () => {
const values = await form.validateFields();
const data = {
...values,
llm_factory: llmFactory,
};
onOk?.(data);
};
return (
<Modal
title={t('addLlmTitle', { name: llmFactory })}
open={visible}
onOk={handleOk}
onCancel={hideModal}
okButtonProps={{ loading }}
footer={(originNode: React.ReactNode) => {
return (
<Flex justify={'space-between'}>
<a
href="https://console.aws.amazon.com/"
target="_blank"
rel="noreferrer"
>
{t('ollamaLink', { name: llmFactory })}
</a>
<Space>{originNode}</Space>
</Flex>
);
}}
>
<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>
</Select>
</Form.Item>
<Form.Item<FieldType>
label={t('modelName')}
name="llm_name"
rules={[{ required: true, message: t('bedrockModelNameMessage') }]}
>
<Input placeholder={t('bedrockModelNameMessage')} />
</Form.Item>
<Form.Item<FieldType>
label={t('addBedrockEngineAK')}
name="bedrock_ak"
rules={[{ required: true, message: t('bedrockAKMessage') }]}
>
<Input placeholder={t('bedrockAKMessage')} />
</Form.Item>
<Form.Item<FieldType>
label={t('addBedrockSK')}
name="bedrock_sk"
rules={[{ required: true, message: t('bedrockSKMessage') }]}
>
<Input placeholder={t('bedrockSKMessage')} />
</Form.Item>
<Form.Item<FieldType>
label={t('bedrockRegion')}
name="bedrock_region"
rules={[{ required: true, message: t('bedrockRegionMessage') }]}
>
<Select
placeholder={t('bedrockRegionMessage')}
options={options}
allowClear
></Select>
</Form.Item>
</Form>
</Modal>
);
};
export default BedrockModal;
|