import React, { Dispatch, useState, useCallback, useMemo } from 'react'; import { Modal, ModalOverlay, ModalContent, ModalHeader, ModalFooter, ModalBody, ModalCloseButton, FormControl, FormErrorMessage, Button, useToast, Input, Select, Box } from '@chakra-ui/react'; import { useForm } from 'react-hook-form'; import { postCreateModel } from '@/api/model'; import type { ModelSchema } from '@/types/mongoSchema'; import { modelList } from '@/constants/model'; import { formatPrice } from '@/utils/user'; interface CreateFormType { name: string; serviceModelName: string; } const CreateModel = ({ setCreateModelOpen, onSuccess }: { setCreateModelOpen: Dispatch; onSuccess: Dispatch; }) => { const [requesting, setRequesting] = useState(false); const [refresh, setRefresh] = useState(false); const toast = useToast({ duration: 2000, position: 'top' }); const { getValues, register, handleSubmit, formState: { errors } } = useForm({ defaultValues: { serviceModelName: modelList[0].model } }); const handleCreateModel = useCallback( async (data: CreateFormType) => { setRequesting(true); try { const res = await postCreateModel(data); toast({ title: '创建成功', status: 'success' }); onSuccess(res); setCreateModelOpen(false); } catch (err: any) { toast({ title: typeof err === 'string' ? err : err.message || '出现了意外', status: 'error' }); } setRequesting(false); }, [onSuccess, setCreateModelOpen, toast] ); return ( <> setCreateModelOpen(false)}> 创建模型 {!!errors.name && errors.name.message} {!!errors.serviceModelName && errors.serviceModelName.message} {formatPrice( modelList.find((item) => item.model === getValues('serviceModelName'))?.price || 0, 1000 )} 元/1K tokens(包括上下文和标点符号) ); }; export default CreateModel;