| import { IModalManagerChildrenProps } from '@/components/modal-manager'; |
| import { useTranslate } from '@/hooks/common-hooks'; |
| import { Form, Input, Modal } from 'antd'; |
| import { useEffect } from 'react'; |
| import { ApiKeyPostBody } from '../../interface'; |
|
|
| interface IProps extends Omit<IModalManagerChildrenProps, 'showModal'> { |
| loading: boolean; |
| initialValue: string; |
| llmFactory: string; |
| onOk: (postBody: ApiKeyPostBody) => void; |
| showModal?(): void; |
| } |
|
|
| type FieldType = { |
| api_key?: string; |
| base_url?: string; |
| group_id?: string; |
| }; |
|
|
| const modelsWithBaseUrl = ['OpenAI', 'Azure-OpenAI']; |
|
|
| const ApiKeyModal = ({ |
| visible, |
| hideModal, |
| llmFactory, |
| loading, |
| initialValue, |
| onOk, |
| }: IProps) => { |
| const [form] = Form.useForm(); |
| const { t } = useTranslate('setting'); |
|
|
| const handleOk = async () => { |
| const ret = await form.validateFields(); |
|
|
| return onOk(ret); |
| }; |
|
|
| useEffect(() => { |
| if (visible) { |
| form.setFieldValue('api_key', initialValue); |
| } |
| }, [initialValue, form, visible]); |
|
|
| return ( |
| <Modal |
| title={t('modify')} |
| open={visible} |
| onOk={handleOk} |
| onCancel={hideModal} |
| okButtonProps={{ loading }} |
| confirmLoading={loading} |
| > |
| <Form |
| name="basic" |
| labelCol={{ span: 6 }} |
| wrapperCol={{ span: 18 }} |
| style={{ maxWidth: 600 }} |
| autoComplete="off" |
| form={form} |
| > |
| <Form.Item<FieldType> |
| label={t('apiKey')} |
| name="api_key" |
| tooltip={t('apiKeyTip')} |
| rules={[{ required: true, message: t('apiKeyMessage') }]} |
| > |
| <Input /> |
| </Form.Item> |
| {modelsWithBaseUrl.some((x) => x === llmFactory) && ( |
| <Form.Item<FieldType> |
| label={t('baseUrl')} |
| name="base_url" |
| tooltip={t('baseUrlTip')} |
| > |
| <Input placeholder="https://api.openai.com/v1" /> |
| </Form.Item> |
| )} |
| {llmFactory?.toLowerCase() === 'Minimax'.toLowerCase() && ( |
| <Form.Item<FieldType> label={'Group ID'} name="group_id"> |
| <Input /> |
| </Form.Item> |
| )} |
| </Form> |
| </Modal> |
| ); |
| }; |
|
|
| export default ApiKeyModal; |
|
|