import { DynamicForm, FormFieldConfig, FormFieldType, } from '@/components/dynamic-form'; import { Modal } from '@/components/ui/modal/modal'; import { useCommonTranslation, useTranslate } from '@/hooks/common-hooks'; import { IModalProps } from '@/interfaces/common'; import { IAddLlmRequestBody } from '@/interfaces/request/llm'; import { FieldValues } from 'react-hook-form'; import { LLMHeader } from '../../components/llm-header'; type VolcEngineLlmRequest = IAddLlmRequestBody & { endpoint_id: string; ark_api_key: string; }; const VolcEngineModal = ({ visible, hideModal, onOk, loading, llmFactory, }: IModalProps & { llmFactory: string }) => { const { t } = useTranslate('setting'); const { t: tc } = useCommonTranslation(); const fields: FormFieldConfig[] = [ { name: 'model_type', label: t('modelType'), type: FormFieldType.Select, required: true, options: [ { label: 'chat', value: 'chat' }, { label: 'embedding', value: 'embedding' }, { label: 'image2text', value: 'image2text' }, ], defaultValue: 'chat', }, { name: 'llm_name', label: t('modelName'), type: FormFieldType.Text, required: true, placeholder: t('volcModelNameMessage'), }, { name: 'endpoint_id', label: t('addEndpointID'), type: FormFieldType.Text, required: true, placeholder: t('endpointIDMessage'), }, { name: 'ark_api_key', label: t('addArkApiKey'), type: FormFieldType.Text, required: true, placeholder: t('ArkApiKeyMessage'), }, { name: 'max_tokens', label: t('maxTokens'), type: FormFieldType.Number, required: true, placeholder: t('maxTokensTip'), validation: { min: 0, }, }, ]; const handleOk = async (values?: FieldValues) => { if (!values) return; const modelType = values.model_type === 'chat' && values.vision ? 'image2text' : values.model_type; const data: VolcEngineLlmRequest = { llm_factory: llmFactory, llm_name: values.llm_name as string, model_type: modelType, endpoint_id: values.endpoint_id as string, ark_api_key: values.ark_api_key as string, max_tokens: values.max_tokens as number, }; console.info(data); await onOk?.(data); }; return ( } open={visible || false} onOpenChange={(open) => !open && hideModal?.()} maskClosable={false} footer={
} > { console.log(data); }} defaultValues={ { model_type: 'chat', vision: false, } as FieldValues } labelClassName="font-normal" >
{t('ollamaLink', { name: llmFactory })}
{ hideModal?.(); }} /> { handleOk(values); }} />
); }; export default VolcEngineModal;