import FieldWrapper from '@/components/seal-form/field-wrapper'; import SealInput from '@/components/seal-form/seal-input'; import SealSelect from '@/components/seal-form/seal-select'; import { INPUT_WIDTH } from '@/constants'; import { InfoCircleOutlined } from '@ant-design/icons'; import { useIntl } from '@umijs/max'; import { Form, InputNumber, Slider, Tooltip } from 'antd'; import _ from 'lodash'; import { memo, useCallback, useEffect, useId, useMemo } from 'react'; import { ParamsSchema } from '../config/types'; import CustomLabelStyles from '../style/custom-label.less'; type ParamsSettingsFormProps = { top_n?: number; model?: string; }; type ParamsSettingsProps = { selectedModel?: string; showModelSelector?: boolean; params?: Record; model?: string; modelList: Global.BaseOption[]; onValuesChange?: (changeValues: any, value: Record) => void; setParams: (params: any) => void; globalParams?: Record; paramsConfig?: ParamsSchema[]; initialValues?: Record; }; const ParamsSettings: React.FC = ({ setParams, onValuesChange, selectedModel, globalParams, initialValues, paramsConfig, modelList, showModelSelector = true }) => { const intl = useIntl(); const [form] = Form.useForm(); const formId = useId(); useEffect(() => { if (showModelSelector) { form.setFieldsValue({ model: selectedModel || _.get(modelList, '[0].value'), ...initialValues }); setParams({ model: selectedModel || _.get(modelList, '[0].value'), ...initialValues }); } else { form.setFieldsValue({ model: selectedModel || '', ...initialValues }); setParams({ model: selectedModel || '', ...initialValues }); } }, [modelList, showModelSelector, selectedModel, initialValues]); const handleOnFinish = (values: any) => { console.log('handleOnFinish', values); }; const handleOnFinishFailed = (errorInfo: any) => { console.log('handleOnFinishFailed', errorInfo); }; const handleValuesChange = useCallback( (changedValues: any, allValues: any) => { setParams?.(allValues); onValuesChange?.(changedValues, allValues); }, [onValuesChange, setParams] ); const handleFieldValueChange = useCallback( (val: any, field: string) => { const values = form.getFieldsValue(); form.setFieldsValue({ ...values, [field]: val }); setParams({ ...values, [field]: val }); onValuesChange?.( { [field]: val }, { ...values, [field]: val } ); }, [form, setParams, onValuesChange] ); useEffect(() => { form.setFieldsValue(globalParams); }, [globalParams]); const renderLabel = useCallback( (args: { field: string; label: string; description: string }) => { return ( {args.description ? ( {args.label} ) : ( {args.label} )} handleFieldValueChange(val, args.field)} > ); }, [form, handleFieldValueChange] ); const renderFields = useMemo(() => { console.log('paramsConfig:', paramsConfig); if (!paramsConfig?.length) { return null; } return paramsConfig.map((item: ParamsSchema) => { if (item.type === 'InputNumber') { return ( ); } if (item.type === 'Select') { return ( ); } if (item.type === 'Slider') { return ( handleFieldValueChange(val, item.name)} > ); } return null; }); }, [paramsConfig]); return (
{ <>

{intl.formatMessage({ id: 'playground.parameters' })}

name="model" rules={[ { required: true, message: intl.formatMessage( { id: 'common.form.rule.select' }, { name: intl.formatMessage({ id: 'playground.model' }) } ) } ]} > } {renderFields}
); }; export default memo(ParamsSettings);